コード例 #1
0
ファイル: BoardsController.cs プロジェクト: M-JM/ProjectScrum
        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;
            }
        }
コード例 #2
0
ファイル: BoardsController.cs プロジェクト: M-JM/ProjectScrum
        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;
            }
        }
コード例 #3
0
        // 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));
        }
コード例 #4
0
        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));
        }