123 lines
2.8 KiB
JavaScript
123 lines
2.8 KiB
JavaScript
import mongoose from "mongoose";
|
|
const { Schema, model } = mongoose;
|
|
|
|
const couponUsedSchema = new Schema({
|
|
userId: { type: mongoose.Schema.ObjectId, ref: "User", required: true },
|
|
orderId: { type: String, required: true },
|
|
couponCode: { type: String, required: true },
|
|
date: { type: String, required: true },
|
|
});
|
|
const affilitePaySchema = new Schema({
|
|
amount: { type: Number, required: true },
|
|
transecId: { type: String, required: true },
|
|
date: { type: String, required: true },
|
|
time: { type: String, required: true },
|
|
});
|
|
const affiliateSchema = new Schema(
|
|
{
|
|
name: {
|
|
type: String,
|
|
maxLength: [25, "name cannot exceed 25 characters"],
|
|
required: [true, "Please Enter Name"],
|
|
},
|
|
mobile: {
|
|
type: Number,
|
|
maxLength: [10, "Mobile cannot exceed 10 characters"],
|
|
minlength: [10, "Invalid Mobile Number"],
|
|
required: [true, "Please Enter Mobile Number"],
|
|
unique: true,
|
|
},
|
|
email: {
|
|
type: String,
|
|
required: [true, "Please Enter Email"],
|
|
unique: true,
|
|
},
|
|
country: {
|
|
type: String,
|
|
required: [true, "Please Enter Country"],
|
|
},
|
|
state: {
|
|
type: String,
|
|
},
|
|
city: {
|
|
type: String,
|
|
},
|
|
address: {
|
|
type: String,
|
|
required: [true, "Please Enter Address"],
|
|
},
|
|
pincode: {
|
|
type: Number,
|
|
required: [true, "Please Enter Pincode"],
|
|
},
|
|
nameAsBank: {
|
|
type: String,
|
|
required: [true, "Please Enter Name as Bank"],
|
|
},
|
|
accountNo: {
|
|
type: Number,
|
|
required: [true, "Please Enter Account Number"],
|
|
unique: true,
|
|
},
|
|
ifsc: {
|
|
type: String,
|
|
required: [true, "Please Enter IFSC code"],
|
|
},
|
|
bankName: {
|
|
type: String,
|
|
required: [true, "Please Enter Bank Name"],
|
|
},
|
|
branchName: {
|
|
type: String,
|
|
required: [true, "Please Enter Branch Name"],
|
|
},
|
|
coupon_code: {
|
|
type: String,
|
|
unique: [true, "Coupon Alerady Exists"],
|
|
sparse: true,
|
|
},
|
|
discount_amount: {
|
|
type: Number,
|
|
},
|
|
affiliate_discount_amount: {
|
|
type: Number,
|
|
},
|
|
valid_till: {
|
|
type: String,
|
|
},
|
|
createdAt: {
|
|
type: String,
|
|
},
|
|
|
|
coupon_claimed: {
|
|
type: Number,
|
|
default: 0,
|
|
},
|
|
total_earning: {
|
|
type: Number,
|
|
default: 0,
|
|
},
|
|
paid_amount: {
|
|
type: Number,
|
|
default: 0,
|
|
},
|
|
no_of_paid_coupon: {
|
|
type: Number,
|
|
default: 0,
|
|
},
|
|
is_affiliate_active: {
|
|
type: Boolean,
|
|
default: true,
|
|
},
|
|
is_coupon_active: {
|
|
type: Boolean,
|
|
default: false,
|
|
},
|
|
coupon_used_history: [couponUsedSchema],
|
|
affiliate_pay_history: [affilitePaySchema],
|
|
},
|
|
{ timestamps: true }
|
|
);
|
|
|
|
export const AffiliateModel = model("Affiliate", affiliateSchema);
|