| Current Path : /home/deltalab/PMS/ims-connector/models/mongoose/ |
| Current File : //home/deltalab/PMS/ims-connector/models/mongoose/pickup.js |
/**
* Pickup types
*/
const mongoose = require('mongoose');
const { AddressSchema } = require('./address');
const { ParcelBaseSchema } = require('./parcel');
// CONSTANTS ==============================================
const PICKUP_MORNING_MIN_TIME = '07:00';
const PICKUP_MORNING_MAX_TIME = '12:00';
const PICKUP_AFTERNOON_MIN_TIME = '13:00';
const PICKUP_AFTERNOON_MAX_TIME = '18:00';
// SCHEMA =================================================
const BookPickupConfirmationSchema = new mongoose.Schema(
{
result: String,
error: String,
message: String,
confirmationId: String,
},
{
_id: false,
},
);
const BookPickupSchema = new mongoose.Schema(
{
from: AddressSchema,
to: AddressSchema,
parcels: [ParcelBaseSchema],
carrierId: Number,
pickupTime: Date,
pickupNote: String,
// format of times: HH:mm
pickupMorningMinTime: String,
pickupMorningMaxTime: String,
pickupAfternoonMinTime: String,
pickupAfternoonMaxTime: String,
orderIds: String,
},
{
_id: false,
},
);
// FUNCTIONS ==============================================
/**
* Set pickup times for the given pickup request to the day after today (tomorrow).
* The morning and afternoon pickup times are the globally set ones.
*/
function setTomorrowPickup(pickupRequest) {
const pickupDate = new Date(); // Today
pickupDate.setDate(pickupDate.getDate() + 1); // Tomorrow
pickupRequest.pickupTime = Math.round(pickupDate);
// TODO: these timings depend on the warehouse's
pickupRequest.pickupMorningMinTime = PICKUP_MORNING_MIN_TIME;
pickupRequest.pickupMorningMaxTime = PICKUP_MORNING_MAX_TIME;
pickupRequest.pickupAfternoonMinTime = PICKUP_AFTERNOON_MIN_TIME;
pickupRequest.pickupAfternoonMaxTime = PICKUP_AFTERNOON_MAX_TIME;
return pickupRequest;
}
// MODELS =================================================
const bookPickupModel = mongoose.model('BookPickup', BookPickupSchema);
const bookPickupConfirmationModel = mongoose.model('BookPickupConfirmation', BookPickupConfirmationSchema);
// EXPORTS ================================================
module.exports = {
// Functions --------------
setTomorrowPickup,
// Models -----------------
bookPickupConfirmationModel,
bookPickupModel,
};