Spaces:
Sleeping
Sleeping
File size: 1,627 Bytes
0f8617c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | const mongoose = require('mongoose');
const dynamicPriceSchema = new mongoose.Schema(
{
photographerId: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Photographer',
required: true,
unique: true,
},
basePrice: {
type: Number,
required: true,
},
pricingRules: {
weekendSurcharge: {
type: Number,
default: 25, // percentage
},
peakHoursSurcharge: {
type: Number,
default: 30, // percentage
},
peakHoursStart: {
type: String,
default: '17:00', // 5 PM
},
peakHoursEnd: {
type: String,
default: '20:00', // 8 PM
},
lastMinuteDiscount: {
type: Number,
default: 0, // percentage (can be positive for discount or negative for surcharge)
},
lastMinuteThreshold: {
type: Number,
default: 24, // hours before booking
},
groupDiscount: {
type: Number,
default: 10, // percentage for multiple hours
},
seasonalAdjustments: [
{
season: String, // "summer", "monsoon", "winter", "festival"
multiplier: Number, // price multiplier
},
],
},
suggestedPrice: {
type: Number,
default: null,
},
suggestionBasis: {
type: String,
enum: ['market_analysis', 'demand_trend', 'competitor_analysis'],
default: 'market_analysis',
},
lastUpdated: {
type: Date,
default: Date.now,
},
},
{ timestamps: true }
);
module.exports = mongoose.model('DynamicPrice', dynamicPriceSchema);
|