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); //} }
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); } }
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); } }