Esempio n. 1
0
        public async Task <IActionResult> CreateBoard(CreateBoardModel createBoardModel)
        {
            var user = await _userManager.GetUserAsync(User);

            if (string.IsNullOrWhiteSpace(createBoardModel.Name))
            {
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(Json("Invalid board name."));
            }

            var unit = _applicationDbContext.Units.Where(u => u.ID == createBoardModel.UnitID).SingleOrDefault();

            if (unit == null)
            {
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(Json("Invalid unit selected."));
            }

            var board = _applicationDbContext.Boards.Where(b => b.UnitID == createBoardModel.UnitID && b.Name.ToUpperInvariant() == createBoardModel.Name.ToUpperInvariant());

            if (board.Any())
            {
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(Json($"A board with that name exists in {unit.Name}"));
            }

            var newBoard = (await _applicationDbContext.Boards.AddAsync(new Board
            {
                Name = createBoardModel.Name,
                UnitID = createBoardModel.UnitID
            })).Entity;

            // Create defaults for board
            var defaultPurpose = _applicationDbContext.Defaults.Where(d => d.Field == "BussinessRules").SingleOrDefault().Value;

            defaultPurpose = defaultPurpose.Replace("{{Name}}", createBoardModel.Name);

            _applicationDbContext.Purpose.Add(new Purpose
            {
                BoardID = newBoard.ID,
                Text    = defaultPurpose
            });

            await _applicationDbContext.SaveChangesAsync();

            return(Json(newBoard));
        }
Esempio n. 2
0
        public async Task <IActionResult> CreateBoard([FromBody] CreateBoardModel board)
        {
            try
            {
                var username = HttpContext.User.Identity.Name;

                if (username == null)
                {
                    return(Unauthorized());
                }

                var id = await _boardService.CreateBoardAsync(board, username);

                return(Ok(id));
            }
            catch (Exception e)
            {
                return(NotFound(e.Message));
            }
        }
Esempio n. 3
0
        public IActionResult CreateBoard(CreateBoardModel model)
        {
            if (ModelState.IsValid)
            {
                var user  = _users.GetUserByEmail(User.Identity.Name);
                var board = new Board
                {
                    Name = model.Name.Trim(),
                    User = user,
                };

                _boards.AddEntity(board);
                _boards.Save();

                return(RedirectToAction("Board", new { id = board.Id }));
            }
            ModelState.AddModelError("Name", "Missing name!");

            return(RedirectToAction("Boards"));
        }
Esempio n. 4
0
        public Task <string> CreateBoardAsync(CreateBoardModel board, string username)
        {
            if (board != null)
            {
                var num      = GetNextBoardId(board.ProjectId);
                var id       = board.ProjectId + "." + num;
                var newBoard = new Board
                {
                    Id            = id,
                    Title         = board.Title,
                    Description   = board.Description,
                    ProjectId     = board.ProjectId,
                    Collaborators = new List <UserAccess>(new[] {
                        new UserAccess {
                            Username = username,
                            Role     = AccessRole.Admin
                        }
                    }),
                    Task    = new Message(),
                    Privacy =
                        board.IntPrivacy == 0 ? BoardPrivacy.Public :
                        board.IntPrivacy == 1 ? BoardPrivacy.PublicForProjectCollabotators : BoardPrivacy.PublicForBoardCollaborators,
                    Number = num,
                    Pins   = new List <string>()
                };

                return(Task.Run(async() =>
                {
                    await _boardRepository.CreateBoardAsync(newBoard);
                    return id;
                }));
            }
            else
            {
                throw new Exception("Some board's parameters are empty");
            }
        }
Esempio n. 5
0
        public async Task <(bool IsDone, string Message)> CreateBoardAsync(Guid userId, CreateBoardModel model)
        {
            try
            {
                var access = await _securityService.GetUserAccessAsync(userId, model.ProjectId);

                if (!access[UserAction.CREATE_BOARD])
                {
                    return(IsDone : false, Message : "Access denied");
                }

                var boardsCount = _context.Projects
                                  .Where(x => x.Id == model.ProjectId)
                                  .Include(x => x.Boards)
                                  .SingleOrDefault().Boards.Count();
                if (boardsCount > 5)
                {
                    return(IsDone : false, Message : "Maximum 6 boards per project");
                }

                var board = new Board
                {
                    CreatorId  = userId,
                    ProjectId  = model.ProjectId,
                    Title      = model.Title,
                    TaskPrefix = model.Prefix?.ToUpper() ?? model.Title.ToUpper().Substring(0, model.Title.Length / 2),
                    TaskIndex  = 0
                };

                await _context.Boards.AddAsync(board);

                await _context.SaveChangesAsync();

                return(IsDone : true, Message : "Done");
            }
            catch (Exception e)
            {
                _logger.LogError("BoardService, CreateBoardAsync", e);
            }

            return(IsDone : false, Message : "Something went wrong, try again later");
        }
Esempio n. 6
0
        public async Task <IActionResult> CreateBoard([FromBody] CreateBoardModel model)
        {
            var(IsDone, Message) = await _boardService.CreateBoardAsync(this.UserId(), model);

            return(IsDone ? (IActionResult)Ok(Message) : BadRequest(Message));
        }