public async Task <Task> OnDeleteParticipant(TournamentMember member, int tournamentId)
        {
            string api_key = Configuration.GetValue <string>("ConnectionStrings:Challonge_Key");
            string url     = String.Format("https://api.challonge.com/v1/tournaments/{1}/participants/{2}.json?api_key={0}", api_key, tournamentId, member.ExternalID);

            //var request = new HttpRequestMessage(HttpMethod.Post, url);
            var client = _clientFactory.CreateClient();

            var response = await client.DeleteAsync(url);

            using var responseStream = await response.Content.ReadAsStreamAsync();

            var reponseString = await response.Content.ReadAsStringAsync();

            try
            {
                var data = await JsonSerializer.DeserializeAsync <TournamentItem>(responseStream);
            }
            catch (Exception ex)
            {
                string exce = ex.Message;
            }

            return(Task.CompletedTask);
        }
        public async Task <Task> LeaveTournament([Bind("TournamentMemberId", "FkTeam", "FkTournament")] TournamentMember tournamentMember)
        {
            var tournament   = _context.Tournament.Where(x => x.TournamentId == tournamentMember.FkTournament).FirstOrDefault();
            var deleteMember = _context.TournamentMember.FirstOrDefault(x => x.TournamentMemberId == tournamentMember.TournamentMemberId);
            await chall.OnDeleteParticipant(deleteMember, tournament.ExternalID);


            _context.TournamentMember.Remove(deleteMember);
            await _context.SaveChangesAsync();

            return(Task.CompletedTask);
        }
        public async Task <Task> Tournament([Bind("TournamentMemberId", "FkTeam", "FkTournament")] TournamentMember tournamentMember)
        {
            var tournament = await _context.Tournament.FindAsync(tournamentMember.FkTournament);

            var team = await _context.Team.FindAsync(tournamentMember.FkTeam);

            if (ModelState.IsValid)
            {
                tournamentMember.ExternalID = await chall.OnPostParticipant(tournament.ExternalID, team.Name);

                _context.Add(tournamentMember);
                await _context.SaveChangesAsync();
            }
            return(Task.CompletedTask);
        }
        public async Task <IActionResult> Tournament(int id)
        {
            var tournaments = _context.Tournament.Include(t => t.TournamentMember);
            var tournament  = await tournaments.Where(t => t.TournamentId == id).FirstOrDefaultAsync();

            var tournamentTeams   = _context.TournamentMember.Where(x => x.FkTournament == id);
            var tournamentMembers = from first in _context.Team
                                    join second in tournamentTeams
                                    on first.TeamId equals second.FkTeam
                                    select first;
            var user             = GetCurrentUser();
            var userTeams        = _context.Team.Where(x => x.TeamMember.Any(y => y.FkUser == user.UserId) && x.FkGameType == tournament.FkGameType);
            var tournamentMember = new TournamentMember();

            if (tournamentTeams.Count() > 0)
            {
                var alreadyParticipant = from first in tournamentTeams
                                         join second in userTeams
                                         on first.FkTeam equals second.TeamId
                                         select first;
                tournamentMember = alreadyParticipant.FirstOrDefault();
            }
            if (tournamentMember != null)
            {
                ViewData["myTeam"] = _context.Team.FirstOrDefault(x => x.TeamId == tournamentMember.FkTeam);
            }
            var teams = new SelectList(userTeams, "TeamId", "Name");

            var teamsWithMembers = new List <TeamWithMembers>();
            var justAList        = tournamentMembers.ToList();

            foreach (var item in justAList)
            {
                teamsWithMembers.Add(new TeamWithMembers(_context.TeamMember.Where(p => p.FkTeam == item.TeamId).Include(x => x.FkUserNavigation).ToList(), item));
            }
            ViewData["tournamentTeams"] = teamsWithMembers;
            TournamentData data = new TournamentData(tournament, teams, tournamentMember);

            return(View(data));
        }
 public TournamentData(Tournament tournament, SelectList teams, TournamentMember participant)
 {
     Tournament       = tournament;
     Teams            = teams;
     TournamentMember = participant;
 }