lml-main
Version:
This is now a mono repository published into many standalone packages.
56 lines • 2.67 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const lodash_1 = require("lodash");
const ts_utils_1 = require("@lml/ts-utils");
const stop_1 = require("./stop");
exports.jobIsActive = (state, refId) => state.jobs.flags.active === refId;
exports.jobIsExpanded = (state, refId) => state.jobs.flags.allExpanded || state.jobs.flags.expanded[refId] === true;
exports.jobIsShowingDirections = (state, refId) => state.jobs.flags.showingDirections === refId;
exports.jobIsAllocated = (job) => job && job.currentAllocation && job.currentAllocation.courier ? true : false;
exports.getCollectionStop = (job) => {
if (!Array.isArray(job.stops)) {
console.warn('Job does not have a valid stop', job);
return null;
}
return job.stops.filter(s => s.type === 'collection')[0];
};
exports.getDeliveryStop = (job) => {
if (!Array.isArray(job.stops)) {
console.warn('Job does not have a valid stop', job);
return null;
}
return job.stops.filter(s => s.type === 'delivery')[0];
};
exports.getCollectionWindow = (jobs) => {
const stop = exports.getCollectionStop(jobs);
return stop ? stop_1.getStopWindow(stop) : null;
};
exports.getDeliveryWindow = (jobs) => {
const stop = exports.getCollectionStop(jobs);
return stop ? stop_1.getStopWindow(stop) : null;
};
exports.isRejected = (job) => job.lastAction === 'REJECTED';
exports.isAccepted = (job) => job.lastAction === 'ACCEPTED';
exports.isAcknowledged = (job) => job.lastAction === 'ACK';
exports.isNotAcknowledged = (job) => job.lastAction === 'NACK';
exports.getItems = (job) => job.metadata && Number.isInteger(job.metadata.items) ? job.metadata.items : 0;
exports.timeToPickup = (job) => mkTimeDiffInMinutes(job.pickupBy);
exports.timeToComplete = (job) => mkTimeDiffInMinutes(job.completeBy);
const mkTimeDiffInMinutes = (date) => {
if (typeof date === 'string') {
return Math.floor(ts_utils_1.diffNow(date) / 60000);
}
return 0;
};
exports.isJobCurrentlyProcessed = (jobStatus) => !(jobStatus.status === 'live' || jobStatus.status === 'completed');
exports.getCollectionPostcode = (job) => {
const stop = exports.getCollectionStop(job);
return lodash_1.get(stop, 'location.address.postcode', 'Unknown');
};
exports.getDeliveryPostcode = (job) => {
const stop = exports.getDeliveryStop(job);
return lodash_1.get(stop, 'location.address.postcode', 'Unknown');
};
exports.jobTypeIsReturnToDepot = (job) => lodash_1.get(job, 'metadata.jobType') === 'return_to_depot';
exports.jobTypeIsCustomerReturn = (job) => lodash_1.get(job, 'metadata.jobType') === 'return';
//# sourceMappingURL=job.js.map