"use strict"; (function () { 'use strict'; angular.module('consoleModule') .service('consoleService', ['$resource', function ($resource) { var resource = $resource('/smartit/rest/v2/person/workitems/get', {}, { getTicketList: { method: 'POST', isArray: true }, getKnowledgeList: { url: '/smartit/rest/person/knowledge/get', method: 'POST', isArray: true }, getTicketAvailableColumnsList: { url: '/smartit/rest/v2/foundation/consolecolumn/available/search', method: 'GET', isArray: true }, consoleRefreshMetadata: { url: '/smartit/rest/v2/foundation/consolecolumn/metadata/refresh', method: 'GET', isArray: true }, getTicketStats: { url: '/smartit/rest/v2/foundation/mtcstats/get', method: 'POST', isArray: true }, getKnowledgeStats: { url: '/smartit/restapi/foundation/KAStats/get', method: 'POST', isArray: true }, saveTicketFilterConfiguration: { url: '/smartit/rest/mtc/preference/:clientType/MTC_FILTER_GROUP', method: 'PUT', isArray: false, transformResponse: function (data) { return { id: data }; } }, saveKnowledgeFilterConfiguration: { url: '/smartit/rest/mtc/preference/:clientType/KAC_FILTER_GROUP', method: 'PUT', isArray: false, transformResponse: function (data) { return { id: data }; } }, saveCIFilterConfiguration: { url: '/smartit/rest/mtc/preference/:clientType/CI_FILTER_GROUP', method: 'PUT', isArray: false, transformResponse: function (data) { return { id: data }; } }, removeFilterConfiguration: { url: '/smartit/rest/mtc/preference/', method: 'DELETE', isArray: false }, getAssetList: { url: '/smartit/rest/asset/list/get', method: 'POST', isArray: true }, getRelatives: { url: '/smartit/rest/asset/relations', method: 'POST', isArray: true }, getRelationshipTypes: { url: '/smartit/rest/asset/relationshiptypes', method: 'POST', isArray: true } }); this.getTicketList = function (criteria) { return resource.getTicketList(criteria).$promise.then(function (data) { return { itemList: processAssignmentTickets(data), exceedChunkSize: data[0].items[0].exceedsChunkSize, totalCount: data[0].items[0].totalMatches }; }); }; this.getKnowledgeList = function (criteria) { return resource.getKnowledgeList(criteria).$promise.then(function (data) { return { itemList: processAssignmentKnowledge(data), exceedChunkSize: data[0].items[0].exceedsChunkSize, totalCount: data[0].items[0].totalMatches }; }); }; this.getTicketAvailableColumnsList = function () { return resource.getTicketAvailableColumnsList().$promise.then(function (data) { return { itemList: data }; }); }; this.consoleRefreshMetadata = function () { return resource.consoleRefreshMetadata().$promise.then(function (data) { return { itemList: data }; }); }; this.getTicketStats = function (filterCriteria, stats) { return resource.getTicketStats({ filterCriteria: filterCriteria, stats: stats }).$promise.then(function (data) { return data[0].items[0].objects; }); }; this.getKnowledgeStats = function (filterCriteria, stats) { return resource.getKnowledgeStats({ filterCriteria: filterCriteria, stats: stats }).$promise.then(function (data) { return data[0].items[0].objects; }); }; this.saveTicketFilterConfiguration = function (name, filterCriteria) { var params = { name: name, criteria: filterCriteria }; return resource.saveTicketFilterConfiguration({ clientType: 'SHARED' }, params).$promise; }; this.saveKnowledgeFilterConfiguration = function (name, filterCriteria) { var params = { name: name, criteria: filterCriteria }; return resource.saveKnowledgeFilterConfiguration({ clientType: 'SHARED' }, params).$promise; }; this.saveCIFilterConfiguration = function (name, filterCriteria) { var params = { name: name, criteria: filterCriteria }; return resource.saveCIFilterConfiguration({ clientType: 'SHARED' }, params).$promise; }; this.removeFilterConfiguration = function (name, id) { return resource.removeFilterConfiguration({ name: name, id: id }).$promise; }; this.getAssetList = function (criteria, source) { var query = {}; if (source) { query.source = source; } return resource.getAssetList(query, criteria).$promise.then(function (data) { return { itemList: processAssignmentAsset(data), exceedChunkSize: data[0].items[0].exceedsChunkSize, totalCount: data[0].items[0].totalMatches }; }); }; this.getRelatives = function (criteria) { return resource.getRelatives(criteria).$promise.then(function (data) { var result = processRelatives(data); return { relatives: result.relatives, totalCount: result.actualCount === 0 ? 0 : data[0].items[0].totalMatches - (result.initialCount - result.actualCount) }; }); }; this.getRelationshipTypes = function (criteria) { return resource.getRelationshipTypes(criteria).$promise.then(function (data) { return processRelationshipTypes(data); }); }; var processAssignmentTickets = function (data) { var workItems = data[0].items[0].objects || []; return workItems.map(function (workitem) { return new TicketConsoleItemVO().build(workitem); }); }; var processAssignmentKnowledge = function (data) { var workItems = data[0].items[0].objects || []; return workItems.map(function (workitem) { return new KnowledgeConsoleItemVO().build(workitem); }); }; var processAssignmentAsset = function (data) { var workItems = data[0].items[0].objects || []; return workItems.map(function (workitem) { return new AssetConsoleItemVO().build(workitem); }); }; var processRelatives = function (data) { var relatives = (data[0] && data[0].items[0] && data[0].items[0].objects) || []; var initialCount = relatives.length; var mapped = _.map(relatives, function (relative) { return new RelationItemVO().build(relative); }); var groupedByClassId = _.groupBy(mapped, 'relationshipClassId'), result = []; _.forEach(groupedByClassId, function (group) { var groupedById = _.groupBy(group, 'realObject.instanceId'); _.forEach(groupedById, function (group) { var first = group.length ? group[0] : {}; for (var i = 1; i < group.length; i++) { first.realObject.hasImpact = first.realObject.hasImpact || group[i].realObject.hasImpact; first.realObject.isChild = first.realObject.isChild || group[i].realObject.isChild; first.realObject.isParent = first.realObject.isParent || group[i].realObject.isParent; } result.push(first); }); }); return { initialCount: initialCount, actualCount: result.length, relatives: result }; }; var processRelationshipTypes = function (data) { return _.sortBy(data, 'label'); }; }]); })();