public override async Task OnConnectedAsync() { var me = Context.User.Identity.Name; _logger.Trace($"User {me} connected. "); var groups = await _groups.GetUsersGroups(me, 0, await _groups.GetUsersGroupsLength(me)); var user = await _users.Get(me); _logger.Trace($"User {user.Login} found. Connection id: {Context.ConnectionId}"); user.ConnectionId = Context.ConnectionId; await _users.Update(user); foreach (var @group in groups) { await Groups.AddToGroupAsync(Context.ConnectionId, @group.GroupGuid); } await base.OnConnectedAsync(); }
public async Task <IActionResult> GetJoinedGroups(int?page, int?pageSize) { var me = HttpContext.User.Identity.Name; var groups = await _groupsRepository.GetUsersGroups(me, page, pageSize); var output = groups.Select(group => { #pragma warning disable AsyncFixer02 // Long running or blocking operations under an async method var lastMessage = _messagesRepository.GetMessagesFromGroup(group.GroupGuid, 0, 1).Result.FirstOrDefault(); #pragma warning restore AsyncFixer02 // Long running or blocking operations under an async method return(new GroupFoundWithMessageDto(group, lastMessage)); }); var response = new { Groups = output }; return(new OkObjectResult(response)); }