Пример #1
0
        // !! 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);
        }
Пример #2
0
        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);
        }