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)); }
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)); } }
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")); }
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"); } }
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"); }
public async Task <IActionResult> CreateBoard([FromBody] CreateBoardModel model) { var(IsDone, Message) = await _boardService.CreateBoardAsync(this.UserId(), model); return(IsDone ? (IActionResult)Ok(Message) : BadRequest(Message)); }