Esempio n. 1
0
        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();
        }
Esempio n. 2
0
 public async Task Delete(PlayerMyTeam playerMyTeam)
 {
     try
     {
         _context.PlayerMyTeam.Remove(playerMyTeam);
         await _context.SaveChangesAsync();
     }
     catch (DbUpdateConcurrencyException)
     {
         throw;
     }
 }
Esempio n. 3
0
        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;
            }
        }
Esempio n. 4
0
        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 }));
        }