// GET: AdminMatchUsers/Edit/5
        public async Task <IActionResult> Create(int matchId)
        {
            var match = await _context.Matchs
                        .Include(m => m.Sides)
                        .Include(m => m.Rounds).ThenInclude(r => r.Sides).ThenInclude(s => s.Squads).ThenInclude(s => s.Slots)
                        .Include(m => m.Users)
                        .FirstOrDefaultAsync(m => m.MatchID == matchId);

            if (match == null)
            {
                return(NotFound());
            }

            var vm = new MatchUserCreateViewModel();

            vm.MatchUser = new MatchUser()
            {
                MatchID = match.MatchID,
                Match   = match
            };
            if (match.Sides.Count == 1)
            {
                vm.MatchUser.Side        = match.Sides.First();
                vm.MatchUser.MatchSideID = vm.MatchUser.Side.MatchSideID;
            }
            vm.Users = (await _context.Users.ToListAsync()).Where(u => !match.Users.Any(mu => mu.UserID == u.UserID)).Select(u => new SelectListItem(u.Name, u.UserID.ToString())).ToList();
            PrepareEditViewModel(vm);
            return(View(vm));
        }
        public async Task <IActionResult> Create(MatchUserCreateViewModel vm)
        {
            if (ModelState.IsValid)
            {
                _context.Add(vm.MatchUser);

                await _context.SaveChangesAsync();

                using (var transac = await _context.Database.BeginTransactionAsync())
                {
                    await ApplyUserSlots(vm);

                    await _context.SaveChangesAsync();

                    await transac.CommitAsync();
                }

                return(RedirectToAction(nameof(Details), ControllersName.AdminMatchs, new { id = vm.MatchUser.MatchID }, "users"));
            }
            PrepareEditViewModel(vm);
            return(View(vm));
        }