public async Task SendMessageToUser(string toWhoId, string message, DateTime when) { try { var fromWhoUser = GetLoggedUser().Id; if (!string.IsNullOrWhiteSpace(toWhoId) && Guid.TryParse(toWhoId, out Guid gToWhoId)) { if (_onlineUsersService.IsUserOnline(toWhoId)) { string toWhoConnectionId = _onlineUsersService.GetOnlineUser(toWhoId).ConnectionId; await Clients.Client(toWhoConnectionId).SendAsync("ReceiveMessage", fromWhoUser, message, when); } await _messageService.AddMessageAsync(gToWhoId, new MessageToAddDto { FromWho = Guid.Parse(fromWhoUser), Text = message, When = when }); } else { throw new ArgumentNullException(nameof(toWhoId)); } } catch (Exception ex) { _logger.LogError("Something went wrong during sending message to the user: {userId}", toWhoId); _logger.LogError("{0}", ex); } return; }