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 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 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 MoveCardToColumnAtIndex(string columnId, string cardId, int index) { try { ApplicationUser user = this.GetApplicationUser(); Column column = _dbContext.Columns.Include(x => x.Cards).FirstOrDefault(x => x.Id == columnId); Board.PermissionLevels permLevel = GetUserPermissionLevelForBoard(column.BoardId, user); if (permLevel != Board.PermissionLevels.Owner && permLevel != Board.PermissionLevels.User) { string errorString = $"BoardDataController.MoveCardToColumnAtIndex(columnId:{columnId}) by user {user.UserName} access denied"; _logger.LogInformation(errorString); return(this.Unauthorized(new { status = errorString })); } 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].Id == 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.SaveChangesForUser(user); _signalRHub.Clients.Group(column.BoardId).SendAsync("ServerMessage", "BoardUpdated"); string status = $"BoardDataController.MoveCardToColumnAtIndex cardId={cardId}, columnId={columnId}, index={index}"; _logger.LogInformation(status); return(new OkObjectResult(new { status })); } catch (Exception ex) { string exceptionString = $"BoardDataController.MoveCardToColumnAtIndex cardId={cardId}, columnId={columnId}, index={index} exception occurred: {ex.ToString()}"; _logger.LogInformation(exceptionString); return(BadRequest(new { status = exceptionString })); } }