'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: '', 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 = { ''': '\'', '"': '"', '&fs;': '/', '&bs;': '\\', '<': '<', '>': '>', '&': '&' }; 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 } } } ]); })();