public async Task <ActionResult> Create(
            PostBoardMemberViewModel model,
            int boardId,
            [FromServices] IUserRepository userRepository)
        {
            bool boardExists = await _boardRepository.Exists(boardId);

            if (!boardExists)
            {
                return(V1NotFound("Board not found"));
            }
            int         userId     = int.Parse(HttpContext.User.Identity.Name);
            BoardMember userMember = await _memberRepository.GetByBoardIdAndUserId(boardId, userId);

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

            User newMemberUser = await userRepository.GetByEmailWithPassword(model.Email);

            if (newMemberUser is null)
            {
                return(V1NotFound("User not found"));
            }

            bool alreadyIsMember = await _memberRepository.GetByBoardIdAndUserId(boardId, newMemberUser.Id) is
            {
            };

            if (alreadyIsMember)
            {
                return(NoContent());
            }

            DateTime createdDate = _dateTimeProvider.UtcNow();
            var      member      = new BoardMember
            {
                Board = new Board
                {
                    Id = boardId
                },
                User = new User
                {
                    Id = newMemberUser.Id,
                },
                IsAdmin    = model.IsAdmin,
                CreatedOn  = createdDate,
                ModifiedOn = createdDate
            };
            await _memberRepository.Insert(member);

            return(NoContent());
        }
        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));
        }