| Current Path : /home/deltalab/PMS/logistic-backend/src/models/orders/ |
| Current File : //home/deltalab/PMS/logistic-backend/src/models/orders/order.schema.ts |
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document } from 'mongoose';
import { Coordinates } from '../shared/coordinates.schema';
import * as mongoose from 'mongoose';
import { PickupPoint } from '../pickup-points/pickup-point.schema';
export type OrderDocument = Order & Document;
enum OrderStatus {
CONFIRMED = 'confirmed',
SHIPPED = 'shipped',
CLOSED = 'closed',
CANCELED = 'canceled',
}
class Customer extends Document {
@Prop()
firstName: string;
@Prop()
lastName: string;
@Prop()
phoneNumber: string;
}
class ParcelData extends Document {
@Prop()
kilograms: number;
@Prop()
cubicMeters: number;
@Prop()
nPackages: number;
}
@Schema({ timestamps: true, versionKey: false })
export class Order {
@Prop()
_id: number;
@Prop({ type: Customer })
customer: Customer;
@Prop({ required: true })
address: string;
@Prop({ type: Coordinates })
coordinates: Coordinates;
@Prop({ type: ParcelData })
parcelData: ParcelData;
@Prop({ type: mongoose.Schema.Types.ObjectId, ref: 'PickupPoint' })
pickupPoint: PickupPoint;
@Prop({
type: String,
enum: Object.values(OrderStatus),
default: OrderStatus.CONFIRMED,
})
status: OrderStatus;
@Prop({ type: String })
deliveryException: string;
@Prop({ type: String })
pickupException: string;
}
export const OrderSchema = SchemaFactory.createForClass(Order);