public async Task DeleteGroupMessage(int msgId, int chatId) { repository.DeleteGroupChatMessage(msgId); await Clients.All.SendAsync("DeleteGroupMsgChat", msgId, chatId); GroupChat chat = repository.GroupChats.FirstOrDefault(c => c.ChatId == chatId); string chatPhoto = (chat.ChatPhotoPath != null) ? $"/UsersData/{chat.ChatPhotoPath}" : "/defaultGroup.png"; GroupChatMessage lastMsg = repository.GroupChatMessages.LastOrDefault(m => m.GroupChatId == chatId); AppUser sender = userManager.Users.FirstOrDefault(u => u.Id == lastMsg.UserId); string senderPhoto = (sender.ProfilePhotoUrl != null) ? $"/UsersData/{sender.ProfilePhotoUrl}" : "/defaultAvatar.png"; string senderName = (sender.FirstName == null && sender.LastName == null) ? sender.UserName : $"{sender.FirstName} {sender.LastName}"; foreach (GroupChatUsers user in repository.GroupChatUsers.Where(u => u.GroupChatId == chatId)) { int userUnseenMsgs = 0; foreach (GroupChatMessage msg in repository.GroupChatMessages .Where(m => m.GroupChatId == chat.ChatId)) { if (msg.UserId != user.UserId) { if (repository.GroupMessageViews.Any(m => m.MessageId == msg.MessageId && m.UserId == user.UserId) == false) { userUnseenMsgs++; } } } await Clients.All.SendAsync("ChatIndexNewLastGroupMsg", sender.Id, user.UserId, chat.ChatId, senderName, DateTime.Now.ToShortTimeString(), lastMsg.MessageContent, userUnseenMsgs, chatPhoto, chat.Title); await Clients.All.SendAsync("UserHeaderNewLastGroupMsg", sender.Id, user.UserId, chat.ChatId, senderName, DateTime.Now.ToShortTimeString(), lastMsg.MessageContent, userUnseenMsgs, chatPhoto, chat.Title); } }