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