2024-12-15 17:53:45 +03:00
|
|
|
const { Schema, model } = require('mongoose')
|
2025-01-18 23:02:45 +03:00
|
|
|
const { orderStatus } = require('./const')
|
2025-02-02 14:51:55 +03:00
|
|
|
const { OrderNumberModel } = require('./order.number')
|
2024-12-15 17:53:45 +03:00
|
|
|
|
|
|
|
const schema = new Schema({
|
2025-01-18 23:02:45 +03:00
|
|
|
phone: {
|
|
|
|
type: String,
|
|
|
|
required: true
|
|
|
|
},
|
|
|
|
carNumber: {
|
|
|
|
type: String,
|
|
|
|
required: true
|
|
|
|
},
|
|
|
|
carBody: {
|
|
|
|
type: Number,
|
|
|
|
required: true
|
|
|
|
},
|
|
|
|
carColor: String,
|
|
|
|
startWashTime: {
|
|
|
|
type: Date,
|
|
|
|
required: true
|
|
|
|
},
|
|
|
|
endWashTime: {
|
|
|
|
type: Date,
|
|
|
|
required: true
|
|
|
|
},
|
|
|
|
location: {
|
|
|
|
type: String,
|
|
|
|
required: true
|
|
|
|
},
|
2025-01-26 16:29:27 +03:00
|
|
|
orderNumber: {
|
2025-02-02 14:55:55 +03:00
|
|
|
type: String,
|
|
|
|
unique: true
|
2025-01-26 16:29:27 +03:00
|
|
|
},
|
2025-01-18 23:02:45 +03:00
|
|
|
status: {
|
|
|
|
type: String,
|
|
|
|
required: true,
|
|
|
|
enum: Object.values(orderStatus)
|
|
|
|
},
|
|
|
|
master: {
|
|
|
|
type: Schema.Types.ObjectId,
|
|
|
|
ref: 'dry-wash-master'
|
|
|
|
},
|
|
|
|
notes: String,
|
2024-12-15 17:53:45 +03:00
|
|
|
created: {
|
2025-01-18 23:02:45 +03:00
|
|
|
type: Date,
|
|
|
|
default: () => new Date().toISOString(),
|
2024-12-15 17:53:45 +03:00
|
|
|
},
|
|
|
|
updated: {
|
2025-01-18 23:02:45 +03:00
|
|
|
type: Date,
|
|
|
|
default: () => new Date().toISOString(),
|
2024-12-15 17:53:45 +03:00
|
|
|
},
|
|
|
|
})
|
|
|
|
|
2025-02-02 14:51:55 +03:00
|
|
|
schema.pre('save', async function (next) {
|
|
|
|
if (this.isNew) {
|
|
|
|
const counter = await OrderNumberModel.findOneAndUpdate(
|
|
|
|
{ _id: 'orderNumber' },
|
|
|
|
{ $inc: { sequenceValue: 1 } },
|
|
|
|
{ new: true, upsert: true }
|
|
|
|
)
|
|
|
|
this.orderNumber = counter.sequenceValue.toString()
|
|
|
|
}
|
|
|
|
next()
|
|
|
|
})
|
|
|
|
|
2024-12-15 17:53:45 +03:00
|
|
|
schema.set('toJSON', {
|
|
|
|
virtuals: true,
|
|
|
|
versionKey: false,
|
2025-01-18 23:02:45 +03:00
|
|
|
transform(_doc, ret) {
|
|
|
|
delete ret._id
|
|
|
|
}
|
2024-12-15 17:53:45 +03:00
|
|
|
})
|
|
|
|
|
|
|
|
schema.virtual('id').get(function () {
|
|
|
|
return this._id.toHexString()
|
|
|
|
})
|
|
|
|
|
|
|
|
exports.OrderModel = model('dry-wash-order', schema)
|