public async Task CreateLeagueAsync(FantasyLeague fantasyLeague) { fantasyLeague.CurrentWeek = -1; fantasyLeague.IsActive = false; fantasyLeague.IsFull = false; fantasyLeague.IsSet = false; await _context.AddAsync(fantasyLeague); await _context.SaveChangesAsync(); //create league player list List <PlayerMyTeam> playerMyTeams = new List <PlayerMyTeam>(); IEnumerable <Player> players = await GetActivePlayerList(); foreach (Player p in players) { PlayerMyTeam pmt = new PlayerMyTeam() { PlayerID = p.PlayerID, FantasyLeagueID = fantasyLeague.FantasyLeagueID }; playerMyTeams.Add(pmt); } await _context.AddRangeAsync(playerMyTeams); await _context.SaveChangesAsync(); }
public async Task Delete(PlayerMyTeam playerMyTeam) { try { _context.PlayerMyTeam.Remove(playerMyTeam); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { throw; } }
public async Task <bool> Create(PlayerMyTeam playerMyTeam) { Player player = null; IEnumerable <PlayerMyTeam> roster = null; var playerTask = _playersService.GetPlayerAsync(playerMyTeam.PlayerID); var rosterTask = GetRosterAsync(playerMyTeam.MyTeamID); var tasks = new List <Task> { playerTask, rosterTask }; while (tasks.Any()) { Task finshed = await Task.WhenAny(tasks); if (finshed == playerTask) { tasks.Remove(playerTask); player = await playerTask; } else if (finshed == rosterTask) { tasks.Remove(rosterTask); roster = await rosterTask; } else { tasks.Remove(finshed); } } int spots = GetRosterSpots(roster, player.Position); if (player.Position == "C" && spots > 0 || player.Position != "C" && spots > 1 || await IsPlayerOnRoster(playerMyTeam.MyTeamID, playerMyTeam.PlayerID)) { return(false); } try { await _context.AddAsync(playerMyTeam); await _context.SaveChangesAsync(); return(true); } catch (DbUpdateConcurrencyException) { throw; } }
public async Task <IActionResult> Create([Bind("PlayerID,MyTeamID")] PlayerMyTeam playerMyTeam) { string pos = ""; MyTeam myTeam = null; var playerTask = (_playersService.GetPlayerAsync(playerMyTeam.PlayerID)); var myTeamTask = _myTeamsService.GetMyTeamByIDAsync(playerMyTeam.MyTeamID); var tasks = new List <Task> { playerTask, myTeamTask }; while (tasks.Any()) { Task finished = await Task.WhenAny(tasks); if (finished == playerTask) { tasks.Remove(playerTask); pos = (await playerTask).Position; } else if (finished == myTeamTask) { tasks.Remove(myTeamTask); myTeam = await myTeamTask; } } var isAuthorized = await _auth.AuthorizeAsync(User, myTeam, Operations.Create); if (!isAuthorized.Succeeded) { return(new ChallengeResult()); } if (ModelState.IsValid) { if (await _playerMyTeamService.Create(playerMyTeam)) { return(RedirectToAction("Details", "MyTeams", new { id = playerMyTeam.MyTeamID })); } else { TempData["PosMessage"] = "You cannot have that many players at that position!"; return(RedirectToAction("Create", new { teamID = playerMyTeam.MyTeamID, posFilter = pos })); } } TempData["PosMessage"] = "An error occured!"; return(RedirectToAction("Create", new { teamID = playerMyTeam.MyTeamID, posFilter = pos })); }