Your IP : 216.73.216.43


Current Path : /home/deltalab/PMS/partner-manager-backend/models/mongoose/
Upload File :
Current File : //home/deltalab/PMS/partner-manager-backend/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,
};