"use strict"; (function () { 'use strict'; angular.module('personModule') .controller('PersonPreviewController', ['$scope', '$stateParams', '$state', 'personModel', '$q', 'metadataModel', 'configurationModel', 'screenConfigurationModel', 'systemAlertService', '$filter', function ($scope, $stateParams, $state, personModel, $q, metadataModel, configurationModel, screenConfigurationModel, systemAlertService, $filter) { var isServiceBrokerEnabled = configurationModel.isServerApplicationEnabled(EntityVO.TYPE_SBEREQUEST); $scope.isServiceBrokerEnabled = isServiceBrokerEnabled; function init() { var id = $scope.personId, screenName = screenConfigurationModel.getScreenNameByTicketType(EntityVO.TYPE_PERSON); $scope.assetLimit = 4; $scope.ticketOpenLimit = 4; $scope.ticketCloseLimit = 4; $scope.ticketSBEOpenLimit = 4; $scope.ticketSBECloseLimit = 4; $scope.state = { loadingSummaryStats: true, loadingPersonDetails: true, loadingPersonAssets: true, loadingOpenTickets: true, loadingClosedTickets: true, loadingSBEOpenTickets: true, loadingSBEClosedTickets: true }; $scope.person = ''; personModel.getServiceSummaryStats($scope.personId).then(function () { $scope.serviceSummary = personModel.serviceSummary; }).finally(function () { $scope.state.loadingSummaryStats = false; }); $q.all([personModel.getPersonDetailsByID(id), screenConfigurationModel.loadScreenConfigurationAndCustomFieldLabels(screenName, EntityVO.TYPE_PERSON)]).then(function () { $scope.person = personModel.personDetails; $scope.personSupportGroups = personModel.personDetails.supportGroups; }).finally(function () { $scope.state.loadingPersonDetails = false; }); var personAssetPromise = personModel.getPersonAssets(id, false); var assetMetadataPromise = metadataModel.getMetadataByType(EntityVO.TYPE_ASSET); $q.all([personAssetPromise, assetMetadataPromise]).then(function () { $scope.personAssetList = personModel.personAssets; }).finally(function () { $scope.state.loadingPersonAssets = false; }); personModel.getOpenTickets(id).then(function () { $scope.personOpenTickets = personModel.personOpenTickets.ticketList; $scope.personOpenTicketsTotalMatches = personModel.personOpenTickets.totalMatches; }).finally(function () { $scope.state.loadingOpenTickets = false; }); personModel.getClosedTickets(id).then(function () { $scope.personClosedTickets = personModel.personClosedTickets.ticketList; $scope.personClosedTicketsTotalMatches = personModel.personClosedTickets.totalMatches; }).finally(function () { $scope.state.loadingClosedTickets = false; }); if (isServiceBrokerEnabled) { personModel.getOpenServiceBrokerTickets(id).then(function () { $scope.personOpenServiceBrokerTickets = personModel.personOpenServiceBrokerTickets.ticketList; $scope.personOpenServiceBrokerTicketsTotalMatches = personModel.personOpenServiceBrokerTickets.totalMatches; }).finally(function () { $scope.state.loadingSBEOpenTickets = false; }); personModel.getClosedServiceBrokerTickets(id).then(function () { $scope.personClosedServiceBrokerTickets = personModel.personClosedServiceBrokerTickets.ticketList; $scope.personClosedServiceBrokerTicketsTotalMatches = personModel.personClosedServiceBrokerTickets.totalMatches; }).finally(function () { $scope.state.loadingSBEClosedTickets = false; }); } } $scope.getMoreOpenTickets = function () { personModel.getOpenTickets(personModel.personDetails.id, personModel.personOpenTickets.ticketList.length).finally(function () { $scope.personOpenTickets = personModel.personOpenTickets.ticketList; $scope.personOpenTicketsTotalMatches = personModel.personOpenTickets.totalMatches; }); }; $scope.getMoreClosedTickets = function () { personModel.getClosedTickets(personModel.personDetails.id, personModel.personClosedTickets.ticketList.length).finally(function () { $scope.personClosedTickets = personModel.personClosedTickets.ticketList; $scope.personClosedTicketsTotalMatches = personModel.personClosedTickets.totalMatches; }); }; $scope.getMoreOpenServiceBrokerTickets = function () { personModel.getOpenServiceBrokerTickets(personModel.personDetails.id, personModel.personOpenServiceBrokerTickets.ticketList.length).finally(function () { $scope.personOpenServiceBrokerTickets = personModel.personOpenServiceBrokerTickets.ticketList; $scope.personOpenServiceBrokerTicketsTotalMatches = personModel.personOpenServiceBrokerTickets.totalMatches; }); }; $scope.getMoreClosedServiceBrokerTickets = function () { personModel.getClosedServiceBrokerTickets(personModel.personDetails.id, personModel.personClosedServiceBrokerTickets.ticketList.length).finally(function () { $scope.personClosedServiceBrokerTickets = personModel.personClosedServiceBrokerTickets.ticketList; $scope.personClosedServiceBrokerTicketsTotalMatches = personModel.personClosedServiceBrokerTickets.totalMatches; }); }; $scope.selectAssetItem = function (item) { if (item.pinned) { $scope.$emit('assetUnselected', item); item.pinned = false; } else { $scope.$emit('assetSelected', item); item.pinned = true; } }; $scope.showItemDetails = function (item, $event) { if ($event && 'href' in $event.target) { return; } var params; if (item.classId) { params = { assetId: item.reconciliationId, assetClassId: item.classId }; $state.go('asset', params); } else { if (configurationModel.isServerApplicationEnabled(item.type)) { params = { id: item.id }; $state.go(item.type, params); } else { systemAlertService.warning({ text: $filter('i18n')('person.preview.notification.disabled.application'), hide: 10000 }); } } }; init(); } ]); })();