public async Task CreateChatAsync(Chat chat) { /////////////// throw if (chat == null) { return; } chat.Name = StringSanitizer.CleanName(chat.Name); _unitOfWork.Chats.Insert(chat); _unitOfWork.SaveChanges(); var chatReadDto = _mapper.Map <ChatReadDto>(chat); var chatReadDtoString = JsonConvert.SerializeObject(chatReadDto, _settings); foreach (var user in chat.UsersChats.Select(uc => uc.User)) { if (_connectedUsers.ContainsKey(user)) { await _hub.Clients.Client(_connectedUsers[user]).SendAsync("NewChatCreated", chatReadDtoString); } } }
public async Task SendMessageAsync(Message message) { if (message == null) { return; } message.Text = StringSanitizer.CleanMessage(message.Text); _unitOfWork.Messages.Insert(message); _unitOfWork.SaveChanges(); var messageReadDto = _mapper.Map <MessageReadDto>(message); var messageReadDtoString = JsonConvert.SerializeObject(messageReadDto, _settings); foreach (var userChat in message.Chat.UsersChats.ToList()) { if (_connectedUsers.ContainsKey(userChat.User)) { await _hub.Clients.Client(_connectedUsers[userChat.User]).SendAsync("ReceiveMessage", messageReadDtoString); if (userChat.IsActive == true) { await ChatSeenAsync(userChat.Chat.Id, userChat.User.Id); } else { userChat.NotSeenMessagesNumber++; _unitOfWork.SaveChanges(); } } else { userChat.NotSeenMessagesNumber++; _unitOfWork.SaveChanges(); } } }
public async Task UpdateChatNameAsync(int chatId, string name) { var chat = _unitOfWork.Chats.GetByID(chatId); /////////throw if (chat == null) { return; } chat.Name = StringSanitizer.CleanName(chat.Name); chat.Name = name; _unitOfWork.SaveChanges(); foreach (var user in chat.UsersChats.Select(uc => uc.User)) { var connectedUsers = _connectionsManager.ConnectedUsersByAppUser; if (connectedUsers.ContainsKey(user)) { await _hub.Clients.Client(connectedUsers[user]).SendAsync("ChatNameChanged", chatId, name); } } }