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))); }
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(); }
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)); } }