コード例 #1
0
        public static Chat GetChat(BackofficeUnitOfWork context, long chatId, string userId)
        {
            //using (var context = new BackofficeUnitOfWork())
            //{
            Chat chat = context.Chat
                        .Fetch()
                        .Include(i => i.AspNetUsers)
                        .Include(i => i.AspNetUsers.Profile)
                        .Include(i => i.ChatMember)
                        .Include(i => i.ChatMessage)
                        .Include(i => i.ChatNotification)
                        .Include(i => i.ChatNote)
                        //.Include(i => i.ChatMessage.OrderByDescending(j => j.CreateDate).Take(20))
                        .Where(i => i.ID == chatId && i.Active)
                        //.Select(i => i)
                        .OrderByDescending(i => i.LastChangeDate)
                        .FirstOrDefault();

            if (null != chat && null != chat.ChatMessage)
            {
                ChatDelete chatDelete = context.ChatDelete.Fetch().Where(i => i.ID_Chat == chatId && i.ID_User == userId).FirstOrDefault();
                if (null == chatDelete)
                {
                    chat.ChatMessage = chat.ChatMessage.OrderByDescending(j => j.CreateDate).Take(20).OrderBy(j => j.CreateDate).ToList();
                }
                else
                {
                    chat.ChatMessage = chat.ChatMessage.Where(i => i.CreateDate > chatDelete.LastChatDeleteDate).OrderByDescending(j => j.CreateDate).Take(20).OrderBy(j => j.CreateDate).ToList();
                }
            }

            return(chat);
            //}
        }
コード例 #2
0
        public static bool MarkChatAsUnread(long chatId, string userId)
        {
            using (var context = new BackofficeUnitOfWork())
            {
                ChatMember chatMember = context.ChatMember
                                        .Fetch()
                                        .Where(i => i.ID_Chat == chatId && i.ID_User == userId)
                                        .FirstOrDefault();

                if (null == chatMember)
                {
                    return(false);
                }

                ChatDelete deleteEntry = context.ChatDelete
                                         .Fetch()
                                         .Where(i => i.ID_Chat == chatId && i.ID_User == userId)
                                         .FirstOrDefault();

                ChatMessage lastMessage = null;
                if (null == deleteEntry)
                {
                    lastMessage = context.ChatMessage
                                  .Fetch()
                                  .Where(i => i.ID_Chat == chatId && i.ID_User != userId)
                                  .OrderByDescending(i => i.CreateDate)
                                  .FirstOrDefault();
                }
                else
                {
                    lastMessage = context.ChatMessage
                                  .Fetch()
                                  .Where(i => i.ID_Chat == chatId && i.ID_User != userId && i.CreateDate > deleteEntry.LastChatDeleteDate)
                                  .OrderByDescending(i => i.CreateDate)
                                  .FirstOrDefault();
                }

                if (null == lastMessage)
                {
                    return(false);
                }

                lastMessage.ReadDate       = null;
                lastMessage.LastChangeDate = DateTime.Now;
                context.ChatMessage.Update(lastMessage);
                context.Save();

                return(true);
            }
        }
コード例 #3
0
        public static bool DeleteChat(long chatId, string userId)
        {
            using (var context = new BackofficeUnitOfWork())
            {
                ChatMember chatMember = context.ChatMember
                                        .Fetch()
                                        .Where(i => i.ID_Chat == chatId && i.ID_User == userId)
                                        .FirstOrDefault();

                if (null == chatMember)
                {
                    return(false);
                }

                ChatDelete deleteEntry = context.ChatDelete
                                         .Fetch()
                                         .Where(i => i.ID_Chat == chatId && i.ID_User == userId)
                                         .FirstOrDefault();

                if (null == deleteEntry)
                {
                    context.ChatDelete.Create(new ChatDelete()
                    {
                        ID_Chat            = chatId,
                        ID_User            = userId,
                        LastChatDeleteDate = DateTime.Now
                    });
                }
                else
                {
                    deleteEntry.LastChatDeleteDate = DateTime.Now;
                    context.ChatDelete.Update(deleteEntry);
                }

                context.Save();

                return(true);
            }
        }