@fleetbase/fleetops-engine
Version:
Fleet & Transport Management Extension for Fleetbase
53 lines (40 loc) • 1.82 kB
JavaScript
import Service, { inject as service } from '@ember/service';
import isNotEmpty from '@fleetbase/ember-core/utils/is-not-empty';
export default class OrderValidationService extends Service {
orderCreation;
get isValid() {
const order = this.orderCreation?.context?.order;
const cfManager = this.orderCreation?.context?.cfManager;
return this.validate(order, cfManager);
}
get isNotValid() {
return !this.isValid;
}
validate(order, cfManager = null) {
if (!order) return false;
cfManager = cfManager ?? order?.cfManager ?? this.orderCreation.getContext('cfManager');
const hasOrderConfig = isNotEmpty(order.order_config_uuid);
const hasOrderType = isNotEmpty(order.type);
const hasWaypoints = order.payload.waypoints.length >= 2;
const hasPickup = isNotEmpty(order.payload.pickup);
const hasDropoff = isNotEmpty(order.payload.dropoff);
const hasValidCustomFields = cfManager ? this.isCustomFieldsValid(cfManager) : true;
const hasValidExtensionRules = this.orderCreation.validateOrderRules(order, cfManager);
if (hasWaypoints) {
return hasOrderConfig && hasOrderType && hasValidCustomFields && hasValidExtensionRules;
}
return hasPickup && hasDropoff && hasOrderConfig && hasOrderType && hasValidCustomFields && hasValidExtensionRules;
}
validationFails(order, cfManager) {
return !this.validate(order, cfManager);
}
validateCustomFields(cfManager) {
if (!cfManager) return true;
return cfManager.validateRequired();
}
isCustomFieldsValid(cfManager) {
if (!cfManager) return true;
const { isValid } = this.validateCustomFields(cfManager);
return isValid;
}
}