nammaniru_common_service
Version:
The service will contain all the functionality which is common for both shop and customer
106 lines (99 loc) • 3.79 kB
text/typescript
import mongoose, { Schema } from "mongoose";
import { DeliveryPersonType } from "../../types/DeliveryPersonType/DeliveryPersonType";
const DeliveryPersonSchema = new Schema(
{
ShopID:
{
type: String,
required: true,
},
DeliveryPersonID:
{
type: String,
required: true,
unique: true
},
AssignedOrderID:
{
type: String,
},
AssignedItemOrderID:
{
type: String,
required: false
},
AvailableForDelivery:
{
type: Boolean,
required: true
}
}
);
DeliveryPersonSchema.statics.fetchByShopIDAndDeliveryPersonID = async function (shopID: String, deliveryPersonID: String): Promise<DeliveryPersonType | null> {
let deliveryPerson: DeliveryPersonType | null = null;
console.log("shopID received inside DeliveryPersonSchema:", shopID);
console.log("deliveryPersonID received inside DeliveryPersonSchema:", deliveryPersonID);
try {
deliveryPerson = await this.findOne(
{
ShopID: shopID,
DeliveryPersonID: deliveryPersonID
}
);
}
catch (e) {
console.log("Error fetching record from DeliveryPersonSchema:", e);
}
console.log("returning deliveryPerson fetched from the record:", deliveryPerson);
return deliveryPerson;
}
DeliveryPersonSchema.statics.fetchByShopID = async function (shopID: String): Promise<DeliveryPersonType[] | null> {
let deliveryPersonList: DeliveryPersonType[] | null = null;
console.log("shopID received inside fetchByShopID:", shopID);
try {
deliveryPersonList = this.find({ ShopID: shopID });
}
catch (e) {
console.log("Error fetching delivery person list:", e);
}
console.log("deliveryPersonList:", deliveryPersonList);
return deliveryPersonList;
}
//this function is to fetch the details of delivery person currently assigned to the given OrderID and ItemOrderID
DeliveryPersonSchema.statics.fetchByOrderIDAndItemOrderID = async function (orderID: String, itemOrderID: String): Promise<DeliveryPersonType | null> {
let deliveryPerson: DeliveryPersonType | null = null;
console.log("orderID received inside DeliveryPersonSchema:", orderID);
console.log("itemOrderID received inside DeliveryPersonSchema:", itemOrderID);
try {
deliveryPerson = await this.findOne(
{
// ShopID: shopID,
AssignedOrderID: orderID,
AssignedItemOrderID: itemOrderID
}
);
}
catch (e) {
console.log("Error fetching record from DeliveryPersonSchema:", e);
}
console.log("returning deliveryPerson fetched from the record:", deliveryPerson);
return deliveryPerson;
}
DeliveryPersonSchema.statics.fetchByDeliveryPersonID = async function (deliveryPersonID: String): Promise<DeliveryPersonType | null> {
let deliveryPerson: DeliveryPersonType | null = null;
console.log("inside fetchByDeliveryPersonID method");
console.log("deliveryPersonID received inside DeliveryPersonSchema:", deliveryPersonID);
try {
deliveryPerson = await this.findOne(
{
DeliveryPersonID: deliveryPersonID
}
);
}
catch (e) {
console.log("Error fetching record from DeliveryPersonSchema:", e);
}
console.log("returning deliveryPerson fetched from the record:", deliveryPerson);
return deliveryPerson;
}
module.exports = mongoose.model("DeliveryPersonSchema", DeliveryPersonSchema)