// !! IMPORTANT NOTE: PrivateTalk, PrivateTalkReceiver, PrivateTalkTeamReceiver models should have [JsonIgnore] for that method to work properly. public PrivateTalkInsideOut GetNewUnreadPrivateTalk(int privateTalkId, string thisMember) { //[Type(MyOrReceived), PrivateTalk, MessageCountModel, Receivers, TeamReceivers] DateTimeOffset lastSeen = (context.PrivateTalkLastSeen.Where(pt => pt.PrivateTalkId == privateTalkId && pt.Visitor == thisMember).FirstOrDefault()?.LastSeen) ?? new DateTimeOffset(DateTime.MinValue, TimeSpan.Zero); int messageCount = context.PrivateTalkMessage.Where(ptm => ptm.PrivateTalkId == privateTalkId && ptm.Sender != thisMember && ptm.DateTimeSent > lastSeen).Count(); //messages belongs to others. if (messageCount > 0) { PrivateTalk pTalk = this.PrivateTalks.Where(pt => pt.PrivateTalkId == privateTalkId).FirstOrDefault(); pTalk = new PrivateTalk { PrivateTalkId = pTalk.PrivateTalkId, Owner = pTalk.Owner, Sender = pTalk.Sender, Thread = pTalk.Thread, DateTimeCreated = pTalk.DateTimeCreated }; bool my = pTalk.Sender == thisMember; MessageCountModel mcm = new MessageCountModel { PrivateTalkId = privateTalkId, MessagesCount = messageCount, OrderingCriterion = DateTimeOffset.MinValue }; PrivateTalkReceiver[] ptr = PrivateTalkReceivers.Where(pt => pt.PrivateTalkId == privateTalkId)?.ToArray(); PrivateTalkTeamReceiver[] pttr = PrivateTalkTeamReceivers.Where(pt => pt.PrivateTalkId == privateTalkId)?.ToArray(); return(new PrivateTalkInsideOut { My = my, PrivateTalk = pTalk, MessageCountModel = mcm, Receivers = ptr, TeamReceivers = pttr }); } return(null); }
public MessageCountModel Get() { var mcm = new MessageCountModel { InboxCount = MessageHelper.Inbox(User.Identity.Name).Count(), SendmailCount = MessageHelper.SendMail(User.Identity.Name).Count(), MarkCount = MessageHelper.Mark(User.Identity.Name).Count(), TrashCount = MessageHelper.Trash(User.Identity.Name).Count() }; return(mcm); }