Files
gameno-api/components/payments/transactionModel.js
T

52 lines
1.1 KiB
JavaScript

// /components/payments/transactionModel.js
'use strict';
const mongoose = require('mongoose');
const uniqueCodePlugin = require('../../utils/mongooseUniqueCodePlugin');
const transactionSchema = new mongoose.Schema({
payment: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Payment',
required: true,
index: true
},
user: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
index: true
},
amount: {
type: Number,
required: true,
min: 0
},
method: {
type: String,
enum: ['online', 'card', 'cash']
},
receiptNumber: { type: String, trim: true },
notes: { type: String, trim: true, maxlength: 5000 },
recordedBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
date: { type: Date },
dueDate: {
type: Date,
required: true,
index: true
},
status: {
type: String,
enum: ['pending', 'paid', 'cancelled'],
default: 'pending',
index: true
}
}, {
timestamps: true
});
transactionSchema.plugin(uniqueCodePlugin);
transactionSchema.index({ payment: 1, dueDate: 1 });
module.exports = mongoose.model('Transaction', transactionSchema);