File size: 1,335 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
const mongoose = require('mongoose');

const loyaltyPointsSchema = new mongoose.Schema(
  {
    userId: {
      type: mongoose.Schema.Types.ObjectId,
      ref: 'User',
      required: true,
      unique: true,
    },
    totalPoints: {
      type: Number,
      default: 0,
    },
    tier: {
      type: String,
      enum: ['bronze', 'silver', 'gold', 'platinum'],
      default: 'bronze',
    },
    pointsHistory: [
      {
        action: String, // e.g., "booking_completed", "review_submitted", "referral"
        points: Number,
        description: String,
        bookingId: mongoose.Schema.Types.ObjectId,
        timestamp: {
          type: Date,
          default: Date.now,
        },
      },
    ],
    redeemedRewards: [
      {
        rewardId: String,
        pointsUsed: Number,
        redeemedAt: {
          type: Date,
          default: Date.now,
        },
      },
    ],
    tierBenefits: {
      discountPercentage: {
        type: Number,
        default: 0,
      },
      prioritySupport: {
        type: Boolean,
        default: false,
      },
      freeRevisions: {
        type: Number,
        default: 0,
      },
    },
    lastUpdated: {
      type: Date,
      default: Date.now,
    },
  },
  { timestamps: true }
);

module.exports = mongoose.model('LoyaltyPoints', loyaltyPointsSchema);