Files
modstagram-back/models/OfferModel.js
2026-09-24 21:00:07 +03:30

67 lines
1.9 KiB
JavaScript

const mongoose = require('mongoose')
const mongoosePaginate = require('mongoose-paginate-v2')
const timestamp = require('mongoose-timestamp')
const offerSchema = new mongoose.Schema({
sender: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
required: true
},
receiver: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
required: true
},
status: {
type: String,
enum: ['pending', 'accepted', 'rejected'], // وضعیت درخواست
default: 'pending'
},
transaction_id: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Payment',
default: null
},
// مبلغی که فرستنده با تیکِ «استفاده از کیف پول» از سبدِ charged پرداخت کرده (نگاه کن
// به utils/walletSplit.js) — بقیه‌ی مبلغ (اگه مونده باشه) از درگاه گرفته شده
walletAmountUsed: {
type: Number,
default: 0
},
// سهم ۳۰٪ گیرنده که فقط با پاسخ‌گویی ظرف ۱۲ ساعت به اولین پیام دایرکت واریز می‌شود —
pendingCommissionAmount: {
type: Number,
default: 0
},
firstMessageAt: {
type: Date,
default: null
},
replyDeadline: {
type: Date,
default: null
},
repliedAt: {
type: Date,
default: null
},
commissionCredited: {
type: Boolean,
default: false
},
// وقتی گیرنده ظرف مهلت مقرر به اولین پیام دایرکت پاسخ نداد، سهم ۳۰٪ به‌جای گیرنده
// به کیف پول فرستنده (کسی که پرداخت کرده) برمی‌گردد — این فلگ از بازگشتِ دوباره
// در اجراهای بعدیِ cron جلوگیری می‌کند
commissionRefunded: {
type: Boolean,
default: false
}
})
offerSchema.plugin(timestamp)
offerSchema.plugin(mongoosePaginate)
const OfferModel = mongoose.model('Offer', offerSchema)
module.exports = OfferModel