86 lines
4.4 KiB
JavaScript
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;
|
|
};
|
|
}]);
|
|
})();
|