api/resources/Affiliate&Coupon/Affiliate/AffiliateModel.js
2024-05-10 17:30:36 +05:30

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);