const mongoose = require('mongoose') const mongoosePaginate = require('mongoose-paginate-v2'); const StatusSchema = mongoose.Schema({ status: { type: String, enum: ['canceled', 'void', 'incomplete', 'processing', 'sent', 'delivered'], default: 'incomplete' }, user_id: {type: mongoose.ObjectId, ref: 'User'}, }) const OrderItemsSchema = mongoose.Schema({ product_id: {type: mongoose.ObjectId, ref: 'Food'}, name: String, quantity: Number, price: Number, point : Number, static_discount: {type: Number, default: 0}, havePoint: Boolean }) const OrderSchema = mongoose.Schema({ user_id: {type: mongoose.ObjectId, ref: 'User'}, branchId: {type: mongoose.ObjectId, ref: 'StoreInfo'}, rating: { rate: { type: Number, enum: [0, 1, 2, 3, 4, 5], default: 0 }, reasonForBad: Array }, description: String, orderType : {type : String , default : 'online'}, bag: {type: Boolean, default: false}, bagCost: {type: Number, default: 0}, score: {type: Boolean, default: false}, scoreCost: {type: Number, default: 0}, scorePoint: {type: Number, default: 0}, pricePoint: {type: Number, default: 0}, number: Number, address: {type: Object, default: {}}, statuses: [StatusSchema], createdOn: Date, payment: [{type: mongoose.ObjectId, ref: 'Payment' , default:[]}], paymentStatus: { type: String, enum: ['refund', 'unpaid', 'paid'], default: 'unpaid' }, status: { type: String, enum: ['canceled', 'void', 'incomplete', 'processing', 'sent', 'delivered'], default: 'incomplete' }, order_items: [OrderItemsSchema], discount_code: String, discount_amount: Number, discount_menuType: String, sum: Number, routePrice: Number, tax: Number, percent: Number, total: Number, payTotal: Number }) OrderSchema.plugin(mongoosePaginate); module.exports = mongoose.model('Order', OrderSchema)