예제 #1
0
 public async Task <IActionResult> AddUserToChat(string userUUID, string chatUUID, CancellationToken ct = default)
 {
     if (!AuthenticationUtilities.IsAllowedChat(User))
     {
         return(BadRequest("User has been banned from Chat"));
     }
     return(Ok(await _chatService.AddUserToChatAsync(userUUID, chatUUID, ct)));
 }
예제 #2
0
        public async Task UpdateJoiningRequestStatus(Guid lobbyId, Guid userId, RequestStatus requestStatus)
        {
            await using var mnpContext = _contextFactory.Create();

            var request = await mnpContext.LobbyJoiningRequests.FindAsync(userId, lobbyId);

            await EnsureCurrentUserCanChangeRequestStatusAsync(request);

            request.RequestStatus = requestStatus;
            if (requestStatus == RequestStatus.Accepted &&
                !await mnpContext.LobbyPlayers.AnyAsync(lp => lp.LobbyId == lobbyId && lp.PlayerId == userId))
            {
                await mnpContext.AddAsync(new LobbyPlayer { LobbyId = lobbyId, PlayerId = userId, IsCreator = false });

                var lobby = await mnpContext.Lobbies
                            .Include(l => l.LobbyGames)
                            .ThenInclude(l => l.Game)
                            .FindByIdAsync(lobbyId);

                lobby.CurrentPlayersCount++;
                await mnpContext.SaveChangesAsync();

                if (lobby.ChatId.HasValue)
                {
                    await _chatService.AddUserToChatAsync(lobby.ChatId.Value, userId);

                    await _chatService.UpdateChatTitleAsync(lobby.ChatId.Value, lobby.Title ?? lobby.BuildTitle());
                }

                return;
            }
            await mnpContext.SaveChangesAsync();
        }
예제 #3
0
        public async Task <IActionResult> ConnectToChat([FromBody] ConnectChatDto connectChatDto)
        {
            var userId = this.User.Claims.First(c => c.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier").Value;

            try
            {
                await _chatService.AddUserToChatAsync(connectChatDto, userId);

                return(Ok(ChatControllerConstants.YouAreAddedToChat));
            } catch (Exception ex)
            {
                _logger.Error(ex);
                return(StatusCode(StatusCodes.Status500InternalServerError, ex.InnerException.Message));
            }
        }