"use strict"; /** * Value object for asset item. * * @constructor */ function ChatHistoryItemVO() { this.id = ''; this.mucJid = ''; // database fields this.messagesCount = 0; this.connection = null; this.startDate = null; this.lastActivity = null; this.participants = []; this.roster = {}; //this.messages = []; } // inherit BaseVO ChatHistoryItemVO.prototype = new BaseVO(); // correct the constructor pointer ChatHistoryItemVO.prototype.constructor = ChatHistoryItemVO; /** * @override * @return {Array} */ ChatHistoryItemVO.prototype.getProps = function () { return ['id', 'mucJid', 'messagesCount', 'lastActivity', 'startDate', 'lastActivity', 'participants', 'connection']; }; /** * @override */ ChatHistoryItemVO.prototype.postBuild = function () { }; ChatHistoryItemVO.prototype.listParticipants = function () { var namesList = []; _.each(this.roster, function (userProfile, userId) { if (userProfile) { namesList.push(userProfile.fullName || userProfile.displayName); } else { namesList.push(userId.split('_')[0]); } }); return namesList.join(', '); }; ChatHistoryItemVO.prototype.getStartDate = function () { return moment(this.startDate).calendar(); }; ChatHistoryItemVO.prototype.getEndDate = function () { return moment(this.lastActivity).calendar(); }; ChatHistoryItemVO.prototype.fillRoster = function (cachedProfiles) { var self = this; _.each(this.participants, function (userId) { self.roster[userId] = cachedProfiles[userId]; if (self.roster[userId] && self.roster[userId].thumbnail) { self.selectedUser = self.roster[userId]; } }); if (!this.selectedUser) { var selectedId = this.participants[0]; this.selectedUser = this.roster[selectedId]; } }; ChatHistoryItemVO.prototype.generateRelatedItemTitle = function () { var relatedItemTitle = '', summary, displayId; if (this.parent) { if (this.parent.ticketType && this.parent.ticketType === EntityVO.TYPE_ASSET) { summary = this.parent.name, displayId = EntityVO.TYPE_ASSET.toUpperCase(); } else { summary = this.parent.summary, displayId = this.parent.displayId; } relatedItemTitle = _.compact([displayId, summary]).join(': '); } return relatedItemTitle; }; /*ChatHistoryItemVO.prototype.generateChatTopic = function() { if(this.parent){ var topicParts = [] if(this.parent.ticketType && this.parent.ticketType == EntityVO.TYPE_ASSET){ topicParts = [EntityVO.TYPE_ASSET.toUpperCase(),this.parent.name]; } else{ topicParts = [this.parent.displayId,this.parent.summary]; } return topicParts.join(": "); } } ChatHistoryItemVO.prototype.getParticipantJIDsArray = function() { var JIDsList = []; _.each(this.participants, function(user){ var jid = Strophe.getNodeFromJid(user.jid); JIDsList.push(jid); }); return JIDsList; } ChatHistoryItemVO.prototype.generateRosterSummary = function() { var self = this; if(this.participants){ var participantNamesList = [], participantsCount = _.size(this.participants); _.each(this.participants, function(user, nick) { if(nick == self.room.nick) return; var userJID = user.jid.split("@")[0], userProfile = self.roster[userJID] || {}; if(participantsCount <= 3){ var userName = userProfile.firstName ? (userProfile.fullName || userProfile.displayName) : nick.replace("_"," "); } else{ var userName = userProfile.firstName ? userProfile.firstName : nick.split("_")[0]; }; participantNamesList.push(userName); }) if(participantNamesList.length){ return participantNamesList.join(", "); } } return ""; }*/