110 lines
6.0 KiB
JavaScript
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;
|
|
};
|
|
}]);
|
|
}());
|