Spaces:
Sleeping
Sleeping
| const mongoose = require('mongoose'); | |
| const dealSchema = new mongoose.Schema( | |
| { | |
| photographerId: { | |
| type: mongoose.Schema.Types.ObjectId, | |
| ref: 'Photographer', | |
| required: true, | |
| }, | |
| dealType: { | |
| type: String, | |
| enum: ['last_minute', 'seasonal', 'promotional'], | |
| default: 'last_minute', | |
| }, | |
| title: { | |
| type: String, | |
| required: true, | |
| }, | |
| description: { | |
| type: String, | |
| default: '', | |
| }, | |
| discountPercentage: { | |
| type: Number, | |
| required: true, | |
| min: 1, | |
| max: 100, | |
| }, | |
| originalPrice: { | |
| type: Number, | |
| required: true, | |
| }, | |
| discountedPrice: { | |
| type: Number, | |
| required: true, | |
| }, | |
| validFrom: { | |
| type: Date, | |
| default: Date.now, | |
| }, | |
| validUntil: { | |
| type: Date, | |
| required: true, | |
| }, | |
| maxUses: { | |
| type: Number, | |
| default: null, // unlimited if null | |
| }, | |
| usedCount: { | |
| type: Number, | |
| default: 0, | |
| }, | |
| isActive: { | |
| type: Boolean, | |
| default: false, | |
| }, | |
| applicablePackages: [ | |
| { | |
| type: mongoose.Schema.Types.ObjectId, | |
| ref: 'Package', | |
| }, | |
| ], | |
| applicableServices: [String], // ["wedding", "portrait"] | |
| bookingsUsed: [ | |
| { | |
| type: mongoose.Schema.Types.ObjectId, | |
| ref: 'Booking', | |
| }, | |
| ], | |
| }, | |
| { timestamps: true } | |
| ); | |
| module.exports = mongoose.model('Deal', dealSchema); | |