aboutsummaryrefslogtreecommitdiffstats
path: root/backend/src/models/Order.js
diff options
context:
space:
mode:
Diffstat (limited to 'backend/src/models/Order.js')
-rw-r--r--backend/src/models/Order.js60
1 files changed, 60 insertions, 0 deletions
diff --git a/backend/src/models/Order.js b/backend/src/models/Order.js
new file mode 100644
index 0000000..c60f986
--- /dev/null
+++ b/backend/src/models/Order.js
@@ -0,0 +1,60 @@
+const mongoose = require('mongoose');
+
+const orderSchema = new mongoose.Schema(
+ {
+ user: {
+ type: mongoose.Schema.Types.ObjectId,
+ ref: 'User',
+ required: [true, 'User is required']
+ },
+ items: [
+ {
+ type: mongoose.Schema.Types.ObjectId,
+ ref: 'OrderItem'
+ }
+ ],
+ table: {
+ type: mongoose.Schema.Types.ObjectId,
+ ref: 'Table'
+ },
+ status: {
+ type: String,
+ enum: ['pending', 'preparing', 'ready', 'served', 'completed', 'cancelled'],
+ default: 'pending'
+ },
+ totalAmount: {
+ type: Number,
+ required: [true, 'Total amount is required'],
+ min: 0
+ },
+ paymentStatus: {
+ type: String,
+ enum: ['pending', 'completed', 'failed', 'refunded'],
+ default: 'pending'
+ },
+ paymentMethod: {
+ type: String,
+ enum: ['cash', 'card', 'mobile'],
+ default: 'cash'
+ },
+ specialInstructions: {
+ type: String,
+ trim: true
+ },
+ isDelivery: {
+ type: Boolean,
+ default: false
+ },
+ deliveryAddress: {
+ type: String,
+ trim: true
+ }
+ },
+ {
+ timestamps: true
+ }
+);
+
+const Order = mongoose.model('Order', orderSchema);
+
+module.exports = Order; \ No newline at end of file