Exemplo n.º 1
0
        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 }));
            }
        }
Exemplo n.º 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 }));
            }
        }
Exemplo n.º 3
0
        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 }));
            }
        }
Exemplo n.º 4
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 }));
            }
        }
Exemplo n.º 5
0
        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 }));
            }
        }
Exemplo n.º 6
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 }));
            }
        }
Exemplo n.º 7
0
        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));
                }
            }
        }
Exemplo n.º 8
0
 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 }));
     }
 }
Exemplo n.º 9
0
        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));
            }
        }
Exemplo n.º 10
0
        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));
            }
        }
Exemplo n.º 11
0
        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));
            }
        }
Exemplo n.º 12
0
        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));
            }
        }
Exemplo n.º 13
0
        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));
            }
        }
Exemplo n.º 14
0
        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 }));
            }
        }