Ejemplo n.º 1
0
        public async Task <IActionResult> Edit(int id, [Bind("Id")] PhysicalTable physicalTable)
        {
            if (id != physicalTable.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(physicalTable);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!PhysicalTableExists(physicalTable.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(physicalTable));
        }
        public async Task <IActionResult> ReservationEdit(int id, [Bind("Id,isReserved,leftPos,objHeight,objWidth,restaurantId,rotationAng,topPos,type,reservedBy,reservedFor")] PhysicalTable physicalTable)
        {
            if (id != physicalTable.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(physicalTable);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!PhysicalTableExists(physicalTable.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction("CurrentReservations", "PhysicalTables", new { id = physicalTable.restaurantId }));
            }
            return(View(physicalTable));
        }
        public ActionResult CreateSchema(List <string> tableJson)
        {
            foreach (var a in tableJson)
            {
                PhysicalTable x = new PhysicalTable();

                x.isReserved = false;
            }
            return(View("~/Restaurants/Index.cshtml"));
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> Create([Bind("Id")] PhysicalTable physicalTable)
        {
            if (ModelState.IsValid)
            {
                _context.Add(physicalTable);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(physicalTable));
        }
        public async Task <IActionResult> Create([Bind("Id,isReserved,leftPos,objHeight,objWidth,restaurantId,rotationAng,topPos,type")] PhysicalTable physicalTable)
        {
            if (ModelState.IsValid)
            {
                _context.Add(physicalTable);
                await _context.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            return(View(physicalTable));
        }
        public async Task <IActionResult> Create([Bind("Id,Name,Date,Location,NumberOfRounds")] Tournament tournament)
        {
            //Get players unassigned to games
            var players = await _context.Players
                          .Include(p => p.MyGames)
                          .Include(p => p.TheirGames).ToListAsync();

            var unassignedPlayers = players.Where(p => p.MyGames == null || p.MyGames.Count() == 0 && p.TheirGames == null || p.TheirGames.Count() == 0).ToList();

            if (unassignedPlayers.Count < 6)
            {
                return(View("NoPlayers"));
            }

            if (tournament.NumberOfRounds > (unassignedPlayers.Count() + 1) / 2)
            {
                return(View("TooManyRounds"));
            }

            var user = await GetCurrentUserAsync();

            tournament.userId = user.Id;

            // Create new tournament and round
            Round round = null;

            if (ModelState.IsValid)
            {
                _context.Add(tournament);
                await _context.SaveChangesAsync();

                Round newRound = new Round()
                {
                    Number       = 1,
                    TournamentId = tournament.Id
                };

                _context.Add(newRound);
                await _context.SaveChangesAsync();

                round = newRound;
            }

            TournamentState.setcurrentTournament(tournament);
            TournamentState.currentRound.Number = 1;

            // If number of players is odd, find or generate a 'bye' player

            if (unassignedPlayers.Count % 2 != 0)
            {
                var byePlayerOrNull = players.SingleOrDefault(p => p.LastName == "Bye");
                if (byePlayerOrNull == null)
                {
                    var byePlayer = new Player()
                    {
                        FirstName = " ",
                        LastName  = "Bye",
                    };
                    _context.Add(byePlayer);
                    await _context.SaveChangesAsync();

                    unassignedPlayers.Add(byePlayer);
                }
                else
                {
                    unassignedPlayers.Add(byePlayerOrNull);
                }
            }

            foreach (var player in unassignedPlayers)
            {
                TournamentState.currentPlayers.Add(player);
            }

            //Sort players randomly

            var rand          = new Random();
            var randomPlayers = unassignedPlayers.OrderBy(p => rand.NextDouble()).ToList();
            int numberOfGames = randomPlayers.Count / 2;

            var bye = randomPlayers.Find(p => p.LastName == "Bye");

            //Assign players to games, create tables
            for (int i = 0; i < numberOfGames; i++)
            {
                var newTable = new PhysicalTable();
                newTable.Number = i + 1;
                _context.Add(newTable);
                await _context.SaveChangesAsync();

                var game = new Game();
                game.PhysicalTableId = newTable.Id;
                game.RoundId         = round.Id;
                game.PlayerOneId     = randomPlayers[0].Id;
                randomPlayers.Remove(randomPlayers[0]);
                game.PlayerTwoId = randomPlayers[0].Id;
                randomPlayers.Remove(randomPlayers[0]);

                //The opponent of the bye player automatically wins
                if (bye != null)
                {
                    if (game.PlayerOneId == bye.Id)
                    {
                        game.PlayerTwoScore = 1;
                    }
                    else if (game.PlayerTwoId == bye.Id)
                    {
                        game.PlayerOneScore = 1;
                    }
                }
                _context.Add(game);
            }

            await _context.SaveChangesAsync();

            return(RedirectToAction("IndexUncompleted", "Games"));
        }