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