225 lines
9.9 KiB
JavaScript
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');
|
|
};
|
|
}]);
|
|
})();
|