142 lines
7.9 KiB
JavaScript
142 lines
7.9 KiB
JavaScript
"use strict";
|
|
(function () {
|
|
'use strict';
|
|
angular.module('myitsmApp')
|
|
.controller('PrintController', ['$modalInstance', '$scope', 'params', '$state', 'assetModel', 'googleMapService', 'configurationModel',
|
|
'collisionModel', 'personModel', 'relationModel', 'relationService',
|
|
function ($modalInstance, $scope, params, $state, assetModel, googleMapService, configurationModel, collisionModel, personModel, relationModel, relationService) {
|
|
$scope.isFullVersion = true;
|
|
$scope.entity = angular.copy(params.entity); //Changes done to $scope.entity shouldn't reflect on ticket object.
|
|
$scope.metadata = params.metadata;
|
|
$scope.screenLayout = params.screenLayout;
|
|
$scope.customFieldsAvailable = params.customFieldsAvailable ? params.customFieldsAvailable : false;
|
|
$scope.type = params.entity.ticketType ? params.entity.ticketType : params.entity.type;
|
|
$scope.feed = angular.copy(params.feed);
|
|
$scope.knowledgeAnchorParser = params.knowledgeAnchorParser;
|
|
$scope.customFields = !_.isEmpty($scope.entity.customFields);
|
|
$scope.attachments = $scope.entity.attachments;
|
|
$scope.relationCounters = {};
|
|
//Relations
|
|
var relations = relationModel.cache;
|
|
$scope.relationCounters.tasks = relationService.getRelatedTasks(relations[$scope.entity.id]).length;
|
|
$scope.relationCounters.linkedItems = relationService.getRelatedLinkedItems(relations[$scope.entity.id], $scope.entity, false).length;
|
|
$scope.relationCounters.CIs = relationService.getRelatedCIs(relations[$scope.entity.id]).length;
|
|
//Feed
|
|
_.forEach($scope.feed, function (feed) {
|
|
feed.expanded = true;
|
|
});
|
|
//Asset
|
|
$scope.assetFlattenRelations = assetModel.flattenRelations;
|
|
$scope.assetOwner = assetModel.assetOwner;
|
|
$scope.assetOwnerNoAccess = !_.isEmpty($scope.assetOwner) ? !$scope.assetOwner.loginId : false;
|
|
$scope.googleMapAvailable = googleMapService.isAvailable;
|
|
$scope.asset = params.entity;
|
|
$scope.assetPeopleRelations = assetModel.assetPeopleRelations;
|
|
//KA
|
|
$scope.kcsAssessMode = $state.params.assessMode;
|
|
$scope.profileType = $state.current.name;
|
|
//Task
|
|
if ($scope.type === EntityVO.TYPE_TASK) {
|
|
$scope.isParentAppEnabled = configurationModel.isServerApplicationEnabled($scope.entity.parentName);
|
|
}
|
|
//change collisions
|
|
if ($scope.type === EntityVO.TYPE_CHANGE) {
|
|
collisionModel.getListOfCollisionsById($scope.entity, false)
|
|
.then(function (collisionSummary) {
|
|
if (collisionSummary.totalUnaddressedCount > 0) {
|
|
$scope.collisions = collisionSummary;
|
|
$scope.hasCollisions = true;
|
|
}
|
|
else {
|
|
$scope.hasCollisions = false;
|
|
}
|
|
});
|
|
}
|
|
$scope.toggle = function () {
|
|
$scope.visible = !$scope.visible;
|
|
};
|
|
//Person profile
|
|
$scope.personOpenTickets = personModel.personOpenTickets.ticketList;
|
|
$scope.personOpenTicketsTotalMatches = personModel.personOpenTickets.totalMatches;
|
|
$scope.personAssignedTickets = personModel.personAssignedTickets.ticketList;
|
|
$scope.personAssignedTicketsTotalMatches = personModel.personAssignedTickets.totalMatches;
|
|
$scope.personOpenSBETickets = personModel.personOpenServiceBrokerTickets.ticketList;
|
|
$scope.personOpenSBETicketsTotalMatches = personModel.personOpenServiceBrokerTickets.totalMatches;
|
|
$scope.personAllTickets = personModel.personAllTickets.ticketList;
|
|
$scope.personAllTicketsTotalMatches = personModel.personAllTickets.totalMatches;
|
|
$scope.personAssetList = personModel.personAssets;
|
|
$scope.personSupportGroups = personModel.personDetails.supportGroups;
|
|
$scope.personKnowledgeArticles = personModel.personKnowledgeArticles;
|
|
//Service Request approval - the same fix is in ticket-controller.js
|
|
if ($scope.type === EntityVO.TYPE_SERVICEREQUEST) {
|
|
_.forEach($scope.entity.approvalSummaries, function (item) {
|
|
item.status.name = item.status.value ? item.status.value.split(' ').join('_').toLowerCase() : '';
|
|
});
|
|
//Below code is to show alternate approver in the closed approvers list if approved by an alternate approver.
|
|
//Grouping is done by signatureId
|
|
if ($scope.entity.approvalList) {
|
|
if ($scope.entity.approvalList.closed) {
|
|
$scope.entity.approvalList.closed = groupAlternateApprover($scope.entity.approvalList.closed);
|
|
}
|
|
if ($scope.entity.approvalList.rejected) {
|
|
$scope.entity.approvalList.rejected = groupAlternateApprover($scope.entity.approvalList.rejected);
|
|
}
|
|
}
|
|
function groupAlternateApprover(approvalList) {
|
|
var coupledList = [], groupedByAlternateList = {};
|
|
_.forEach(approvalList, function (approver) {
|
|
var approverCopy = _.cloneDeep(approver);
|
|
if (!approver.alternateApprover) {
|
|
coupledList.push(approverCopy);
|
|
return;
|
|
}
|
|
if (!groupedByAlternateList[approverCopy.signatureId]) {
|
|
approverCopy.approvedFor = [approverCopy.approver.fullName];
|
|
approverCopy.approver = approverCopy.alternateApprover;
|
|
groupedByAlternateList[approverCopy.signatureId] = approverCopy;
|
|
}
|
|
else {
|
|
groupedByAlternateList[approverCopy.signatureId].approvedFor.push(approverCopy.approver.fullName);
|
|
}
|
|
});
|
|
return coupledList.concat(_.values(groupedByAlternateList));
|
|
}
|
|
}
|
|
$scope.printItem = function () {
|
|
$modalInstance.close();
|
|
};
|
|
$scope.buildSiteTag = function (site) {
|
|
var siteGroup = site.siteGroup ? ' > ' + site.siteGroup : '', siteName = site.name ? ' > ' + site.name : '', siteRegion = site.region ? site.region : '';
|
|
return siteRegion + siteGroup + siteName;
|
|
};
|
|
//setting ticketDetailsScreen variable to be used in print action blade for customized fields;
|
|
switch ($scope.type) {
|
|
case EntityVO.TYPE_INCIDENT:
|
|
$scope.ticketDetailsScreen = 'incidentDetailsScreen';
|
|
break;
|
|
case EntityVO.TYPE_WORKORDER:
|
|
$scope.ticketDetailsScreen = 'workOrderDetailsScreen';
|
|
break;
|
|
case EntityVO.TYPE_TASK:
|
|
$scope.ticketDetailsScreen = 'taskDetailsScreen';
|
|
break;
|
|
case EntityVO.TYPE_PERSON:
|
|
$scope.ticketDetailsScreen = 'personDetailsScreen';
|
|
break;
|
|
case EntityVO.TYPE_CHANGE:
|
|
$scope.ticketDetailsScreen = 'changeRequestScreen';
|
|
break;
|
|
case EntityVO.TYPE_PROBLEM:
|
|
$scope.ticketDetailsScreen = 'problemScreen';
|
|
break;
|
|
case EntityVO.TYPE_KNOWNERROR:
|
|
$scope.ticketDetailsScreen = 'knownErrorScreen';
|
|
break;
|
|
case EntityVO.TYPE_ASSET:
|
|
$scope.ticketDetailsScreen = 'assetScreen';
|
|
break;
|
|
}
|
|
}
|
|
]);
|
|
})();
|