const mongoose = require('mongoose');

const discountSchema = new mongoose.Schema(
    {
        code: {
            type: String,
            required: true,
            unique: true,
            uppercase: true,
            trim: true,
        },
        type: {
            type: String,
            enum: ['percentage', 'fixed_amount'],
            required: true,
        },
        value: {
            type: Number,
            required: true,
            min: 0,
        },
        minOrderValue: {
            type: Number,
            default: 0,
        },
        maxDiscountValue: {
            type: Number,
            default: null, // null = không giới hạn
        },
        startDate: {
            type: Date,
            default: Date.now,
        },
        endDate: {
            type: Date,
            required: true,
        },
        usageLimit: {
            type: Number,
            default: null, // null = không giới hạn
        },
        usedCount: {
            type: Number,
            default: 0,
        },
        userLimit: {
            type: Number,
            default: 1, // Mỗi user dùng được 1 lần
        },
        usedByUsers: [
            {
                type: mongoose.Schema.Types.ObjectId,
                ref: 'user',
            },
        ],
        isActive: {
            type: Boolean,
            default: true,
        },
    },
    { timestamps: true },
);

module.exports = mongoose.model('Discount', discountSchema);
