"use strict"; (function () { 'use strict'; angular.module('myitsmApp') .service('expressionEventManager', ['objectValueMapperService', 'expressionEvaluatorService', 'widgetDependencyHandlerService', '$log', '$timeout', function (objectValueMapperService, expressionEvaluatorService, widgetDependencyHandlerService, $log, $timeout) { function _evaluateFieldExpression(expObj, source) { if (!objectValueMapperService.isCopyChange()) { $log.topic('expressions', 'Applying expression ' + expObj.expression + ' to field "' + expObj.field + '", property "' + expObj.property + '"'); var value = expressionEvaluatorService.evaluate(expObj.expression); objectValueMapperService.setByProperty(expObj.field, expObj.property, value, expObj.isWidget, source); } } function _evaluateProviderActionExpression(fieldName, expObj) { if (!objectValueMapperService.isCopyChange()) { $log.topic('expressions', 'Applying Provider action "' + expObj.action.actionName + '" with expression "' + expObj.expression + '"'); var value = expressionEvaluatorService.evaluate(expObj.expression); if (value) { objectValueMapperService.setProviderActionToExecute(expObj); } else { objectValueMapperService.clearProviderActionFromList(expObj.action); objectValueMapperService.clearProviderActionFieldName(fieldName, expObj.actionId); } } } function handleFieldChange(fieldName, source) { $log.topic('expressions', 'Widget change "' + fieldName + '"'); var expressions = objectValueMapperService.getExpreesionMapByFieldName(fieldName); if (expressions && expressions.length) { _.each(expressions, function (expObj) { _evaluateFieldExpression(expObj, source); }); } if (fieldName === 'company') { widgetDependencyHandlerService.handleValueChange('company'); } } function handleFieldChangeForActions(fieldName) { $log.topic('provider action expressions', 'Widget change "' + fieldName + '"'); var providerActionExpressions = _.sortBy(objectValueMapperService.getProviderActionExpressionMapByFieldName(fieldName), function (paExpObj) { return paExpObj.action && paExpObj.action.sequenceNo; }); if (providerActionExpressions && providerActionExpressions.length) { _.each(providerActionExpressions, function (providerActionExpObj) { $timeout(function () { if (providerActionExpObj.action) { providerActionExpObj.action.actionFieldName = fieldName; providerActionExpObj.action.actionId = providerActionExpObj.actionId; } objectValueMapperService.setProviderActionFieldName(fieldName, providerActionExpObj.actionId); _evaluateProviderActionExpression(fieldName, providerActionExpObj); }); }); } } function handleTicketLoad() { var fields = objectValueMapperService.getAllExpressionFields(); _.each(fields, function (field) { handleFieldChange(field, 'fromTicketLoad'); }); } function handleTicketLoadForActions() { var fields = objectValueMapperService.getAllProviderActionExpressionFields(); _.each(fields, function (field) { handleFieldChangeForActions(field); }); } function handleOOTBFieldValueChange(fieldName, action, source) { var members = objectValueMapperService.getWidgetMembers(fieldName); _.each(members, function (member) { $log.topic('expressions', 'Field Change "' + fieldName + '"'); handleFieldChange(member, source); }); widgetDependencyHandlerService.handleValueChange(fieldName, action); } return { handleFieldChange: handleFieldChange, handleOOTBFieldValueChange: handleOOTBFieldValueChange, handleTicketLoad: handleTicketLoad, handleTicketLoadForActions: handleTicketLoadForActions, handleFieldChangeForActions: handleFieldChangeForActions }; }]); })();