public async Task <IActionResult> CreateAsync(BoardCreateViewModel model) { try { if (ModelState.IsValid) { var IsSuperAdmin = User.IsInRole("SuperAdmin"); var currentuser = await _userManager.GetUserAsync(HttpContext.User); if (IsSuperAdmin || User.IsInRole("Admin") && model.CompanyId == currentuser.CompanyId) { model.CreatedDate = DateTime.Now; model.CreatedBy = User.Identity.Name; var response = _boardRepository.Create(model); if (response != null && response.Id != 0) { return(RedirectToAction("details", new { id = model.Id })); } } return(View("NotAuthorized")); } return(View(model)); } catch (Exception ex) { _logger.LogError(ex, $"When getting the create form."); throw; } }
public async Task <IActionResult> CreateAsync(int companyid) { try { var company = _companyRepository.GetById(companyid); var currentuser = await _userManager.GetUserAsync(HttpContext.User); if (company == null || company.IsDeleted == true) { Response.StatusCode = 404; return(View("../Companies/CompanyNotFound", companyid)); } else if (User.IsInRole("SuperAdmin") || User.IsInRole("Admin") && companyid == currentuser.CompanyId) { BoardCreateViewModel boardCreateViewModel = new BoardCreateViewModel() { Company = company, }; return(View(boardCreateViewModel)); } return(View("NotAuthorized")); } catch (Exception ex) { _logger.LogError(ex, $"When getting the create form."); throw; } }
// GET: BingoBoards/Create public IActionResult Create(int id) { var bingoBoardViewModel = new BoardCreateViewModel(); bingoBoardViewModel.BracketID = id; ViewData["BracketTitle"] = _context.Brackets.Single(b => b.BracketID == id).Title; //bingoBoardViewModel.Entrants = new List<Entrant>(25); //bingoBoard.BoardPieces = new List<BoardPiece>(); //bingoBoard.RoundEliminated = -1; ViewBag.Entrants = new SelectList(_context.Entrants.OrderBy(e => e.Name).AsNoTracking(), "EntrantID", "Name"); return(View(bingoBoardViewModel)); }
public async Task <IActionResult> Create(BoardCreateViewModel bingoBoardViewModel) { List <int> positions = new List <int>(); for (int i = 0; i < REQUIRED_PIECES; i++) { positions.Add(i); } // TODO: validate distinct //var distinctEntrants = bingoBoard.Entrants.Select(e => e.EntrantID).Distinct().ToList(); var rand = new Random(DateTime.Now.Millisecond); var bracket = _context.Brackets .Include(b => b.Contenders) .Include(b => b.Rounds) .Single(b => b.BracketID == bingoBoardViewModel.BracketID); var bracketEntrants = bracket.Contenders.Select(b => b.EntrantID).ToList(); var contenders = new List <Contender>(); var roundId = bracket.Rounds != null && bracket.Rounds.Count == 1 ? bracket.Rounds.First().RoundID : -1; for (int i = 0; i < bingoBoardViewModel.Entrants.Count; i++) { Contender contender; if (!bracketEntrants.Contains(bingoBoardViewModel.Entrants[i])) { contender = new Contender { BracketID = bracket.BracketID, EntrantID = bingoBoardViewModel.Entrants[i], }; _context.Add(contender); if (roundId != -1) { _context.Add(new RoundContender { RoundID = roundId, ContenderID = contender.ContenderID }); } } else { contender = bracket.Contenders.Single(c => c.EntrantID == bingoBoardViewModel.Entrants[i]); } contenders.Add(contender); } //await _context.SaveChangesAsync(); var bingoBoard = new BingoBoard { BracketID = bracket.BracketID, Title = bingoBoardViewModel.Title, RoundEliminated = -1 }; bingoBoard.BoardPieces = new List <BoardPiece>(); for (int i = 0; i < contenders.Count; i++) { var pos = i == 0 ? positions.Count / 2 : rand.Next(0, positions.Count); var boardPieceToAdd = new BoardPiece { BingoBoardID = bingoBoard.BingoBoardID, ContenderID = contenders[i].ContenderID, BoardPosition = positions[pos] }; positions.Remove(positions[pos]); bingoBoard.BoardPieces.Add(boardPieceToAdd); } if (ModelState.IsValid) { _context.Add(bingoBoard); await _context.SaveChangesAsync(); return(RedirectToAction("Manage", "Brackets", new { id = bingoBoard.BracketID })); } return(View(bingoBoard)); }