public async Task <ActionResult> Update(PostBoardViewModel model, int boardId)
        {
            bool boardExists = await _boardRepository.Exists(boardId);

            if (!boardExists)
            {
                return(V1NotFound("Board not found"));
            }

            int userId = int.Parse(HttpContext.User.Identity.Name);

            BoardMember member = await _memberRepository.GetByBoardIdAndUserId(boardId, userId);

            if (member is null || !member.IsAdmin)
            {
                return(Forbid());
            }

            Board board = new Board
            {
                Id         = boardId,
                Title      = model.Title,
                ModifiedOn = _dateTimeProvider.UtcNow()
            };

            await _boardRepository.Update(board);

            return(NoContent());
        }
Example #2
0
        public async Task <IActionResult> PostBoard([FromBody] PostBoardViewModel model)
        {
            var board = new Board
            {
                ParentId = model.ParentId,
                Link     = model.Link,
                Maker    = model.Maker,
                Title    = model.Title,
                Cells    = model.Cells
            };

            _database.Boards.Add(board);
            await _database.SaveChangesAsync();

            return(Ok(new { board.Id }));
        }
        public async Task <ActionResult <BoardViewModel> > Create(PostBoardViewModel model)
        {
            DateTime createdDate = _dateTimeProvider.UtcNow();
            int      userId      = int.Parse(HttpContext.User.Identity.Name);
            var      user        = new User
            {
                Id = userId
            };
            var board = new Board
            {
                Title      = model.Title,
                CreatedBy  = user,
                CreatedOn  = createdDate,
                ModifiedOn = createdDate
            };

            Board createdBoard = await _boardRepository.Insert(board);

            var boardAdmin = new BoardMember
            {
                Board   = createdBoard,
                User    = user,
                IsAdmin = true
            };

            await _memberRepository.Insert(boardAdmin);

            object routeValues = new
            {
                version = "1",
                boardId = createdBoard.Id
            };

            var boardViewModel = new BoardViewModel
            {
                Id         = createdBoard.Id,
                Title      = createdBoard.Title,
                CreatedOn  = createdBoard.CreatedOn,
                ModifiedOn = createdBoard.ModifiedOn
            };

            return(CreatedAtAction(actionName: nameof(Show), routeValues, value: boardViewModel));
        }