public async Task DeleteMessage(int msgId, int chatId) { string currentUserId = repository.ChatMessages. FirstOrDefault(m => m.Id == msgId).UserId; repository.DeleteChatMessage(msgId); Chat chat = repository.Chats.FirstOrDefault(c => c.ChatId == chatId); //if lastMsg not exists if (chat.Messages == null) { //Remove this chat from Index-Chat and Header-chat } else { //retrun new lastMsg ChatMessage lastMsg = chat.Messages.LastOrDefault(); string senderId = lastMsg.UserId; AppUser sender = userManager.Users .FirstOrDefault(u => u.Id == senderId); string senderPhoto = (sender.ProfilePhotoUrl != null) ? $"/UsersData/{sender.ProfilePhotoUrl}" : "/defaultAvatar.png"; string senderName = (sender.FirstName == null && sender.LastName == null) ? sender.UserName : $"{sender.FirstName} {sender.LastName}"; string recipientId = (chat.User1Id == senderId) ? chat.User2Id : chat.User1Id; AppUser recipient = userManager.Users .FirstOrDefault(u => u.Id == recipientId); string recipientPhoto = (recipient.ProfilePhotoUrl != null) ? $"/UsersData/{recipient.ProfilePhotoUrl}" : "/defaultAvatar.png"; string recipientName = (recipient.FirstName == null && recipient.LastName == null) ? recipient.UserName : $"{recipient.FirstName} {recipient.LastName}"; string date = MsgSentDate(lastMsg.DateAdded); await Clients.All.SendAsync("ChatIndexNewLastMsg", senderId, recipientId, chat.ChatId, senderName, date, lastMsg.MessageContent, chat.Messages.Where(m => m.Seen == false).Count(), senderPhoto); await Clients.All.SendAsync("UserHeaderNewLastMsg", senderId, recipientId, chat.ChatId, senderName, date, lastMsg.MessageContent, chat.Messages.Where(m => m.Seen == false).Count(), senderPhoto, recipientPhoto, recipientName); } //delete msg from chat view await Clients.All.SendAsync("DeleteMsgChat", msgId, chatId); }