72 lines
1.9 KiB
JavaScript
72 lines
1.9 KiB
JavaScript
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)
|