SmartIT_Extensions/BMC/smart-it-full/scripts/app/person/person-preview-controller.js

131 lines
7.5 KiB
JavaScript

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