"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; }; }]); })();