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

110 lines
6.0 KiB
JavaScript

"use strict";
(function () {
'use strict';
angular.module('feedModule')
.service('feedService', ['$resource', 'events', function ($resource, events) {
var resource = $resource('', {}, {
getUpdateFeedItems: { url: '/smartit/rest/v2/following/stream', method: 'GET', isArray: true },
getActivityFeedItems: { url: '/smartit/rest/timeline/:type/:id', method: 'GET', isArray: true },
addActivityFeedWorknote: { url: '/smartit/rest/:type/worknote/:id', method: 'PUT', isArray: true },
addActivityFeedWorknoteBulk: { url: '/smartit/rest/ticket/worknote/bulk', method: 'POST', isArray: true },
addActivityFeedWorknoteWithFlag: {
url: '/smartit/rest/:type/flagUpdate/:id',
method: 'PUT',
isArray: true
},
unpinFeedItem: { url: '/smartit/rest/subscription/unpin/:type/:id', method: 'POST', isArray: false }
});
this.getUpdateFeedItems = function (params) {
return resource.getUpdateFeedItems(params).$promise.then(function (data) {
var result = {};
result.items = data[0].items.map(function (item) {
var feedItem = new FeedItemVO().build(item);
// process attachments
if (feedItem.hasAttachments()) {
feedItem.attachments = feedItem.note.attachments.map(function (attachment) {
return new AttachmentVO().build(attachment);
});
}
if (feedItem.isFlag()) {
feedItem.note.repliesCount = item.note.repliesCount;
feedItem.note.multipleReplies = (feedItem.note.repliesCount > 1) ? true : false;
feedItem.replies = item.replies;
}
//Process Replies
if (feedItem.isFlag() && feedItem.hasReplies()) {
feedItem.replies = feedItem.replies.map(function (reply) {
reply.createDateLabel = moment(reply.createDate).fromNow();
if (reply.event && (reply.eventType === events.KA_UNFLAGGED)) {
feedItem.threadUnflagged = true;
}
return new FeedItemVO().build(reply);
});
}
return feedItem;
});
if (data[0].followCount) {
result.followCount = data[0].followCount;
}
result.syncTime = data[0].syncTime;
return result;
});
};
this.getActivityFeedItems = function (entity, params) {
return resource.getActivityFeedItems(angular.extend({}, entity, params)).$promise.then(function (data) {
var result;
if (data[0].timeline && data[0].timeline === "UNAUTHORIZED") {
result = {
"isNotAuthorized": true
};
}
else {
result = data[0].items.map(function (item) {
var feedItem = new FeedItemVO().build(item);
// process attachments
if (feedItem.hasAttachments()) {
feedItem.attachments = feedItem.note.attachments.map(function (attachment) {
return new AttachmentVO().build(attachment);
});
}
if (feedItem.isFlag()) {
feedItem.note.repliesCount = item.note.repliesCount;
feedItem.note.multipleReplies = (feedItem.note.repliesCount > 1) ? true : false;
feedItem.replies = item.replies;
}
//Process Replies
if (feedItem.isFlag() && feedItem.hasReplies()) {
feedItem.replies = feedItem.replies.map(function (reply) {
reply.createDateLabel = moment(reply.createDate).fromNow();
if (reply.event && (reply.eventType === events.KA_UNFLAGGED)) {
feedItem.threadUnflagged = true;
}
return new FeedItemVO().build(reply);
});
}
if (feedItem.hasComments() && feedItem.comments) {
feedItem.comments = feedItem.comments.map(function (comment) {
return new CommentVO().build(comment);
});
}
return feedItem;
});
}
return result || [];
});
};
this.addActivityFeedWorknote = function (entity, params) {
return resource.addActivityFeedWorknote(entity, params).$promise;
};
this.addActivityFeedWorknoteBulk = function (request) {
return resource.addActivityFeedWorknoteBulk(request).$promise;
};
this.addActivityFeedWorknoteWithFlag = function (entity, params) {
return resource.addActivityFeedWorknoteWithFlag(entity, params).$promise;
};
this.unpinFeedItem = function (entity) {
return resource.unpinFeedItem(entity, {}).$promise;
};
}]);
}());