Пример #1
0
        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 }));
            }
        }
Пример #2
0
        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 }));
            }
        }
Пример #3
0
        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 }));
            }
        }
Пример #4
0
 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 }));
     }
 }