Your IP : 216.73.216.43


Current Path : /home/deltalab/PMS/buy-button-generator/models/mongoose/
Upload File :
Current File : //home/deltalab/PMS/buy-button-generator/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,
}