Beispiel #1
0
        private Task <ChatVisitModel[]> GetChatVisits(ChatsFilter model)
        {
            var relationsInitQuery = Query <EccChatUserRelation>()
                                     .Where(x => x.UserId == UserId)
                                     .Where(x => x.Chat.IsSystem == model.IsSystem && x.Chat.IsDialog == model.IsDialog);

            if (!string.IsNullOrWhiteSpace(model.Type))
            {
                relationsInitQuery = relationsInitQuery.Where(x => x.Chat.Type == model.Type);
            }

            return(relationsInitQuery
                   .Select(t => new ChatVisitModel
            {
                ChatId = t.ChatId,
                LastVisitUtcTicks = t.LastVisitUtcTicks,
                CountOfUnread = t.Chat.Messages.Count(z => z.SentOnUtcTicks > t.LastVisitUtcTicks && z.SenderUserId != UserId)
            })
                   .ToArrayAsync());
        }
Beispiel #2
0
        /// <summary>
        /// Получить список непрочитанных сообщений
        /// </summary>
        /// <returns></returns>
        public async Task <int> GetCountOfUnreadMessages(ChatsFilter model)
        {
            var chatRels = await GetChatVisits(model);

            return(chatRels.Sum(x => x.CountOfUnread));
        }