SmartIT_Extensions/BMC/smart-it-full-helix/scripts/app/pwa/pwa-ticket-controller.js

1216 lines
81 KiB
JavaScript

'use strict';
(function () {
'use strict';
angular.module('pwa')
.controller('PwaTicketController', ['$scope', '$state', '$stateParams', '$modal', 'metadataModel', '$rootScope', 'events', 'AUTH_EVENTS', '$window', 'authModel', 'utilityFunctions', 'ticketModel', '$filter',
'relationModel', 'historyModel', 'chatModel', 'personModel', 'pwaModel', '$timeout', 'systemAlertService', 'i18nService', 'localStorageService', '$http', '$sce', 'assetModel', 'configurationModel', 'browser',
function ($scope, $state, $stateParams, $modal, metadataModel, $rootScope, events, AUTH_EVENTS, $window, authModel, utilityFunctions, ticketModel, $filter, relationModel, historyModel, chatModel, personModel, pwaModel, $timeout, systemAlertService, i18nService, localStorageService, $http, $sce, assetModel, configurationModel, browser) {
if ($window.localStorage.getItem('sessionActive') == "false") {
$rootScope.$broadcast(AUTH_EVENTS.SESSION_EXPIRED);
}
// getting the ticket id to load the view mode
$scope.id = $state.params.id ? $state.params.id : null;
$scope.isLastStateDraft = false;
if ($stateParams.isSrcLiveChat || $stateParams.isSrcExt) {
$scope.isLastStateDraft = true;
}
setFormSource();
metadataModel.getMetadataByType('global').then(function (metadata) {
var isPwaEnabled = (metadata.configurationParameters['Enable-Progressive-Views'] === 'T' || metadata.configurationParameters['Enable-Progressive-Views'] === 'true');
isPwaEnabled = localStorage.getItem('overridePV') === 'T' ? false : isPwaEnabled;
if (!isPwaEnabled) {
if ($state.current.name === 'pwaDraftIncident') {
$state.go('incident');
}
else if ($state.current.name === 'pwaDraftWorkorder') {
$state.go('workorder');
}
else {
var smartITState = $state.current.name.replace('PV', '');
if ($scope.id) {
$state.go(smartITState, { id: $scope.id });
}
else {
$state.go(smartITState);
}
}
}
}).catch(function (error) {
if (error) {
systemAlertService.error({
text: error.data.error,
clear: false
});
}
});
$scope.ccsEnabledForPWA = true;
$scope.isSrcLiveChat = ($stateParams.isSrcLiveChat === 'true') ? true : false;
$scope.errorQuickCreate = $stateParams.error;
$scope.isFormDirty = false;
var ticketTypes = [
{ createEvent: 'createIncidentPV', openEvent: 'openIncident', name: 'incidentPV', relatedTicketNavigation: 'draftIncident' },
{ createEvent: 'createWorkorderPV', openEvent: 'openWorkorder', name: 'workorderPV' },
{ createEvent: '', openEvent: 'openRequest', name: 'request' },
{ createEvent: 'createChange', openEvent: 'openChange', name: 'changePV', relatedTicketNavigation: 'drafteChange' },
{ createEvent: 'createKnownerror', openEvent: 'openKnownError', name: 'knownerrorPV', relatedTicketNavigation: 'draftKnownerror' },
{ createEvent: 'createProblem', openEvent: 'openProblem', name: 'problemPV', relatedTicketNavigation: 'draftProblem' },
{ createEvent: 'createRelease', openEvent: 'openRelease', name: 'release' },
{ createEvent: '', openEvent: 'openTask', name: 'taskPV' },
{ createEvent: '', openEvent: 'openOutage', name: 'outage' },
{ createEvent: 'createKnowledge', openEvent: 'openKnowledgeArticle', name: 'knowledge', relatedTicketNavigation: 'createKnowledge' },
{ createEvent: 'createAsset', openEvent: 'openAsset', name: 'assetPV' },
{ createEvent: '', openEvent: 'openActivity', name: 'activity' },
{ createEvent: '', openEvent: 'openSBERequest', name: 'sberequest' },
{ createEvent: 'Broadcast', openEvent: 'Broadcast', name: 'broadcast' }
], eventObj, relatedEvent, unbindStateChangeEvent, navElement, dropdownElement, closeButton;
$(document).on('focusout', function () {
$timeout(function () {
// using the $timeout to let the event pass the run loop
if (document.activeElement instanceof HTMLIFrameElement) {
navElement = document.getElementsByClassName('open');
if (navElement.length) {
dropdownElement = navElement[0].getElementsByClassName('dropdown-toggle');
if (dropdownElement.length) {
dropdownElement = dropdownElement[0];
dropdownElement.click();
}
}
else {
navElement = document.getElementsByClassName('search__close');
if (navElement.length) {
closeButton = navElement[0];
closeButton.click();
}
}
}
}, 0);
});
function postMessageToPV(parcelData) {
var domain = localStorage.getItem('pwaDomain'), iframeContent = getPwaIFrame();
if (domain && iframeContent) {
utilityFunctions.windowPostMessage(iframeContent, parcelData, domain);
}
}
// Dirty check on route change
unbindStateChangeEvent = $scope.$on('$stateChangeStart', function (event, toState, toParams) {
if (!$scope.reference && !toParams.isNewSearch) {
$scope.reference = 'stateChange';
respondPVFormDirty(event, toState, toParams);
}
});
// send message to check pv form dirty
function respondPVFormDirty(event, toState, toParams) {
var domain = localStorage.getItem('pwaDomain'), parcelData, iframeContent = document.getElementsByClassName('app__pwa-iframe-create') && document.getElementsByClassName('app__pwa-iframe-create').length ? document.getElementsByClassName('app__pwa-iframe-create')[0].contentWindow : null;
if (domain && iframeContent) {
parcelData = { eventType: 'checkDirtyForm', eventData: null };
if (event) {
event.preventDefault();
}
utilityFunctions.windowPostMessage(iframeContent, parcelData, domain);
$timeout(function () {
if (!$scope.isFormDirty) {
if ($scope.reference === 'stateChange') {
unbindStateChangeEvent();
$state.go(toState, toParams);
}
else if ($scope.reference === 'historyBack') {
window.history.back();
}
}
else {
var modalInstance = systemAlertService.modal({
title: i18nService.getLocalizedString('common.notification.dirty.title'),
text: i18nService.getLocalizedString('common.notification.dirty.message'),
buttons: [
{
text: i18nService.getLocalizedString('common.labels.yes'),
data: true
},
{
text: i18nService.getLocalizedString('common.labels.no'),
data: false
}
]
});
modalInstance.result.then(function (data) {
if (data) {
if ($scope.reference === 'stateChange') {
postWindowCloseMessageToLiveChat();
unbindStateChangeEvent();
$state.go(toState, toParams);
}
else if ($scope.reference === 'historyBack') {
window.history.back();
}
}
else {
$scope.reference = null;
}
});
}
}, 800);
}
}
function callKeepAlive() {
$http({
method: 'GET',
url: '/smartit/rest/keepAlive'
}).then(function () {
}, function (response) {
console.error('keepAlive : ' + response);
});
}
// Receiving the postMessages from PWA to do some specific work in smartIt, i.e. opening another ticket,
// visiting person's profile etc.
window.onmessage = handleMessage;
function handleMessage(e) {
$timeout(function () {
if (typeof e.data === 'string' && utilityFunctions.checkIfJson(e.data)) {
var dataObj = JSON.parse(e.data), userId;
if (dataObj) {
eventObj = _.find(ticketTypes, { openEvent: dataObj.eventType });
if (eventObj) {
openTicket(eventObj.name, dataObj);
}
else if (dataObj.action && dataObj.action === 'keepAlive') {
// just a dummy call, keeping the session Alive for SmartIT
callKeepAlive();
}
else if (dataObj.action && dataObj.action === 'sessionExpired') {
if (authModel.isSSOEnabled()) {
//default logout url for SmartIT
$window.location.href = $window.location.origin + '/smartit/atssologout.html';
}
else {
$scope.appState = -1;
authModel.logout();
}
}
else if (dataObj.homeServer) {
//get homeServer from /isSSOEnabledPWA service - to change rsso route from /goto to /form route
localStorage.setItem('homeServer', dataObj.homeServer);
}
else {
switch (dataObj.eventType) {
case 'createTicket':
createTicket(dataObj);
break;
case 'Save_CreateTicket':
$rootScope.$broadcast(events.PWA_TASK_MODAL, { taskCreated: true });
break;
case 'Cancel_CreateTicket':
$rootScope.$broadcast(events.PWA_TASK_MODAL, { taskCreated: false });
break;
case 'updatedKnowledge':
var splitData = dataObj.eventData.split('|');
$rootScope.$broadcast(events.PWA_UPDATED_KNOWLEDGE, { showSaveAndResolve: splitData[0], showDeleteFromTicket: splitData[1], showSaveToTicket: splitData[2] });
break;
case 'TASK_LOADED':
sendTicketData();
break;
case 'openPersonProfile':
userId = dataObj.eventData ? dataObj.eventData : null;
if (userId) {
try {
userId = decodeURI(userId);
}
catch (err) {
console.info('decode failed');
}
$state.go('personPV', { id: userId }, { inherit: false });
}
break;
case 'createRelatedTicket':
createRelatedTicket(dataObj);
break;
case 'addTicketToHistory':
addTicketToHistory(dataObj);
break;
case 'goToPreviousScreen':
$scope.reference = 'historyBack';
respondPVFormDirty();
break;
case 'closeGlobalSearch':
angular.element(document.body).click();
break;
case 'startChat':
handleChat(dataObj);
break;
case 'isFormDirty':
handleFormDirty(dataObj);
break;
case 'showDirtyWarning':
showDirtyFormWarning(dataObj);
break;
case 'SMARTRECORDER_CREATEWORKORDER_LOADED':
case 'LIVECHAT_CREATEWORKORDER_LOADED':
case 'ASSET_CREATEWORKORDER_LOADED':
case 'CHANGE_CREATEWORKORDER_LOADED':
case 'KNOWNERROR_CREATEWORKORDER_LOADED':
case 'PROBLEM_CREATEWORKORDER_LOADED':
workOrderDraftFormLoaded();
break;
case 'SMARTRECORDER_CREATEINCIDENT_LOADED':
case 'LIVECHAT_CREATEINCIDENT_LOADED':
case 'ASSET_CREATEINCIDENT_LOADED':
case 'CHANGE_CREATEINCIDENT_LOADED':
case 'KNOWNERROR_CREATEINCIDENT_LOADED':
case 'PROBLEM_CREATEINCIDENT_LOADED':
incidentDraftFormLoaded();
break;
case 'CHANGE_CREATEPROBLEM_LOADED':
case 'KNOWNERROR_CREATEPROBLEM_LOADED':
problemDraftFormLoaded();
break;
case 'CHANGE_CREATEKNOWNERROR_LOADED':
knownerrorDraftFormLoaded();
break;
case 'RELEASE_CREATECHANGE_LOADED':
changeDraftFormLoaded();
break;
case 'LIVECHAT_CREATEINCIDENT_SUCCESS':
case 'LIVECHAT_CREATEWORKORDER_SUCCESS':
if ($scope.isSrcLiveChat && window.opener) {
var ticketDataEvent = {
eventData: dataObj.eventData,
event: dataObj.eventType
};
window.opener.postMessage(ticketDataEvent, window.location && window.location.origin); //NOSONAR
}
break;
case 'SHOW_ALERT':
dataObj.eventData.options.detail = dataObj.eventData && dataObj.eventData.options.detail.replace(/[\u00A0-\u9999<>\&]/gim, function (i) {
return '&#' + i.charCodeAt(0) + ';';
});
if (dataObj.eventData && dataObj.eventData.type === 'info') {
systemAlertService.info({ text: dataObj.eventData.options.detail, hide: 10000, displayOnStateChange: true });
}
else if (dataObj.eventData && dataObj.eventData.type === 'success') {
systemAlertService.success({ text: dataObj.eventData.options.detail, hide: 10000, displayOnStateChange: true });
}
else if (dataObj.eventData && dataObj.eventData.type === 'warn') {
systemAlertService.warning({ text: dataObj.eventData.options.detail, hide: 10000, displayOnStateChange: true });
if (dataObj.eventData.options.messageNumber && dataObj.eventData.options.messageNumber === 449) {
$state.go('dashboard');
}
}
else if (dataObj.eventData && dataObj.eventData.type === 'error') {
systemAlertService.error({ text: dataObj.eventData.options.detail, displayOnStateChange: true });
}
break;
case 'ASSET_CREATEINCIDENT_SUCCESS':
// Here dataObj.eventData will be the string like
// "type=incident;id=IDGAA5V0H37ZZAQKOCM1Q9PMT7VKEZ;displayId=INC000000000172;chatSessionId=;parentGUID=REHAA5V0GQBORANBA0I28I8MWWG5WF"
// Harcoded solution will be something like:
// const parentGuidPart = dataObj.eventData && dataObj.eventData.split(';').filter(item => item.indexOf('parentGUID') !== -1)[0];
// const assetGuid = parentGuidPart && parentGuidPart.split('parentGUID=')[1];
var matchedGroups = dataObj.eventData && dataObj.eventData.match(/(?:parentGUID=)([^\s\;]+)/);
var assetGuid = Array.isArray(matchedGroups) && matchedGroups[1];
if (assetGuid) {
delete relationModel.cache[assetGuid];
}
else {
console.error('No parent asset GUID');
}
break;
default:
return;
}
}
}
$scope.dataLoading = false;
}
}); //onmessage changes are out of angular context
}
function openTicket(ticketType, dataObj) {
var ticketId = dataObj.eventData ? dataObj.eventData : null, splitData;
if (ticketId) {
if ($scope.state && $scope.state.current && $scope.state.current.data && $scope.state.current.data.mode == "CREATE") {
// don't check form dirty in case of openTicket after CREATE
unbindStateChangeEvent();
}
splitData = dataObj.eventData.split('|');
if (ticketType === 'assetPV' || ticketType === 'asset') {
if (splitData && splitData.length === 2) {
$state.go(ticketType, { assetId: splitData[0], assetClassId: splitData[1] }, { location: $scope.isLastStateDraft ? 'replace' : true });
}
}
else if (ticketType === "broadcast") {
$state.go('dashboard');
}
else if (!browser.isMobile && dataObj.eventType === "openKnowledgeArticle") {
$scope.selectedItem = { id: ticketId, type: 'knowledge' };
if (splitData && splitData.length >= 2) {
$scope.selectedItem.id = splitData[0];
$scope.selectedItem.showSaveAndResolve = (splitData[1] === 'true');
$scope.selectedItem.showDeleteFromTicket = (splitData[2] === 'true');
$scope.selectedItem.showSaveToTicket = (splitData[3] === 'true');
}
return $modal.open({
template: '<pwa-rs-preview resource-preview-item="selectedItem" close-modal="closeModal()" class="full-height"></pwa-rs-preview>',
windowClass: 'action-blade preview',
size: 'lg',
backdrop: 'false',
controller: ['$scope', '$modalInstance', 'selectedItem', function ($scope, $modalInstance, selectedItem) {
$scope.selectedItem = selectedItem;
$scope.closeModal = function () {
$modalInstance.close();
};
}],
resolve: {
selectedItem: function () {
return $scope.selectedItem;
}
}
});
}
else {
if (splitData && splitData.length === 2 && splitData[1] === 'newTab') {
var url = '#/' + ticketType + '/' + splitData[0];
window.open(url, '_blank');
}
else {
$state.go(ticketType, { id: splitData[0] }, { reload: $stateParams.id === splitData[0], inherit: false, location: $scope.isLastStateDraft ? 'replace' : true });
}
}
}
}
function createTicket(dataObj) {
var found = dataObj.eventData ? _.find(ticketTypes, { name: dataObj.eventData }) : null;
if (found && found.createEvent) {
$state.go(found.createEvent);
}
}
$scope.getContextType = function () {
return $scope.context.ticketType || $scope.context.type;
};
function createRelatedTicket(dataObj) {
var splitData = dataObj.eventData.split('|'), relationshipTicketType, originalTicketType, originalTicketId, relationshipType, parent, data, modalInstance;
if (splitData && splitData.length === 4) {
relationshipTicketType = splitData[0];
originalTicketType = splitData[1];
originalTicketId = splitData[2];
relationshipType = splitData[3];
relatedEvent = _.find(ticketTypes, { name: relationshipTicketType });
if (browser.isMobile && relationshipTicketType === 'knowledge') {
systemAlertService.error({
text: i18nService.getLocalizedString('error.createKnowledge.notSupported'),
clear: true,
displayOnStateChange: false
});
return;
}
if (relatedEvent && relatedEvent.relatedTicketNavigation) {
var promise;
if (originalTicketType === 'asset') {
var assetData = originalTicketId.split('/'); //assetId , assetClassId
promise = assetModel.getAssetDetailsByID(assetData[0], assetData[1]);
}
else {
promise = ticketModel.getTicket(originalTicketId, originalTicketType);
}
promise.then(function (ticketData) {
$scope.context = ticketData;
if (relationshipTicketType === 'knowledge') {
ticketModel.articleParent = $scope.context;
modalInstance = $modal.open({
templateUrl: 'views/create/create-ka.html',
controller: 'CreateKnowledgeArticleModalController',
windowClass: 'modal_full-content',
backdrop: false,
keyboard: false
});
modalInstance.result.then(function (article) {
$scope.state.loadingRelatedItems = true;
var resourceItem = new RelationItemVO().build({
id: article.id,
displayId: article.articleId,
title: article.title,
desc: article.title,
type: article.type,
additionalInformation: {
modifiedDate: article.modifiedDate
},
tag: EntityVO.TYPE_RESOURCE,
relationshipType: EntityVO.TYPE_RELATEDTO
});
parent = {
type: $scope.context.type,
uuid: $scope.context.id
};
data = {
id: resourceItem.id,
desc: resourceItem.desc,
type: resourceItem.type,
tag: EntityVO.TYPE_RESOURCE,
relationshipType: EntityVO.TYPE_RELATEDTO
};
relationModel.addRelation(parent, [data]).then(function () {
$scope.state.loadingRelatedItems = false;
$scope.$emit(events.SELECT_RESOURCE_TAB);
if (data.type === EntityVO.TYPE_KNOWLEDGE) {
delete relationModel.cache[data.id]; //Delete cache entry for the knowledge-ticket relation to fetch it fresh from backend.
}
sendAcknowledgement(dataObj);
$state.go(resourceItem.type, {
id: resourceItem.id
});
});
});
}
else {
ticketModel.cache.draft = {
type: relationshipTicketType
};
ticketModel.cache.relatedDraft = {
type: relationshipTicketType,
fromType: $scope.getContextType(),
id: originalTicketType === 'asset' ? $scope.context.instanceId : $scope.context.id,
fromContext: $scope.context
};
if ($scope.getContextType() === EntityVO.TYPE_ASSET) {
ticketModel.cache.relatedDraft.id = $scope.context.reconciliationId;
ticketModel.cache.relatedDraft.relationship = _.trim(relationshipType);
}
$state.go(relatedEvent.relatedTicketNavigation);
}
});
}
}
}
function addTicketToHistory(dataObj) {
var replaceCharObj = { '&apos;': '\'', '&quot;': '"', '&fs;': '/', '&bs;': '\\', '&lt;': '<', '&gt;': '>', '&amp;': '&' };
try {
var eData = dataObj.eventData.replace(/\t/g, ' ');
var historyObj_1 = JSON.parse(eData.replace(/'/g, '"').replace(/\//g, '&fs;').replace(/\\/g, '&bs;').replace(/\n/g, '\\n').replace(/\r/g, '\\r'));
_.each(replaceCharObj, function (val, key) {
historyObj_1.summary = historyObj_1.summary.replace(new RegExp(key, 'g'), val);
});
if (historyObj_1.type === EntityVO.TYPE_KNOWLEDGE) {
historyObj_1.isDecisionTree = function () {
return false;
};
}
historyModel.addToHistory(historyObj_1.type, historyObj_1);
}
catch (e) {
displayError(e + ' : ' + $filter('i18n')('history.error.runProcess'));
}
}
function handleChat(dataObj) {
var splitData = dataObj.eventData.split('|'), type, verificationId, assetClassId, chatRelation = null;
type = splitData[0];
verificationId = splitData[1];
if (type === EntityVO.TYPE_PERSON) {
personModel.getPersonDetailsByID(verificationId).then(function (person) {
if (person && person.jid) {
var personJid = person.jid, selfChat = chatModel.currentUser.loginId === (person.loginId || person.elementId);
if (personJid && !selfChat) {
if (!browser.isMobile) {
chatModel.createChatRoom(personJid);
}
}
else {
displayWarning($filter('i18n')('chat.systemMessage.conversationError') + (selfChat ? $filter('i18n')('chat.systemMessage.self') : person.fullName));
}
}
else {
displayError($filter('i18n')('chat.systemMessage.invalidJid'));
}
});
}
else if (type === EntityVO.TYPE_ASSET) {
assetClassId = splitData[2];
chatRelation = {
type: type,
ticketType: type,
id: verificationId,
reconciliationId: verificationId,
classId: assetClassId
};
}
else {
chatRelation = { type: type, id: verificationId };
}
if (browser.isMobile) {
systemAlertService.error({
text: i18nService.getLocalizedString('error.chat.notSupported'),
clear: true,
displayOnStateChange: false
});
}
else if (chatRelation) {
chatModel.createAssignedChatRoom(chatRelation);
}
}
function handleFormDirty(dataObj) {
$scope.isFormDirty = dataObj.eventData;
}
function showDirtyFormWarning(dataObj) {
var modalInstance = systemAlertService.modal({
title: i18nService.getLocalizedString('common.notification.dirty.title'),
text: i18nService.getLocalizedString('common.notification.dirty.message'),
buttons: [
{
text: i18nService.getLocalizedString('common.labels.yes'),
data: true
},
{
text: i18nService.getLocalizedString('common.labels.no'),
data: false
}
]
});
modalInstance.result.then(function (data) {
var domain = localStorage.getItem('pwaDomain'), parcelData, iframeContent = getPwaIFrame();
if (domain && iframeContent) {
parcelData = { eventType: 'dirtyFormNavigateAway', eventData: data ? 'yes' : 'no' };
$timeout(function () {
utilityFunctions.windowPostMessage(iframeContent, parcelData, domain);
});
}
});
}
function getPwaIFrame() {
return document.getElementsByClassName('app__pwa-iframe') && document.getElementsByClassName('app__pwa-iframe').length ? document.getElementsByClassName('app__pwa-iframe')[0].contentWindow : null;
}
function sendAcknowledgement(dataObject) {
var parcelData = { eventType: 'acknowledgement', eventData: dataObject.eventType + 'EventCompleted' };
postMessageToPV(parcelData);
}
function displayError(errorText) {
$timeout(function () {
systemAlertService.error({
text: errorText,
icon: 'icon-comments',
clear: true,
hide: 10000
});
});
}
function displayWarning(warningText) {
$timeout(function () {
systemAlertService.warning({
text: warningText,
icon: 'icon-comments',
clear: true,
hide: 10000
});
});
}
function getMentionList() {
var mentions = [];
_.filter(pwaModel.smartRecorderData.confirmedItems, function (item) {
if (item.type === EntityVO.TYPE_PERSON && item.content.personId !== pwaModel.smartRecorderData.customer.personId) {
if (pwaModel.smartRecorderData.contact && (item.content.personId !== pwaModel.smartRecorderData.contact.personId)) {
mentions.push(item.content.personId);
}
}
});
return mentions.length ? mentions.toString() : '';
}
function getCIList(smData) {
var CIList = [];
_.filter(pwaModel.smartRecorderData.relatedAsset, function (item) {
CIList.push(item.reconciliationId);
});
if (smData.causalCI && smData.causalCI.reconciliationId && CIList.indexOf(smData.causalCI.reconciliationId === -1)) {
CIList.push(smData.causalCI.reconciliationId);
}
return CIList.length ? CIList.toString() : '';
}
function getRelatedKA() {
var relatedKAs = [];
_.filter(pwaModel.smartRecorderData.confirmedResourceList, function (item) {
if (item.type === EntityVO.TYPE_KNOWLEDGE) {
relatedKAs.push(item.id);
}
});
return relatedKAs.length ? relatedKAs.toString() : '';
}
function getRelatedTickets() {
var relatedKAs = [];
_.filter(pwaModel.smartRecorderData.confirmedResourceList, function (item) {
if (item.type === EntityVO.TYPE_INCIDENT) {
relatedKAs.push(item.id);
}
});
return relatedKAs.length ? relatedKAs.toString() : '';
}
function getOutageList() {
var outageList = [];
_.filter(pwaModel.smartRecorderData.confirmedResourceList, function (item) {
if (item.type === EntityVO.TYPE_OUTAGE) {
var unavailabilityId = (item.displayId && item.displayId.split('|')[0]) || '';
!unavailabilityId && console.error('Unavailability ID not received.');
outageList.push(unavailabilityId);
}
});
return outageList.length ? outageList.toString() : '';
}
function setupPwaDataFromSmartRecorder(type) {
var smData = pwaModel.smartRecorderData;
var smSummary = smData.desc ? smData.desc : '';
var templateId = smData.template && smData.template.id ? smData.template.id : '';
if ($scope.isSrcLiveChat) {
smSummary = smData.summary ? smData.summary : '';
templateId = smData.templateGuid ? smData.templateGuid : '';
if (templateId === '') {
templateId = smData.templateId ? smData.templateId : '';
}
}
var pwaData = {
eventType: type,
eventData: 'SMTRecorder_Company=' + (smData.customer && smData.customer.company ? smData.customer.company.name : '') + ';'
+ 'SMTRecorder_Customer=' + (smData.customer && smData.customer.personId ? smData.customer.personId : '') + ';'
+ 'SMTRecorder_Contact=' + (smData.contact && smData.contact.personId ? smData.contact.personId : '') + ';'
+ 'SMTRecorder_Summary=' + smSummary.replace(/;/g, '[#semi#]') + ';'
+ 'SMTRecorder_Template=' + templateId + ';'
+ 'SMTRecorder_Service=' + (smData.impactedService && smData.impactedService.reconciliationId ? smData.impactedService.reconciliationId : '') + ';'
+ 'SMTRecorder_CI=' + (smData.causalCI && smData.causalCI.reconciliationId ? smData.causalCI.reconciliationId : '') + ';'
+ 'SMTRecorder_MentionList=' + getMentionList() + ';'
+ 'SMTRecorder_CIList=' + getCIList(smData) + ';'
+ 'SMTRecorder_RelatedKAList=' + getRelatedKA() + ';'
+ 'SMTRecorder_RelatedTicketList=' + getRelatedTickets() + ';'
+ 'SMTRecorder_OutageList=' + getOutageList()
};
if (configurationModel.comaroundEnabled) {
pwaData.eventData += ';SMTRecorder_IsHKMEnabled=true';
}
if (smData.impact) {
pwaData.eventData += ';SMTRecorder_Impact=' + smData.impact;
}
if (smData.urgency) {
pwaData.eventData += ';SMTRecorder_Urgency=' + smData.urgency;
}
if ($scope.isSrcLiveChat) {
var liveChatData = ';'
+ 'SMTRecorder_ChatSessionId=' + (smData.chatSessionId ? smData.chatSessionId : '') + ';'
+ 'SMTRecorder_ReportedSource=' + (smData.reportedSource ? smData.reportedSource : '') + ';'
+ 'SMTRecorder_Status=' + (smData.status && smData.status.value ? smData.status.value : '') + ';'
+ 'SMTRecorder_AssigneeLoginId=' + (smData.assignee && smData.assignee.loginId ? smData.assignee.loginId : '') + ';'
+ 'SMTRecorder_AssigneeSupportGroupId=' + (smData.supportGroup && smData.supportGroup.id ? smData.supportGroup.id : '') + ';'
+ 'SMTRecorder_ManagerLoginId=' + (smData.manager && smData.manager.loginId ? smData.manager.loginId : '') + ';'
+ 'SMTRecorder_ManagerGroupId=' + (smData.managerGroup && smData.managerGroup.id ? smData.managerGroup.id : '');
pwaData.eventData += liveChatData;
}
if ($scope.errorQuickCreate) {
pwaData.eventData += ';'
+ 'SMTRecorder_DisplayError=' + $scope.errorQuickCreate.replace(/;/g, '[#semi#]');
}
return pwaData;
}
function getCategoryTier(dataFromAsset, type, categoryName) {
var productCat = _.find(dataFromAsset.allCategories, { name: type });
var selectedValue = _.find(productCat.listOfTiers, { name: categoryName }).selectedValue;
if (selectedValue === undefined) {
return '';
}
return selectedValue;
}
function setupPwaDataFromAssetRelated(type) {
var dataFromAsset = pwaModel.createRelatedFromAssetData.fromContext;
return {
eventType: type,
eventData: 'SMTRecorder_PCT1=' + getCategoryTier(dataFromAsset, 'product', 'productCategoryTier1') + ';'
+ 'SMTRecorder_PCT2=' + getCategoryTier(dataFromAsset, 'product', 'productCategoryTier2') + ';'
+ 'SMTRecorder_PCT3=' + getCategoryTier(dataFromAsset, 'product', 'productCategoryTier3') + ';'
+ 'SMTRecorder_PCTName=' + getCategoryTier(dataFromAsset, 'product', 'productName') + ';'
+ 'SMTRecorder_PCTModel=' + getCategoryTier(dataFromAsset, 'product', 'productModelVersion') + ';'
+ 'SMTRecorder_Manufacturer=' + (dataFromAsset.manufacturer ? dataFromAsset.manufacturer : '') + ';'
+ 'SMTRecorder_ParentTicketID =' + dataFromAsset.reconciliationId + ';'
+ 'SMTRecorder_ParentRelationshipType=' + RelationItemVO.TYPE_RELATEDTO + ';'
+ 'SMTRecorder_Summary=' + dataFromAsset.name + ';'
+ 'SMTRecorder_Description=' + dataFromAsset.desc.replace(/;/g, '[#semi#]')
};
}
function getCategorizationForChange(data, type, tier) {
var typeData = _.find(data.categorizations, { name: type });
if (typeData.tiers[tier] === undefined) {
return '';
}
return typeData.tiers[tier];
}
function setupPwaDataFromReleaseRelated(type) {
var dataFromRelease = pwaModel.createRelatedFromRelease.fromContext;
return {
eventType: type,
eventData: 'SMTRecorder_Company=' + dataFromRelease.company.name + ';'
+ 'SMTRecorder_ParentTicketID=' + dataFromRelease.id + ';'
+ 'SMTRecorder_Summary=' + dataFromRelease.summary.replace(/;/g, '[#semi#]') + ';'
+ 'SMTRecorder_Description=' + dataFromRelease.desc.replace(/;/g, '[#semi#]') + ';'
+ 'SMTRecorder_Priority=' + dataFromRelease.priority + ';'
+ 'SMTRecorder_Impact=' + dataFromRelease.impact + ';'
+ 'SMTRecorder_Urgency=' + dataFromRelease.urgency + ';'
+ 'SMTRecorder_Sequence=' + dataFromRelease.sequence + ';'
+ 'SMTRecorder_Milestone=' + dataFromRelease.milestoneId + ';'
+ 'SMTRecorder_ParentRelationshipType=' + RelationItemVO.TYPE_MEMBEROF + ';'
+ 'SMTRecorder_Template=' + (dataFromRelease.templateId ? dataFromRelease.templateId : '') + ';'
+ 'SMTRecorder_PCT1=' + getCategorizationForChange(dataFromRelease, 'product', 'productCategoryTier1') + ';'
+ 'SMTRecorder_PCT2=' + getCategorizationForChange(dataFromRelease, 'product', 'productCategoryTier2') + ';'
+ 'SMTRecorder_PCT3=' + getCategorizationForChange(dataFromRelease, 'product', 'productCategoryTier3') + ';'
+ 'SMTRecorder_OCT1=' + getCategorizationForChange(dataFromRelease, 'operational', 'operationCategoryTier1') + ';'
+ 'SMTRecorder_OCT2=' + getCategorizationForChange(dataFromRelease, 'operational', 'operationCategoryTier2') + ';'
+ 'SMTRecorder_OCT3=' + getCategorizationForChange(dataFromRelease, 'operational', 'operationCategoryTier3')
};
}
function setupPwaDataFromChangeRelated(type) {
var dataFromChange = pwaModel.createRelatedFromChange.fromContext;
return {
eventType: type,
eventData: 'SMTRecorder_Company=' + (dataFromChange.customer && dataFromChange.customer.company ? dataFromChange.customer.company.name : '') + ';'
+ 'SMTRecorder_Customer=' + (dataFromChange.customer && dataFromChange.customer.personId ? dataFromChange.customer.personId : '') + ';'
+ 'SMTRecorder_Contact=' + (dataFromChange.contact && dataFromChange.contact.personId ? dataFromChange.contact.personId : '') + ';'
+ 'SMTRecorder_Description=' + dataFromChange.desc.replace(/;/g, '[#semi#]') + ';'
+ 'SMTRecorder_Summary=' + dataFromChange.summary.replace(/;/g, '[#semi#]') + ';'
+ 'SMTRecorder_Template=' + (dataFromChange.templateId ? dataFromChange.templateId : '') + ';'
+ 'SMTRecorder_Service=' + (dataFromChange.impactedService && dataFromChange.impactedService.reconciliationId ? dataFromChange.impactedService.reconciliationId : '') + ';'
+ 'SMTRecorder_Priority=' + dataFromChange.priority + ';'
+ 'SMTRecorder_Impact=' + dataFromChange.impact + ';'
+ 'SMTRecorder_Urgency=' + dataFromChange.urgency + ';'
+ 'SMTRecorder_ParentTicketID=' + dataFromChange.id + ';'
+ 'SMTRecorder_ParentRelationshipType=' + RelationItemVO.TYPE_CREATEDBY + ';'
+ 'SMTRecorder_PCT1=' + getCategorizationForChange(dataFromChange, 'product', 'productCategoryTier1') + ';'
+ 'SMTRecorder_PCT2=' + getCategorizationForChange(dataFromChange, 'product', 'productCategoryTier2') + ';'
+ 'SMTRecorder_PCT3=' + getCategorizationForChange(dataFromChange, 'product', 'productCategoryTier3') + ';'
+ 'SMTRecorder_OCT1=' + getCategorizationForChange(dataFromChange, 'operational', 'operationCategoryTier1') + ';'
+ 'SMTRecorder_OCT2=' + getCategorizationForChange(dataFromChange, 'operational', 'operationCategoryTier2') + ';'
+ 'SMTRecorder_OCT3=' + getCategorizationForChange(dataFromChange, 'operational', 'operationCategoryTier3')
};
}
function setupPwaDataFromKnownErrorRelated(type) {
var dataFromKnownError = pwaModel.createRelatedFromKnownError.fromContext;
return {
eventType: type,
eventData: 'SMTRecorder_Company=' + (dataFromKnownError.coordinator && dataFromKnownError.coordinator.company ? dataFromKnownError.coordinator.company.name : '') + ';'
+ 'SMTRecorder_Customer=' + (dataFromKnownError.coordinator && dataFromKnownError.coordinator.personId ? dataFromKnownError.coordinator.personId : '') + ';'
+ 'SMTRecorder_Description=' + dataFromKnownError.desc.replace(/;/g, '[#semi#]') + ';'
+ 'SMTRecorder_Summary=' + dataFromKnownError.summary.replace(/;/g, '[#semi#]') + ';'
+ 'SMTRecorder_Service=' + (dataFromKnownError.impactedService && dataFromKnownError.impactedService.reconciliationId ? dataFromKnownError.impactedService.reconciliationId : '') + ';'
+ 'SMTRecorder_Priority=' + dataFromKnownError.priority + ';'
+ 'SMTRecorder_Impact=' + dataFromKnownError.impact + ';'
+ 'SMTRecorder_Urgency=' + dataFromKnownError.urgency + ';'
+ 'SMTRecorder_ParentTicketID=' + dataFromKnownError.id + ';'
+ 'SMTRecorder_ParentRelationshipType=' + RelationItemVO.TYPE_CREATEDBY + ';'
+ 'SMTRecorder_PCT1=' + getCategorizationForChange(dataFromKnownError, 'product', 'productCategoryTier1') + ';'
+ 'SMTRecorder_PCT2=' + getCategorizationForChange(dataFromKnownError, 'product', 'productCategoryTier2') + ';'
+ 'SMTRecorder_PCT3=' + getCategorizationForChange(dataFromKnownError, 'product', 'productCategoryTier3') + ';'
+ 'SMTRecorder_OCT1=' + getCategorizationForChange(dataFromKnownError, 'operational', 'operationCategoryTier1') + ';'
+ 'SMTRecorder_OCT2=' + getCategorizationForChange(dataFromKnownError, 'operational', 'operationCategoryTier2') + ';'
+ 'SMTRecorder_OCT3=' + getCategorizationForChange(dataFromKnownError, 'operational', 'operationCategoryTier3') + ';'
+ 'SMTRecorder_LocationCompany=' + (dataFromKnownError.locationCompany && dataFromKnownError.locationCompany.name ? dataFromKnownError.locationCompany.name : '') + ';'
+ 'SMTRecorder_CI=' + (dataFromKnownError.causalCI && dataFromKnownError.causalCI.reconciliationId ? dataFromKnownError.causalCI.reconciliationId : '') + ';'
};
}
function setupPwaDataFromProblemRelated(type) {
var dataFromProblem = pwaModel.createRelatedFromProblem.fromContext;
return {
eventType: type,
eventData: 'SMTRecorder_Company=' + (dataFromProblem.coordinator && dataFromProblem.coordinator.company ? dataFromProblem.coordinator.company.name : '') + ';'
+ 'SMTRecorder_Customer=' + (dataFromProblem.coordinator && dataFromProblem.coordinator.personId ? dataFromProblem.coordinator.personId : '') + ';'
+ 'SMTRecorder_Description=' + dataFromProblem.desc.replace(/;/g, '[#semi#]') + ';'
+ 'SMTRecorder_Summary=' + dataFromProblem.summary.replace(/;/g, '[#semi#]') + ';'
+ 'SMTRecorder_Service=' + (dataFromProblem.impactedService && dataFromProblem.impactedService.reconciliationId ? dataFromProblem.impactedService.reconciliationId : '') + ';'
+ 'SMTRecorder_Priority=' + dataFromProblem.priority + ';'
+ 'SMTRecorder_Impact=' + dataFromProblem.impact + ';'
+ 'SMTRecorder_Urgency=' + dataFromProblem.urgency + ';'
+ 'SMTRecorder_ParentTicketID=' + dataFromProblem.id + ';'
+ 'SMTRecorder_ParentRelationshipType=' + RelationItemVO.TYPE_CREATEDBY + ';'
+ 'SMTRecorder_PCT1=' + getCategorizationForChange(dataFromProblem, 'product', 'productCategoryTier1') + ';'
+ 'SMTRecorder_PCT2=' + getCategorizationForChange(dataFromProblem, 'product', 'productCategoryTier2') + ';'
+ 'SMTRecorder_PCT3=' + getCategorizationForChange(dataFromProblem, 'product', 'productCategoryTier3') + ';'
+ 'SMTRecorder_OCT1=' + getCategorizationForChange(dataFromProblem, 'operational', 'operationCategoryTier1') + ';'
+ 'SMTRecorder_OCT2=' + getCategorizationForChange(dataFromProblem, 'operational', 'operationCategoryTier2') + ';'
+ 'SMTRecorder_OCT3=' + getCategorizationForChange(dataFromProblem, 'operational', 'operationCategoryTier3') + ';'
+ 'SMTRecorder_LocationCompany=' + (dataFromProblem.locationCompany && dataFromProblem.locationCompany.name ? dataFromProblem.locationCompany.name : '') + ';'
+ 'SMTRecorder_CI=' + (dataFromProblem.causalCI && dataFromProblem.causalCI.reconciliationId ? dataFromProblem.causalCI.reconciliationId : '') + ';'
};
}
function incidentDraftFormLoaded() {
var domain = localStorage.getItem('pwaDomain'), parcelData, eventType, iframeContent = getPwaIFrame();
if (domain && iframeContent) {
if (pwaModel.smartRecorderData) {
eventType = $scope.isSrcLiveChat ? 'LIVECHAT_CREATEINCIDENT' : 'SMARTRECORDER_CREATEINCIDENT';
parcelData = setupPwaDataFromSmartRecorder(eventType);
utilityFunctions.windowPostMessage(iframeContent, parcelData, domain);
pwaModel.draftCallMade = true;
pwaModel.smartRecorderData = null;
}
else if (pwaModel.createRelatedFromAssetData) {
eventType = 'ASSET_CREATEINCIDENT';
parcelData = setupPwaDataFromAssetRelated(eventType);
utilityFunctions.windowPostMessage(iframeContent, parcelData, domain);
pwaModel.createRelatedFromAssetData = null;
}
else if (pwaModel.createRelatedFromChange) {
eventType = 'CHANGE_CREATEINCIDENT';
parcelData = setupPwaDataFromChangeRelated(eventType);
utilityFunctions.windowPostMessage(iframeContent, parcelData, domain);
pwaModel.createRelatedFromChange = null;
}
else if (pwaModel.createRelatedFromKnownError) {
eventType = 'KNOWNERROR_CREATEINCIDENT';
parcelData = setupPwaDataFromKnownErrorRelated(eventType);
utilityFunctions.windowPostMessage(iframeContent, parcelData, domain);
pwaModel.createRelatedFromKnownError = null;
}
else if (pwaModel.createRelatedFromProblem) {
eventType = 'PROBLEM_CREATEINCIDENT';
parcelData = setupPwaDataFromProblemRelated(eventType);
utilityFunctions.windowPostMessage(iframeContent, parcelData, domain);
pwaModel.createRelatedFromProblem = null;
}
else {
$state.go('smartRecorder');
}
}
}
function knownerrorDraftFormLoaded() {
var domain = localStorage.getItem('pwaDomain'), parcelData, eventType, iframeContent = getPwaIFrame();
if (domain && iframeContent) {
if (pwaModel.createRelatedFromChange) {
eventType = 'CHANGE_CREATEKNOWNERROR';
parcelData = setupPwaDataFromChangeRelated(eventType);
utilityFunctions.windowPostMessage(iframeContent, parcelData, domain);
pwaModel.createRelatedFromChange = null;
}
}
}
function changeDraftFormLoaded() {
var domain = localStorage.getItem('pwaDomain'), parcelData, eventType, iframeContent = getPwaIFrame();
if (domain && iframeContent) {
if (pwaModel.createRelatedFromRelease) {
eventType = 'RELEASE_CREATECHANGE';
parcelData = setupPwaDataFromReleaseRelated(eventType);
utilityFunctions.windowPostMessage(iframeContent, parcelData, domain);
}
pwaModel.createRelatedFromRelease = null;
}
}
function workOrderDraftFormLoaded() {
var domain = localStorage.getItem('pwaDomain'), parcelData, eventType, iframeContent = getPwaIFrame();
if (domain && iframeContent) {
if (pwaModel.smartRecorderData) {
eventType = $scope.isSrcLiveChat ? 'LIVECHAT_CREATEWORKORDER' : 'SMARTRECORDER_CREATEWORKORDER';
parcelData = setupPwaDataFromSmartRecorder(eventType);
utilityFunctions.windowPostMessage(iframeContent, parcelData, domain);
pwaModel.draftCallMade = true;
pwaModel.smartRecorderData = null;
}
else if (pwaModel.createRelatedFromAssetData) {
eventType = 'ASSET_CREATEWORKORDER';
parcelData = setupPwaDataFromAssetRelated(eventType);
utilityFunctions.windowPostMessage(iframeContent, parcelData, domain);
pwaModel.createRelatedFromAssetData = null;
}
else if (pwaModel.createRelatedFromChange) {
eventType = 'CHANGE_CREATEWORKORDER';
parcelData = setupPwaDataFromChangeRelated(eventType);
utilityFunctions.windowPostMessage(iframeContent, parcelData, domain);
pwaModel.createRelatedFromChange = null;
}
else if (pwaModel.createRelatedFromKnownError) {
eventType = 'KNOWNERROR_CREATEWORKORDER';
parcelData = setupPwaDataFromKnownErrorRelated(eventType);
utilityFunctions.windowPostMessage(iframeContent, parcelData, domain);
pwaModel.createRelatedFromKnownError = null;
}
else if (pwaModel.createRelatedFromProblem) {
eventType = 'PROBLEM_CREATEWORKORDER';
parcelData = setupPwaDataFromProblemRelated(eventType);
utilityFunctions.windowPostMessage(iframeContent, parcelData, domain);
pwaModel.createRelatedFromProblem = null;
}
else {
$state.go('smartRecorder');
}
}
}
function problemDraftFormLoaded() {
var domain = localStorage.getItem('pwaDomain'), parcelData, eventType, iframeContent = getPwaIFrame();
if (domain && iframeContent) {
if (pwaModel.smartRecorderData) {
eventType = 'CHANGE_CREATEPROBLEM';
parcelData = setupPwaDataFromSmartRecorder(eventType);
utilityFunctions.windowPostMessage(iframeContent, parcelData, domain);
pwaModel.draftCallMade = true;
pwaModel.smartRecorderData = null;
}
else if (pwaModel.createRelatedFromChange) {
eventType = 'CHANGE_CREATEPROBLEM';
parcelData = setupPwaDataFromChangeRelated(eventType);
utilityFunctions.windowPostMessage(iframeContent, parcelData, domain);
pwaModel.createRelatedFromChange = null;
}
else if (pwaModel.createRelatedFromKnownError) {
eventType = 'KNOWNERROR_CREATEPROBLEM';
parcelData = setupPwaDataFromKnownErrorRelated(eventType);
utilityFunctions.windowPostMessage(iframeContent, parcelData, domain);
pwaModel.createRelatedFromKnownError = null;
}
else {
console.error('in problemDraftFormLoaded');
}
}
}
function sendTicketData() {
var domain = localStorage.getItem('pwaDomain'), parcelData, iframeContent = document.getElementById('task-pwa-frame') && document.getElementById('task-pwa-frame').contentWindow ? document.getElementById('task-pwa-frame').contentWindow : null;
if (domain && iframeContent) {
if (ticketModel.taskParent) {
parcelData = setupPwaDataforTask(ticketModel.taskParent);
utilityFunctions.windowPostMessage(iframeContent, parcelData, domain);
}
}
}
function checkNull(val) {
return val === null || val === undefined ? '' : val;
}
function getTicketStatusIndex(type, statusValue) {
var statusObj = _.filter(metadataModel.cache[type].statuses, { name: statusValue });
if (statusObj && statusObj.length === 1) {
return statusObj[0].index;
}
return null;
}
function setupPwaDataforTask(data) {
if (data.type === 'change') {
return setupDataForTaskChange(data);
}
else if (data.type === 'knownerror') {
return setupDataForTaskKnownError(data);
}
else if (data.type === 'problem') {
return setupDataForTaskProblem(data);
}
else if (data.type === 'activity') {
return setupDataForTaskActivity(data);
}
}
function setupDataForTaskChange(data) {
var contactData = data.contact === null || data.contact === undefined ? {} : data.contact;
var customerData = data.customer === null || data.customer === undefined ? {} : data.customer;
var locationData = data.location === null || data.location === undefined ? {} : data.location;
var supportGroup = data.supportGroup === null || data.supportGroup === undefined ? {} : data.supportGroup;
var supportGroupName = customerData.supportGroups && customerData.supportGroups.length ? customerData.supportGroups[0].name : '';
var assigneeData = data.assignee === null || data.assignee === undefined ? {} : data.assignee;
var statusIndex = getTicketStatusIndex(data.type, data.status.value);
return {
eventType: 'TASK_LOADED',
eventData: 'PARENT_FormName=CHG:Infrastructure Change;'
+ 'PARENT_DisplayId=' + checkNull(data.displayId) + ';'
+ 'PARENT_Id=' + checkNull(data.id) + ';'
+ 'PARENT_TemplateId=' + ';'
+ 'PARENT_TemplateName=' + ';'
+ 'PARENT_Status=' + checkNull(data.status.value) + ';'
+ 'PARENT_StatusIndex=' + checkNull(statusIndex) + ';'
+ 'PARENT_Summary=' + checkNull(data.summary) + ';'
+ 'PARENT_Priority=' + checkNull(data.priority) + ';'
+ 'PARENT_ContactFirstName=' + checkNull(contactData.firstName) + ';'
+ 'PARENT_ContactLastName=' + checkNull(contactData.lastName) + ';'
+ 'PARENT_ContactOrganization=' + checkNull(contactData.organization) + ';'
+ 'PARENT_ContactDepartment=' + checkNull(contactData.department) + ';'
+ 'PARENT_ContactPersonId=' + checkNull(contactData.personId) + ';'
+ 'PARENT_ContactPhone=' + checkNull(contactData.phone) + ';'
+ 'PARENT_ContactLoginId=' + checkNull(contactData.firstName) + ';'
+ 'PARENT_Company=' + checkNull(data.company.name) + ';'
+ 'PARENT_SiteName=' + checkNull(locationData.name) + ';'
+ 'PARENT_SiteRegion=' + checkNull(locationData.region) + ';'
+ 'PARENT_SiteGroup=' + checkNull(locationData.siteGroup) + ';'
+ 'PARENT_CustomerFirstName=' + checkNull(customerData.firstName) + ';'
+ 'PARENT_CustomerLastName=' + checkNull(customerData.lastName) + ';'
+ 'PARENT_CustomerFullName=' + checkNull(customerData.fullName) + ';'
+ 'PARENT_CustomerLoginId=' + checkNull(customerData.loginId) + ';'
+ 'PARENT_CustomerPhone=' + checkNull(customerData.phone) + ';'
+ 'PARENT_CustomerIsSupportStaff=' + checkNull(customerData.isSupportStaff) + ';'
+ 'PARENT_CustomerpersonId=' + checkNull(customerData.personId) + ';'
+ 'PARENT_CustomerCompany=' + checkNull(customerData.company.name) + ';'
+ 'PARENT_CustomerSiteName=' + checkNull(locationData.name) + ';'
+ 'PARENT_CustomerSiteRegion=' + checkNull(locationData.region) + ';'
+ 'PARENT_CustomerSiteGroup=' + checkNull(locationData.siteGroup) + ';'
+ 'PARENT_CustomerSiteId=' + checkNull(locationData.siteId) + ';'
+ 'PARENT_Assignee=' + checkNull(assigneeData.fullName) + ';'
+ 'PARENT_AssigneeGroup=' + checkNull(supportGroupName) + ';'
+ 'PARENT_AssigneeGroupId=' + checkNull(supportGroup.id) + ';'
+ 'PARENT_TaskPhaseId=' + checkNull(data.taskPhaseId) + ';'
+ 'PARENT_TaskPhaseName=' + checkNull(data.taskPhaseName) + ';'
};
}
function setupDataForTaskKnownError(data) {
var contactData = data.contact === null || data.contact === undefined ? {} : data.contact;
var customerData = data.customer === null || data.customer === undefined ? {} : data.customer;
var assigneeSiteData = data.assignee.site === null || data.assignee.site === undefined ? {} : data.assignee.site;
var supportGroup = data.supportGroup === null || data.supportGroup === undefined ? {} : data.supportGroup;
var assigneeData = data.assignee === null || data.assignee === undefined ? {} : data.assignee;
var supportGroupName = assigneeData.supportGroups && assigneeData.supportGroups.length ? assigneeData.supportGroups[0].name : '';
var statusIndex = getTicketStatusIndex(data.type, data.status.value);
return {
eventType: 'TASK_LOADED',
eventData: 'PARENT_FormName=PBM:Known Error;'
+ 'PARENT_DisplayId=' + checkNull(data.displayId) + ';'
+ 'PARENT_Id=' + checkNull(data.id) + ';'
+ 'PARENT_TemplateId=' + ';'
+ 'PARENT_TemplateName=' + ';'
+ 'PARENT_Status=' + checkNull(data.status.value) + ';'
+ 'PARENT_StatusIndex=' + checkNull(statusIndex) + ';'
+ 'PARENT_Summary=' + checkNull(data.summary) + ';'
+ 'PARENT_Priority=' + checkNull(data.priority) + ';'
+ 'PARENT_ContactFirstName=' + checkNull(contactData.firstName) + ';'
+ 'PARENT_ContactLastName=' + checkNull(contactData.lastName) + ';'
+ 'PARENT_ContactOrganization=' + checkNull(contactData.organization) + ';'
+ 'PARENT_ContactDepartment=' + checkNull(contactData.department) + ';'
+ 'PARENT_ContactPersonId=' + checkNull(contactData.personId) + ';'
+ 'PARENT_ContactPhone=' + checkNull(contactData.phone) + ';'
+ 'PARENT_ContactLoginId=' + checkNull(contactData.firstName) + ';'
+ 'PARENT_Company=' + checkNull(data.company.name) + ';'
+ 'PARENT_SiteName=' + checkNull(assigneeSiteData.name) + ';'
+ 'PARENT_SiteRegion=' + checkNull(assigneeSiteData.region) + ';'
+ 'PARENT_SiteGroup=' + checkNull(assigneeSiteData.siteGroup) + ';'
+ 'PARENT_CustomerFirstName=' + checkNull(customerData.firstName) + ';'
+ 'PARENT_CustomerLastName=' + checkNull(customerData.lastName) + ';'
+ 'PARENT_CustomerFullName=' + checkNull(customerData.fullName) + ';'
+ 'PARENT_CustomerLoginId=' + checkNull(customerData.loginId) + ';'
+ 'PARENT_CustomerPhone=' + checkNull(customerData.phone) + ';'
+ 'PARENT_CustomerIsSupportStaff=' + checkNull(customerData.isSupportStaff) + ';'
+ 'PARENT_CustomerpersonId=' + checkNull(customerData.personId) + ';'
+ 'PARENT_CustomerCompany=' + checkNull(assigneeData.company.name) + ';'
+ 'PARENT_CustomerSiteName=' + checkNull(assigneeSiteData.name) + ';'
+ 'PARENT_CustomerSiteRegion=' + checkNull(assigneeSiteData.region) + ';'
+ 'PARENT_CustomerSiteGroup=' + checkNull(assigneeSiteData.siteGroup) + ';'
+ 'PARENT_CustomerSiteId=' + checkNull(assigneeSiteData.siteId) + ';'
+ 'PARENT_Assignee=' + checkNull(assigneeData.fullName) + ';'
+ 'PARENT_AssigneeGroup=' + checkNull(supportGroupName) + ';'
+ 'PARENT_AssigneeGroupId=' + checkNull(supportGroup.id) + ';'
};
}
function setupDataForTaskProblem(data) {
var contactData = data.contact === null || data.contact === undefined ? {} : data.contact;
var customerData = data.customer === null || data.customer === undefined ? {} : data.customer;
var assigneeSiteData = data.assignee.site === null || data.assignee.site === undefined ? {} : data.assignee.site;
var supportGroup = data.supportGroup === null || data.supportGroup === undefined ? {} : data.supportGroup;
var assigneeData = data.assignee === null || data.assignee === undefined ? {} : data.assignee;
var supportGroupName = assigneeData.supportGroups && assigneeData.supportGroups.length ? assigneeData.supportGroups[0].name : '';
var statusIndex = getTicketStatusIndex(data.type, data.status.value);
return {
eventType: 'TASK_LOADED',
eventData: 'PARENT_FormName=PBM:Problem Investigation;'
+ 'PARENT_DisplayId=' + checkNull(data.displayId) + ';'
+ 'PARENT_Id=' + checkNull(data.id) + ';'
+ 'PARENT_TemplateId=' + ';'
+ 'PARENT_TemplateName=' + ';'
+ 'PARENT_Status=' + checkNull(data.status.value) + ';'
+ 'PARENT_StatusIndex=' + checkNull(statusIndex) + ';'
+ 'PARENT_Summary=' + checkNull(data.summary) + ';'
+ 'PARENT_Priority=' + checkNull(data.priority) + ';'
+ 'PARENT_ContactFirstName=' + checkNull(contactData.firstName) + ';'
+ 'PARENT_ContactLastName=' + checkNull(contactData.lastName) + ';'
+ 'PARENT_ContactOrganization=' + checkNull(contactData.organization) + ';'
+ 'PARENT_ContactDepartment=' + checkNull(contactData.department) + ';'
+ 'PARENT_ContactPersonId=' + checkNull(contactData.personId) + ';'
+ 'PARENT_ContactPhone=' + checkNull(contactData.phone) + ';'
+ 'PARENT_ContactLoginId=' + checkNull(contactData.firstName) + ';'
+ 'PARENT_Company=' + checkNull(data.company.name) + ';'
+ 'PARENT_SiteName=' + checkNull(assigneeSiteData.name) + ';'
+ 'PARENT_SiteRegion=' + checkNull(assigneeSiteData.region) + ';'
+ 'PARENT_SiteGroup=' + checkNull(assigneeSiteData.siteGroup) + ';'
+ 'PARENT_CustomerFirstName=' + checkNull(customerData.firstName) + ';'
+ 'PARENT_CustomerLastName=' + checkNull(customerData.lastName) + ';'
+ 'PARENT_CustomerFullName=' + checkNull(customerData.fullName) + ';'
+ 'PARENT_CustomerLoginId=' + checkNull(customerData.loginId) + ';'
+ 'PARENT_CustomerPhone=' + checkNull(customerData.phone) + ';'
+ 'PARENT_CustomerIsSupportStaff=' + checkNull(customerData.isSupportStaff) + ';'
+ 'PARENT_CustomerpersonId=' + checkNull(customerData.personId) + ';'
+ 'PARENT_CustomerCompany=' + checkNull(assigneeData.company.name) + ';'
+ 'PARENT_CustomerSiteName=' + checkNull(assigneeSiteData.name) + ';'
+ 'PARENT_CustomerSiteRegion=' + checkNull(assigneeSiteData.region) + ';'
+ 'PARENT_CustomerSiteGroup=' + checkNull(assigneeSiteData.siteGroup) + ';'
+ 'PARENT_CustomerSiteId=' + checkNull(assigneeSiteData.siteId) + ';'
+ 'PARENT_Assignee=' + checkNull(assigneeData.fullName) + ';'
+ 'PARENT_AssigneeGroup=' + checkNull(supportGroupName) + ';'
+ 'PARENT_AssigneeGroupId=' + checkNull(supportGroup.id) + ';'
};
}
function setupDataForTaskActivity(data) {
var contactData = data.contact === null || data.contact === undefined ? {} : data.contact;
var customerData = data.customer === null || data.customer === undefined ? {} : data.customer;
var assigneeSiteData = data.assignee.site === null || data.assignee.site === undefined ? {} : data.assignee.site;
var supportGroup = data.supportGroup === null || data.supportGroup === undefined ? {} : data.supportGroup;
var assigneeData = data.assignee === null || data.assignee === undefined ? {} : data.assignee;
var supportGroupName = assigneeData.supportGroups && assigneeData.supportGroups.length ? assigneeData.supportGroups[0].name : '';
var statusIndex = getTicketStatusIndex(data.type, data.status.value);
return {
eventType: 'TASK_LOADED',
eventData: 'PARENT_FormName=AAS:Activity;'
+ 'PARENT_DisplayId=' + checkNull(data.displayId) + ';'
+ 'PARENT_Id=' + checkNull(data.id) + ';'
+ 'PARENT_TemplateId=' + ';'
+ 'PARENT_TemplateName=' + ';'
+ 'PARENT_Status=' + checkNull(data.status.value) + ';'
+ 'PARENT_StatusIndex=' + checkNull(statusIndex) + ';'
+ 'PARENT_Summary=' + checkNull(data.summary) + ';'
+ 'PARENT_Priority=' + checkNull(data.priority) + ';'
+ 'PARENT_ContactFirstName=' + checkNull(contactData.firstName) + ';'
+ 'PARENT_ContactLastName=' + checkNull(contactData.lastName) + ';'
+ 'PARENT_ContactOrganization=' + checkNull(contactData.organization) + ';'
+ 'PARENT_ContactDepartment=' + checkNull(contactData.department) + ';'
+ 'PARENT_ContactPersonId=' + checkNull(contactData.personId) + ';'
+ 'PARENT_ContactPhone=' + checkNull(contactData.phone) + ';'
+ 'PARENT_ContactLoginId=' + checkNull(contactData.firstName) + ';'
+ 'PARENT_Company=' + checkNull(data.company.name) + ';'
+ 'PARENT_SiteName=' + checkNull(assigneeSiteData.name) + ';'
+ 'PARENT_SiteRegion=' + checkNull(assigneeSiteData.region) + ';'
+ 'PARENT_SiteGroup=' + checkNull(assigneeSiteData.siteGroup) + ';'
+ 'PARENT_CustomerFirstName=' + checkNull(customerData.firstName) + ';'
+ 'PARENT_CustomerLastName=' + checkNull(customerData.lastName) + ';'
+ 'PARENT_CustomerFullName=' + checkNull(customerData.fullName) + ';'
+ 'PARENT_CustomerLoginId=' + checkNull(customerData.loginId) + ';'
+ 'PARENT_CustomerPhone=' + checkNull(customerData.phone) + ';'
+ 'PARENT_CustomerIsSupportStaff=' + checkNull(customerData.isSupportStaff) + ';'
+ 'PARENT_CustomerpersonId=' + checkNull(customerData.personId) + ';'
+ 'PARENT_CustomerCompany=' + checkNull(data.company.name) + ';'
+ 'PARENT_CustomerSiteName=' + checkNull(assigneeSiteData.name) + ';'
+ 'PARENT_CustomerSiteRegion=' + checkNull(assigneeSiteData.region) + ';'
+ 'PARENT_CustomerSiteGroup=' + checkNull(assigneeSiteData.siteGroup) + ';'
+ 'PARENT_CustomerSiteId=' + checkNull(assigneeSiteData.siteId) + ';'
+ 'PARENT_Assignee=' + checkNull(assigneeData.fullName) + ';'
+ 'PARENT_AssigneeGroup=' + checkNull(supportGroupName) + ';'
+ 'PARENT_AssigneeGroupId=' + checkNull(supportGroup.id) + ';'
};
}
function setFormSource() {
if (pwaModel.taskFrom === 'Scratch' || pwaModel.taskFrom === 'Template') {
var midtierUrl = localStorage.getItem('midtierUrl'), homeServer = localStorage.getItem('homeServer'), context = 'Task', formView = 'SV_Create', crossLaunchContext = 'TASK';
if (pwaModel.taskFrom === 'Scratch') {
var formName = 'SHR:SV_TicketCreate/SV_TicketCreate';
if (homeServer) {
$scope.formSrc = $sce.trustAsResourceUrl(midtierUrl + '/pwa/#/forms/' + homeServer + '/' + formName + '?origin=' + window.location.origin + '&targetForm=' + context + '&targetView=' + formView + '&context=' + crossLaunchContext + '&mode=GET');
}
else {
$scope.formSrc = $sce.trustAsResourceUrl(midtierUrl + '/pwa/#/goto/' + formName + '?origin=' + window.location.origin + '&targetForm=' + context + '&targetView=' + formView + '&context=' + crossLaunchContext + '&mode=GET');
}
}
else {
var formName = 'TMS:TemplateSelection/SV_TMS_TemplateSearch';
if (homeServer) {
$scope.formSrc = $sce.trustAsResourceUrl(midtierUrl + '/pwa/#/forms/' + homeServer + '/' + formName + '?origin=' + window.location.origin + '&context=' + crossLaunchContext + '&mode=GET');
}
else {
$scope.formSrc = $sce.trustAsResourceUrl(midtierUrl + '/pwa/#/goto/' + formName + '?origin=' + window.location.origin + '&context=' + crossLaunchContext + '&mode=GET');
}
}
}
}
window.addEventListener('beforeunload', function (event) {
if (event) {
postWindowCloseMessageToLiveChat();
}
});
function postWindowCloseMessageToLiveChat() {
// post message to live chat
if ($stateParams.isSrcLiveChat === 'true' && window.opener) {
window.opener.postMessage({ event: events.DRAFT_TICKET_CLOSED }, window.location && window.location.origin); //NOSONAR
}
}
}
]);
})();