api/resources/Orders/orderModel.js
2023-11-27 16:03:41 +05:30

111 lines
2.4 KiB
JavaScript

import mongoose from "mongoose";
const orderSchema = new mongoose.Schema(
{
orderID: {
type: String,
required: true,
unique: true,
},
user: {
type: mongoose.Schema.ObjectId,
ref: "User",
required: true,
},
shippingInfo: {
type: mongoose.Schema.ObjectId,
ref: "ShippingAddress",
required: true,
},
orderItems: [
{
name: {
type: String,
default: "",
},
price: {
type: Number,
default: "",
},
quantity: {
type: Number,
default: "",
default: 1,
},
image: [{}],
price_With_Tax: {
type: Number,
default: "",
},
taxId: {
type: String,
default: "",
},
product: {
type: mongoose.Schema.ObjectId,
ref: "Product",
},
},
],
shipping_charge: { type: Number, default: 0 },
tax_amount: { type: Number, default: 0 },
total_amount: { type: Number, default: 0 },
weight: { type: Number, default: 0 },
paymentMode: {
type: String,
enum: ["online", "cod"],
default: "online",
},
payment_status: {
type: String,
enum: ["pending", "success", "failed"],
},
isPaid: {
type: Boolean,
default: false,
},
paidAt: {
type: Date,
},
orderStatus: {
type: String,
enum: [
"new",
"processing",
"dispatched",
"delivered",
"cancelled",
"returned",
],
// default: "new",
},
paypal_payer_id: { type: String },
paypal_payment_id: { type: String },
// paypal_signature: { type: String },
// order_used: { type: Boolean, default: false },
// isDelivered: { type: Boolean,required:true,default:false },
// deliveredAt: { type: Date },
status_timeline: {
new: { type: Date },
processing: { type: Date },
dispatched: { type: Date },
delivered: { type: Date },
cancelled: { type: Date },
returned: { type: Date },
},
// courier_name: { type: String },
// tracking_id: { type: String },
},
{ timestamps: true }
);
export const Order = mongoose.model("Order", orderSchema);