public IActionResult CreateBoard(ClientRequestPayload payload) { string boardTitle = payload.Param1; try { ApplicationUser user = this.GetApplicationUser(); Board board = new Board(); board.CreatedById = user.Id; board.Title = boardTitle; _dbContext.Boards.Add(board); Column column = new Column(); column.BoardId = board.Id; column.Title = "New Column"; _dbContext.Columns.Add(column); _dbContext.SaveChangesForUser(user); _signalRHub.Clients.All.SendAsync("ServerMessage", "BoardsUpdated"); string status = $"BoardDataController.CreateBoard(boardTitle={boardTitle}), boardId:{board.Id}"; _logger.LogInformation(status); return(new OkObjectResult(new { status })); } catch (Exception ex) { string exceptionString = $"BoardDataController.CreateBoard(boardTitle={boardTitle}) exception occurred: {ex.ToString()}"; _logger.LogInformation(exceptionString); return(BadRequest(new { status = exceptionString })); } }
public IActionResult AddCardToColumn(ClientRequestPayload payload) { string columnId = payload.Param1; string cardTitle = payload.Param2; string boardId = payload.Param3; try { ApplicationUser user = this.GetApplicationUser(); Board.PermissionLevels permLevel = GetUserPermissionLevelForBoard(boardId, user); if (permLevel != Board.PermissionLevels.Owner && permLevel != Board.PermissionLevels.User) { string errorString = $"BoardDataController.AddCardToColumn(columnId:{columnId}) by user {user.UserName} access denied"; _logger.LogInformation(errorString); return(this.Unauthorized(new { status = errorString })); } List <Card> cards = _dbContext.Columns.Include(x => x.Cards).FirstOrDefault(x => x.Id == columnId).Cards.ToList(); Card card = new Card(); card.Title = cardTitle; card.Index = cards.Count > 0 ? cards.Max(col => col.Index) + 1 : 0; card.ColumnId = columnId; _dbContext.Cards.Add(card); _dbContext.SaveChangesForUser(user); _signalRHub.Clients.Group(boardId).SendAsync("ServerMessage", "BoardUpdated"); string status = $"BoardDataController.AddCardToColumn(columnId={columnId}), cardId:{card.Id}"; _logger.LogInformation(status); return(new OkObjectResult(new { status })); } catch (Exception ex) { string exceptionString = $"BoardDataController.AddCardToColumn(columnId={columnId}) exception occurred: {ex.ToString()}"; _logger.LogInformation(exceptionString); return(BadRequest(new { status = exceptionString })); } }
public async Task <IActionResult> AddChatMessage(string chatId, ClientRequestPayload payload) { string chatMessageText = payload.Param1; try { ApplicationUser user = this.GetApplicationUser(); string status = $"BoardDataController.AddChatMessage chatId={chatId}, chatMessage={chatMessageText}"; _logger.LogInformation(status); ChatMessage chatMessage = new ChatMessage(); chatMessage.ChatId = chatId; chatMessage.ApplicationUserId = user.Id; chatMessage.Message = chatMessageText; _dbContext.ChatMessages.Add(chatMessage); _dbContext.SaveChangesForUser(user); await _signalRHub.Clients.Group(chatId).SendAsync("ServerMessage", "NewChatMessages"); return(new OkObjectResult(new { status })); } catch (Exception ex) { string exceptionString = $"BoardDataController.AddChatMessage chatId={chatId}, exception occurred: {ex.ToString()}"; _logger.LogInformation(exceptionString); return(BadRequest(new { status = exceptionString })); } }
public IActionResult DeleteCard(string cardId, ClientRequestPayload payload) { string boardId = payload.Param1; try { ApplicationUser user = this.GetApplicationUser(); Board.PermissionLevels permLevel = GetUserPermissionLevelForBoard(boardId, user); if (permLevel != Board.PermissionLevels.Owner) //if (permLevel != Board.PermissionLevels.Owner && permLevel != Board.PermissionLevels.User) { string errorString = $"BoardDataController.DeleteCard(boardId:{boardId}) by user {user.UserName} access denied"; _logger.LogInformation(errorString); return(this.Unauthorized(new { status = errorString })); } Card card = _dbContext.Cards.Find(cardId); _dbContext.Cards.Remove(card); _dbContext.SaveChangesForUser(user); _signalRHub.Clients.Group(boardId).SendAsync("ServerMessage", "BoardUpdated"); string status = $"BoardDataController.DeleteCard(cardId={cardId})"; _logger.LogInformation(status); return(new OkObjectResult(new { status })); } catch (Exception ex) { string exceptionString = $"BoardDataController.DeleteCard(cardId={cardId}) exception occurred: {ex.ToString()}"; _logger.LogInformation(exceptionString); return(BadRequest(new { status = exceptionString })); } }
public IActionResult AddColumnToBoard(ClientRequestPayload payload) { string boardId = payload.Param1; string columnTitle = payload.Param2; try { ApplicationUser user = this.GetApplicationUser(); Column column = new Column(); column.BoardId = boardId; column.Title = columnTitle; // Set index to the next highest index for this Board, or 0 if this is the first column List <Column> columns = _dbContext.Boards.Include(x => x.Columns).FirstOrDefault(x => x.Id == column.BoardId).Columns.ToList(); column.Index = columns.Count > 0 ? columns.Max(col => col.Index) + 1 : 0; _dbContext.Columns.Add(column); _dbContext.SaveChangesForUser(user); string status = $"BoardDataController.AddColumnToBoard BoardId={boardId}, Title={columnTitle}"; _signalRHub.Clients.Group(boardId).SendAsync("ServerMessage", "BoardUpdated"); _logger.LogInformation(status); return(new OkObjectResult(new { status })); } catch (Exception ex) { string exceptionString = $"BoardDataController.AddColumnToBoard BoardId={boardId}, Title={columnTitle} exception occurred: {ex.ToString()}"; _logger.LogInformation(exceptionString); return(BadRequest(new { status = exceptionString })); } }
public IActionResult RenameColumn(string columnId, ClientRequestPayload payload) { string newName = payload.Param1; try { ApplicationUser user = this.GetApplicationUser(); Column column = _dbContext.Columns.Find(columnId); Board.PermissionLevels permLevel = GetUserPermissionLevelForBoard(column.BoardId, user); if (permLevel != Board.PermissionLevels.Owner && permLevel != Board.PermissionLevels.User) { string errorString = $"BoardDataController.RenameColumn(columnId:{columnId}) by user {user.UserName} access denied"; _logger.LogInformation(errorString); return(this.Unauthorized(new { status = errorString })); } column.Title = newName; _dbContext.Columns.Update(column); _dbContext.SaveChangesForUser(user); _signalRHub.Clients.Group(column.BoardId).SendAsync("ServerMessage", "BoardUpdated"); string status = $"BoardDataController.RenameColumn columnId={columnId}, newName={newName}"; _logger.LogInformation(status); return(new OkObjectResult(new { status })); } catch (Exception ex) { string exceptionString = $"BoardDataController.RenameColumn columnId={columnId}, newName={newName} exception occurred: {ex.ToString()}"; _logger.LogInformation(exceptionString); return(BadRequest(new { status = exceptionString })); } }
public IActionResult DeleteColumn(ClientRequestPayload payload) { string columnId = payload.Param1; Column column = _dbContext.Columns.Include(x => x.Cards).FirstOrDefault(x => x.ColumnId == columnId); if (column == null) { string errorString = $"BoardDataController.DeleteColumn Column NOT found with ColumnId:{columnId}"; _logger.LogInformation(errorString); return(BadRequest(errorString)); } else { try { foreach (Card card in column.Cards) { _dbContext.Cards.Remove(card); } _dbContext.Columns.Remove(column); _dbContext.SaveChanges(); string status = $"BoardDataController.DeleteColumn Deleted column with columnId:{columnId}"; _logger.LogInformation(status); return(new OkObjectResult(status)); } catch (Exception ex) { string exceptionString = $"BoardDataController.DeleteColumn(columnId:{columnId}) exception occurred: {ex.ToString()}"; _logger.LogInformation(exceptionString); return(BadRequest(exceptionString)); } } }
public IActionResult SetBoardPublicVisibility(string boardId, ClientRequestPayload payload) { try { bool isPubliclyVisible = bool.Parse(payload.Param1); ApplicationUser user = this.GetApplicationUser(); if (GetUserPermissionLevelForBoard(boardId, user) != Board.PermissionLevels.Owner) { string errorString = $"BoardDataController.SetBoardPublicVisibility(boardId:{boardId}) by user {user.UserName} access denied"; _logger.LogInformation(errorString); return(this.Unauthorized(new { status = errorString })); } Board board = _dbContext.Boards.Find(boardId); string status = $"BoardDataController.SetBoardPublicVisibility(boardId:{boardId}), isPubliclyVisible={payload.Param1}"; board.IsPubliclyVisible = isPubliclyVisible; _dbContext.Boards.Update(board); _dbContext.SaveChangesForUser(user); _signalRHub.Clients.All.SendAsync("ServerMessage", "BoardsUpdated"); _signalRHub.Clients.Group(boardId).SendAsync("ServerMessage", "BoardUpdated"); _logger.LogInformation(status); return(new OkObjectResult(new { status })); } catch (Exception ex) { string exceptionString = $"BoardDataController.SetBoardPublicVisibility(boardId:{boardId}, isPubliclyVisible={payload.Param1}) exception occurred: {ex.ToString()}"; _logger.LogInformation(exceptionString); return(BadRequest(new { status = exceptionString })); } }
public IActionResult AddColumnToBoard(ClientRequestPayload payload) { string boardId = payload.Param1; string columnTitle = payload.Param2; try { Column column = new Column(); column.BoardId = boardId; column.Title = columnTitle; // Set index to the next highest index for this Board, or 0 if this is the first column List <Column> columns = _dbContext.Boards.Include(x => x.Columns).FirstOrDefault(x => x.BoardId == column.BoardId).Columns.ToList(); column.Index = columns.Count > 0 ? columns.Max(col => col.Index) + 1 : 0; _dbContext.Columns.Add(column); _dbContext.SaveChanges(); string status = $"BoardDataController.AddColumnToBoard BoardId={boardId}, Title={columnTitle}"; _logger.LogInformation(status); return(new OkObjectResult(status)); } catch (Exception ex) { string exceptionString = $"BoardDataController.AddColumnToBoard BoardId={boardId}, Title={columnTitle} exception occurred: {ex.ToString()}"; _logger.LogInformation(exceptionString); return(BadRequest(exceptionString)); } }
public IActionResult MoveCardToColumnAtIndex(ClientRequestPayload payload) { string cardId = payload.Param1; string columnId = payload.Param2; int index = int.Parse(payload.Param3); try { Column column = _dbContext.Columns.Include(x => x.Cards).FirstOrDefault(x => x.ColumnId == columnId); List <Card> cards = column.Cards.OrderBy(x => x.Index).ToList(); // First remove the target card from list (if it exists) int existingIndex = -1; for (int i = 0; i < cards.Count; ++i) { if (cards[i].CardId == cardId) { existingIndex = i; } } if (existingIndex > -1) { cards.RemoveAt(existingIndex); } // Update the indexes with card in new position for (int i = 0; i < cards.Count; ++i) { cards[i].Index = i >= index ? i + 1 : i; _dbContext.Cards.Update(cards[i]); } Card cardToMove = _dbContext.Cards.Find(cardId); cardToMove.ColumnId = columnId; cardToMove.Index = index; _dbContext.Cards.Update(cardToMove); _dbContext.SaveChanges(); string status = $"BoardDataController.MoveCardToColumnAtIndex cardId={cardId}, columnId={columnId}, index={index}"; _logger.LogInformation(status); return(new OkObjectResult(status)); } catch (Exception ex) { string exceptionString = $"BoardDataController.MoveCardToColumnAtIndex cardId={cardId}, columnId={columnId}, index={index} exception occurred: {ex.ToString()}"; _logger.LogInformation(exceptionString); return(BadRequest(exceptionString)); } }
public IActionResult DeleteCard(ClientRequestPayload payload) { string cardId = payload.Param1; try { Card card = _dbContext.Cards.Find(cardId); _dbContext.Cards.Remove(card); string status = $"BoardDataController.DeleteCard(cardId={cardId})"; _logger.LogInformation(status); return(new OkObjectResult(status)); } catch (Exception ex) { string exceptionString = $"BoardDataController.DeleteCard(cardId={cardId}) exception occurred: {ex.ToString()}"; _logger.LogInformation(exceptionString); return(BadRequest(exceptionString)); } }
public IActionResult CreateBoard(ClientRequestPayload payload) { string boardTitle = payload.Param1; try { Board board = new Board(); //board.CreatedById = appUser.Id; board.Title = boardTitle; _dbContext.Boards.Add(board); _dbContext.SaveChanges(); string status = $"BoardDataController.CreateBoard(boardTitle={boardTitle}), boardId:{board.BoardId}"; _logger.LogInformation(status); return(new OkObjectResult(status)); } catch (Exception ex) { string exceptionString = $"BoardDataController.CreateBoard(boardTitle={boardTitle}) exception occurred: {ex.ToString()}"; _logger.LogInformation(exceptionString); return(BadRequest(exceptionString)); } }
public IActionResult RenameCard(ClientRequestPayload payload) { string cardId = payload.Param1; string newName = payload.Param2; try { Card card = _dbContext.Cards.Find(cardId); card.Title = newName; _dbContext.Cards.Update(card); _dbContext.SaveChangesAsync(); string status = $"BoardDataController.RenameCard cardId={cardId}, newName={newName}"; _logger.LogInformation(status); return(new OkObjectResult(status)); } catch (Exception ex) { string exceptionString = $"BoardDataController.RenameCard cardId={cardId}, newName={newName} exception occurred: {ex.ToString()}"; _logger.LogInformation(exceptionString); return(BadRequest(exceptionString)); } }
public IActionResult AddUserToBoard(string boardId, ClientRequestPayload payload) { string userId = payload.Param1; try { ApplicationUser user = this.GetApplicationUser(); if (GetUserPermissionLevelForBoard(boardId, user) != Board.PermissionLevels.Owner) { string errorString = $"BoardDataController.AddUserToBoard(boardId:{boardId}) by user {user.UserName} access denied"; _logger.LogInformation(errorString); return(this.Unauthorized(new { status = errorString })); } if (_dbContext.BoardUsers.Where(x => x.BoardId == boardId && x.ApplicationUserId == userId).ToList().Count > 0) { string error = $"BoardDataController.AddUserToBoard BoardId={boardId}, userId={userId} already exists"; _logger.LogInformation(error); return(BadRequest(new { error })); } BoardUser boardUser = new BoardUser() { BoardId = boardId, ApplicationUserId = userId }; _dbContext.BoardUsers.Add(boardUser); _dbContext.SaveChangesForUser(user); _signalRHub.Clients.All.SendAsync("ServerMessage", "BoardsUpdated"); _signalRHub.Clients.Group(boardId).SendAsync("ServerMessage", "BoardUpdated"); string status = $"BoardDataController.AddUserToBoard BoardId={boardId}, userId={userId}"; _logger.LogInformation(status); return(new OkObjectResult(new { status })); } catch (Exception ex) { string exceptionString = $"BoardDataController.AddUserToBoard BoardId={boardId}, userId={userId} exception occurred: {ex.ToString()}"; _logger.LogInformation(exceptionString); return(BadRequest(new { status = exceptionString })); } }