SmartIT_Extensions/BMC/smart-it-full-helix/scripts/app/console/console-service.js

225 lines
9.9 KiB
JavaScript

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