const mongoose = require("mongoose"); const Schema = mongoose.Schema; const ObjectId = Schema.Types.ObjectId; const code = Math.floor(100000 + Math.random() * 900000); const { User,Counter, generateBookingId,resetCounter,generateCustomerId,ProfilePicture} = require('../models/User') const generateSupplierId = async () => { var result = await Counter.findOneAndUpdate( { _id: 'supplier_id' }, { $inc: { seq: 1 } }, { upsert: true, new: true } ); return result.seq; }; const supplierSchema = new mongoose.Schema( { suppliername: { type: String }, phone: { type: String, unique: true, trim: true }, supplierId: {type : String, default: null}, phoneVerified: { type: Boolean, default: false }, phoneVerificationCode: { type: Number, default: 11111 }, passwordResetCode: { type: Number, default: code }, oneTimePasswordSetFlag: { type: Boolean, default: false }, emails: [{ email: String, verified: { type: Boolean, default: false } }], services: { password: { bcrypt: String } }, profile: { role: [{ type: String, default: "supplier" }], firstName: { type: String, default: null }, lastName: { type: String, default: null }, contactNumber: { type: String, default: null }, alternativeContactNumber : { type: String, default: null }, office_address: { type: String, default: null }, city: { type: String, default: null }, state: { type: String, default: null }, country: { type: String, default: null }, zip: { type: String, default: null }, }, status: { type: String, enum: ['accept', 'pending', 'reject'], default: 'pending' }, currentGPS: { // It's important to define type within type field, because // mongoose use "type" to identify field's object type. gpsType: { type: String, default: "Point" }, // Default value is needed. Mongoose pass an empty array to // array type by default, but it will fail MongoDB's pre-save // validation. coordinates: { type: [Number], default: [0, 0] }, }, isActive: Boolean, tenantId: ObjectId, createdAt: { type: Date, default: function () { return Date.now(); }, }, createdBy: ObjectId, updatedAt: { type: Date, default: function () { return Date.now(); }, }, updatedBy: ObjectId, }, { versionKey: false } ); // const deliveryAgent = new mongoose.Schema({ // deliveryboyId : { type: String, default: null }, // deliveryboyname : { type: String }, // vechilenumber : { type: String, default: null }, // bookingid : { type: String, default: null }, // status: { // type: String, // enum: ['complete', 'pending'], // default: 'pending' // }, // }) const friendRequestSchema = new mongoose.Schema({ customerId: { type: String, default: null }, supplierId: { type: String, default: null }, status: { type: String, default: "pending" }, timestamp: { type: Date, default: Date.now } }); const deliveryBoySchema = new mongoose.Schema({ supplierId:{ type: String, default: null }, name: { type: String, default: null }, phone: { type: String, default: null,unique:true }, alternativeContactNumber : { type : String,default: null }, address: { type: String, default: null }, city: { type: String, default: null }, state: { type: String, default: null }, zip: { type: String, default: null }, timestamp: { type: Date, default: Date.now }, status: { type: String, default: "Inactive" }, }); const Supplier = mongoose.model("Supplier", supplierSchema); //const DeliveryAgent = mongoose.model("DeliveryAgent", deliveryAgent); const FriendRequest = mongoose.model('FriendRequest', friendRequestSchema); const DeliveryBoy = mongoose.model('DeliveryBoy', deliveryBoySchema); module.exports = { Supplier, generateSupplierId, FriendRequest,DeliveryBoy}