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