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")); }
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")); }