Snaplocal / server /src /models /DynamicPrice.js
Kuruva Laxmi
SnapLocal MVP - Complete platform with 4 MVP features
0f8617c
Raw
History Blame Contribute Delete
1.63 kB
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);