SmartIT_Extensions/BMC/smart-it-full-helix/scripts/app/console/ribbon-validation-service.js

86 lines
4.4 KiB
JavaScript

"use strict";
(function () {
'use strict';
angular.module('consoleModule')
.service('ribbonValidationService', ['authService', 'roles', 'knowledgeConsoleModel', 'permissionModel', function (authService, roles, knowledgeConsoleModel, permissionModel) {
this.isSameTypeSelected = function (selectedItems) {
return selectedItems.length > 0 && (Object.keys(_.countBy(selectedItems, 'type')).length < 2);
};
this.isSameCompanySelected = function (selectedItems) {
if (!selectedItems[0].validateCompany) {
return true;
}
return selectedItems.length > 0 && (Object.keys(_.countBy(selectedItems, 'company.name')).length < 2);
};
this.primaryAndOwnerCompanyCheck = function (selectedItems) {
if (!selectedItems[0].validateCompany) {
return true;
}
return selectedItems.length > 0 && (Object.keys(_.countBy(selectedItems, 'company.name')).length < 2) && (Object.keys(_.countBy(selectedItems, 'author.company.name')).length < 2);
};
this.isServiceRequest = function (selectedItems) {
return selectedItems[0].type === EntityVO.TYPE_SERVICEREQUEST;
};
this.isValidChangeStatusUpdate = function (selectedItems) {
var flag = true, currentStatus, currentProcess, i;
if (selectedItems[0].type === EntityVO.TYPE_CHANGE) {
currentStatus = selectedItems[0].status.value;
currentProcess = selectedItems[0].processFlowInstanceId;
for (i = 1; i < selectedItems.length; i++) {
if (selectedItems[i].status.value !== currentStatus || selectedItems[i].processFlowInstanceId !== currentProcess) {
flag = false;
break;
}
}
}
return flag;
};
this.validateShareButton = function (selectedItems) {
var isValid = false, hasServiceRequest;
if (selectedItems.length > 0) {
if (this.isSameTypeSelected(selectedItems)) {
isValid = true;
}
else {
hasServiceRequest = _.find(selectedItems, { type: EntityVO.TYPE_SERVICEREQUEST });
if (!hasServiceRequest) {
isValid = true;
}
}
}
return isValid;
};
this.hasKCSCoachAccess = function () {
return authService.isAuthorized(roles.ITSM_KCS_COACH_ROLE) && knowledgeConsoleModel.enableAssessment() ? false : true;
};
this.isRelease = function (selectedItems) {
return selectedItems[0].type === EntityVO.TYPE_RELEASE;
};
this.disableBulkUpdate = function (selectedItems) {
return _.find(selectedItems, { allowBulkUpdateStatus: false });
};
this.anyBypassedTasks = function (selectedItems) {
var bypassedStatusIndex = _.findIndex(selectedItems, function (item) {
return (item.type === 'task' && item.status.value === 'Bypassed');
});
return (bypassedStatusIndex > -1);
};
this.hasKnowledgeWritePermissions = function () {
return permissionModel.hasPermission(roles.ITSM_KNOWLEDGE_USER_ROLE);
};
this.isIncidentOrWordorder = function (selectedItems) {
var isValid = true;
for (var item in selectedItems) {
if (!(selectedItems[item].type === EntityVO.TYPE_INCIDENT || selectedItems[item].type === EntityVO.TYPE_WORKORDER)
|| (selectedItems[item].status
&& (selectedItems[item].status.value === 'Rejected' || selectedItems[item].status.value === 'Cancelled' || selectedItems[item].status.value === 'Closed')
&& selectedItems[item].needsAttention !== 'Yes')) {
isValid = false;
break;
}
}
return isValid;
};
}]);
})();