private void ExpandLeagueTableForm_Load(object sender, EventArgs e)
        {
            this.dataGridViewLeaguesExpand.Columns["LeagueId3"].Visible    = false;
            this.dataGridViewLeaguesExpand.Columns["TeamId2"].Visible      = false;
            this.dataGridViewLeaguesExpand.Columns["LeagueName2"].Visible  = false;
            this.dataGridViewLeaguesExpand.Columns["CountryName2"].Visible = false;



            CompetitionInfo info       = new CompetitionInfo();
            string          LeagueName = Competitions.LeagueId;

            bindingSource.DataSource             = _competitionsRepository.GetCompetitonsInfo(LeagueName);
            dataGridViewLeaguesExpand.DataSource = bindingSource;

            dataGridViewLeaguesExpand.ColumnHeadersDefaultCellStyle.BackColor = Color.Black;
            dataGridViewLeaguesExpand.EnableHeadersVisualStyles = false;

            DataGridViewImageColumn Button = new DataGridViewImageColumn();

            Button.Image        = Image.FromFile(@"C:\Users\38599\Documents\Morningstar\Faks\2. godina\.NET\FootballData\seemore.png");
            Button.Width        = 20;
            Button.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
            Button.Name         = "See more";
            dataGridViewLeaguesExpand.Columns.Add(Button);
            dataGridViewLeaguesExpand.AutoGenerateColumns = false;

            lblLeagueName.Text  = Competitions.LeagueId;
            lblCountryName.Text = Competitions.lblCountryName;
        }
示例#2
0
        protected override void ConfigureCompetitionInfo(CompetitionInfo competitionInfo)
        {
            competitionInfo.Name        = "tic-tac-toe";
            competitionInfo.PlayerCount = Range <int> .Exactly(2);

            competitionInfo.MaxInstancesCount = 1;
        }
示例#3
0
        public static Competition CreateCompetition(CompetitionInfo info)
        {
            Competition Comp = CreateCompetition(info.CompetitionType);

            Comp.Info.Copy(info);
            return(Comp);
        }
示例#4
0
        protected override void ConfigureCompetitionInfo(CompetitionInfo competitionInfo)
        {
            competitionInfo.Name        = "prisoner-dilemma";
            competitionInfo.PlayerCount = Range <int> .Between(2, 2);

            competitionInfo.MaxInstancesCount = 3;
        }
示例#5
0
        /**
         * Function to get the info of an speficic competition
         * @param string token.
         *      The secret token key of the api.
         * @param string leagueid.
         *      The id of the competition in the api.
         * @param IHttpClientFactory _http.
         * @return CompetitionInfo.
         *      The competition info
         */
        /// <summary>
        /// Get the info of a competition
        /// </summary>
        /// <param name="token">The secret token key of the api</param>
        /// <param name="leagueid">The id of the competition in the api</param>
        /// <param name="_http">The http factory</param>
        /// <returns>The competition info</returns>
        /// See <see cref="ScheduledTasks.VirtualBets.Models.CompetitionInfo"/> to know the response structure
        public async static Task <CompetitionInfo> getCompetitionInfo(string token, string leagueid, IHttpClientFactory _http)
        {
            string path = "competitions/" + leagueid;

            string result = await getRequest(path, _http, token);

            try
            {
                CompetitionInfo comptInfo = JsonConvert.DeserializeObject <CompetitionInfo>(result);

                return(comptInfo);
            }
            catch (Exception) //Some kind of error
            {
                try           //If ok the error is that we only can do 10 requests per min
                {
                    ErrorFootballApiMessage err = JsonConvert.DeserializeObject <ErrorFootballApiMessage>(result);

                    Thread.Sleep(new TimeSpan(0, 1, 0)); //Wait a minute retry

                    if (err.errorCode == 429)
                    {
                        return(await getCompetitionInfo(token, leagueid, _http));
                    }

                    return(null);
                }
                catch (Exception)
                {
                    return(null);
                }
            }
        }
示例#6
0
        private void comboBoxLeagues_SelectedIndexChanged(object sender, EventArgs e)
        {
            CompetitionInfo info       = new CompetitionInfo();
            string          LeagueName = comboBoxLeagues.SelectedItem.ToString();

            tableBindingSource.DataSource  = _competitionsRepository.GetCompetitonsInfoShort(LeagueName);
            dataGridViewLeagues.DataSource = tableBindingSource.DataSource;

            LeagueId = comboBoxLeagues.SelectedItem.ToString();
            Fixtures fixtures = new Fixtures();

            fixtures.LeagueName = comboBoxLeagues.SelectedItem.ToString();

            LeagueName = comboBoxLeagues.SelectedItem.ToString();
            tableBindingSource2.DataSource  = _competitionsRepository.GetFixtures(fixtures);
            dataGridViewFixtures.DataSource = tableBindingSource2;

            dataGridViewLeagues.Visible  = true;
            dataGridViewFixtures.Visible = true;
            lblStandings.Visible         = true;
            labelGames.Visible           = true;
            btnExpand.Visible            = true;
            panelImage.Visible           = false;
            lblWelcome.Visible           = false;
            lblSearch.Visible            = true;
            textBoxSearch.Visible        = true;
            lblSubscribe.Visible         = true;
            txtMail.Visible      = true;
            btnSubscribe.Visible = true;
            btnResults.Visible   = true;
            btnExport.Visible    = true;
        }
示例#7
0
        private void btnRefresh_Click(object sender, EventArgs e)
        {
            CompetitionInfo info = new CompetitionInfo();

            info.LeagueName = comboBoxLeagues.SelectedItem.ToString();
            tableBindingSource.DataSource  = _competitionsRepository.refreshInfo(info);
            dataGridViewLeagues.DataSource = tableBindingSource.DataSource;
        }
        private void textBoxSearch2_TextChanged_1(object sender, EventArgs e)
        {
            string                 clubName        = textBoxSearch2.Text;
            CompetitionInfo        competitionInfo = new CompetitionInfo();
            string                 LeagueName      = Competitions.LeagueId;
            var                    clubs           = _competitionsRepository.GetCompetitonsInfo(LeagueName);
            List <CompetitionInfo> clubNames       = clubs.Where(xx => xx.clubName.ToLower().Contains(clubName.ToLower())).ToList();

            bindingSource.DataSource             = clubNames;
            dataGridViewLeaguesExpand.DataSource = bindingSource;
        }
示例#9
0
        // TODO update
        protected TableTennisTournamentPlayerVM mapToViewModel(CompetitionInfo competitionInfo, TableTennisCompetitorInfo phaseInfo)
        {
            TableTennisTournamentPlayerVM viewModel = new TableTennisTournamentPlayerVM()
            {
                CompetitorId = competitionInfo.Id,
                DisplayName  = competitionInfo.Name,
                Wins         = phaseInfo.Wins,
                Sets         = phaseInfo.Sets,
                Placement    = phaseInfo.Placement
            };

            return(viewModel);
        }
示例#10
0
        public List <TableTennisTournamentPlayerVM> GeneratePlayersViewModel(List <PhaseCompetitorInfos> phaseCompetitorInfos)
        {
            List <TableTennisTournamentPlayerVM> players = new List <TableTennisTournamentPlayerVM>();

            foreach (var phaseCompetitorInfo in phaseCompetitorInfos)
            {
                var phaseInfo = GetNewCompetitorInfo();
                phaseInfo.PopulateObject(phaseCompetitorInfo.PhaseInfoJSON);

                var competitionInfo = CompetitionInfo.DeserializeObject(phaseCompetitorInfo.CompetitionInfoJSON);
                competitionInfo.Id = phaseCompetitorInfo.CompetitorId;

                players.Add(mapToViewModel(competitionInfo, phaseInfo));
            }

            return(players);
        }
示例#11
0
        public List <CompetitionInfo> GetCompetitors(int competitionId)
        {
            List <CompetitionInfo> infos = new List <CompetitionInfo>();
            var competitors = DbContext.Competitors
                              .Include("Player")
                              .Where(x => x.IdCompetition == competitionId)
                              .Select(x => new { x.Id, x.CompetitionInfo }).ToList();

            foreach (var competitor in competitors)
            {
                var newInfo = new CompetitionInfo();
                newInfo.PopulateObject(competitor.CompetitionInfo);
                newInfo.Id = competitor.Id;

                infos.Add(newInfo);
            }

            return(infos.OrderBy(x => x.Id).ToList());
        }
示例#12
0
        //
        // ──────────────────────────────────────────────────────────────────────────────────
        //   :::::: P U B L I C   F U N C T I O N S : :  :   :    :     :        :          :
        // ──────────────────────────────────────────────────────────────────────────────────
        //

        /// <summary>
        /// Initializes or updates the matchs and teams of a competition
        /// </summary>
        /// <param name="leagueId">The id in the api of the competition</param>
        public async Task InitializeAsync(string leagueId)
        {
            string token   = _configuration["footballApi:token"];
            bool   correct = true;

            CompetitionMatches comptMatchs = await APIRequest.getMatchesFromCompetition(token, leagueId, _http);

            CompetitionInfo comptInfo = await APIRequest.getCompetitionInfo(token, leagueId, _http);

            if (comptInfo == null)
            {
                return;
            }
            int actualMatchD = comptInfo.currentSeason.currentMatchday + 1;

            Competition league = FootballInitializers.initializeLeague(comptMatchs.competition.name, _context);


            comptMatchs.matches.ForEach(match =>
            {
                if (match.matchday <= actualMatchD)
                {
                    Team homeTeam = FootballInitializers.initializeTeam(match.homeTeam.name, _context);
                    Team awayTeam = FootballInitializers.initializeTeam(match.awayTeam.name, _context);

                    //There is any error inserting or updating the new matchday
                    if (!FootballInitializers.updateMatchDay(match, league, homeTeam, awayTeam, _context))
                    {
                        correct = false;
                    }
                }
            });

            league.actualMatchDay = actualMatchD;
            _context.Competitions.Update(league); //Set the actual matchday

            if (correct)
            {
                _context.SaveChanges();
            }
        }
示例#13
0
        public static bool Edit(CompetitionInfo info)
        {
            fCompetitionInfo form = new fCompetitionInfo();

            form.cbxChangesRating.Checked = info.ChangesRating;
            form.txtCompetitionName.Text  = info.Name;
            form.cbxGameType.Items.AddRange(Globals.Games.Values.ToArray());
            form.cbxGameType.SelectedItem = info.SportType;
            form.cbxCompetitionType.Items.Clear();
            form.cbxCompetitionType.Items.AddRange(CompetitionType.TypeList.Values.ToArray());
            form.cbxCompetitionType.SelectedItem = info.CompetitionType;

            if (form.ShowDialog() == DialogResult.OK)
            {
                info.Name            = form.txtCompetitionName.Text.Trim();
                info.SportType       = (TypeOfSport)(form.cbxGameType.SelectedItem);
                info.CompetitionType = form.cbxCompetitionType.SelectedItem as CompetitionType;
                info.ChangesRating   = form.cbxChangesRating.Checked && form.cbxChangesRating.Enabled;
                return(true);
            }
            return(false);
        }
        private void btnCompetitionAdd_Click(object sender, EventArgs e)
        {
#if BETA
            if (FTournament.Competitions.Count >= EditionManager.MaxTournamentCount)
            {
                WindowSkin.MessageBox.Show(Localizator.Dictionary.GetString("BETA_LIMIT_COMPETITIONS"));
                return;
            }
#endif

            CompetitionInfo info = new CompetitionInfo();
            info.TournamentId = FTournament.Info.Id;
            info.Date         = FTournament.Info.DateBegin;
            if (fCompetitionInfo.Edit(info))
            {
                Competition competition = CompetitionFactory.CreateCompetition(info);
                DatabaseManager.CurrentDb.CompetitionInfoSave(competition.Info);
                FTournament.Competitions.Add(competition.Info.Id, competition);
                fCompetition.Edit(competition);
            }
            UpdateCompetitionGrid();
        }
示例#15
0
        public Dictionary <int, Competitor> InsertNewCompetitors(Competition competition, List <CompetitorCreationInfoDTO> competitors)
        {
            Dictionary <int, Competitor> newCompetitors = new Dictionary <int, Competitor>();

            foreach (var competitor in competitors)
            {
                var player = new Player();
                player.DisplayName = competitor.Name;
                DbContext.Players.Add(player);

                var competitorInfo = new CompetitionInfo(competitor);
                var dbCompetitor   = new Competitor()
                {
                    Player          = player,
                    Competition     = competition,
                    CompetitionInfo = competitorInfo.SerializeObject()
                };
                DbContext.Competitors.Add(dbCompetitor);
                newCompetitors.Add(competitor.Id, dbCompetitor);
            }

            return(newCompetitors);
        }
示例#16
0
        public void UpdateCompetitors(int competitionId, List <CompetitorCreationInfoDTO> competitors)
        {
            var existingCompetitors = DbContext.Competitors.Where(x => x.IdCompetition == competitionId).ToList();
            var newCompetitors      = new List <CompetitorCreationInfoDTO>();
            var competitorsToRemove = new List <Competitor>();

            foreach (var existingCompetitor in existingCompetitors)
            {
                if (!competitors.Any(x => x.Id == existingCompetitor.Id))
                {
                    competitorsToRemove.Add(existingCompetitor);
                }
                else
                {
                    var competitorInfo = new CompetitionInfo(competitors.FirstOrDefault(x => x.Id == existingCompetitor.Id));
                    existingCompetitor.CompetitionInfo = competitorInfo.SerializeObject();
                    competitors.RemoveAt(competitors.FindIndex(x => x.Id == existingCompetitor.Id));
                }
            }

            DbContext.Competitors.RemoveRange(competitorsToRemove);
            InsertNewCompetitors(DbContext.Competitions.First(x => x.Id == competitionId), competitors);
        }
示例#17
0
        protected override void OnMouseMove(MouseEventArgs e)
        {
            base.OnMouseMove(e);
            if (RS == null)
            {
                return;
            }
            Point cell;

            if (MouseToCell(e.Location, out cell) && (RS.Players.Count > cell.Y) && (RS.Competitions.Count > cell.X) && (cell.X - ViewColFrom < VisibleColCount))
            {
                Point loc = Rect_Results.Location;
                loc.Offset((cell.X - ViewColFrom + 1) * ColWidth_C - ColWidth_C / 2, (cell.Y - ViewRowFrom) * Height_Row + 2 - pnlInfo.Height);
                //lblCellInfo.Text = String.Format("{0}x{1}", cell.X, cell.Y);
                pnlInfo.Location = loc;
                int             playerId = FPlayers[cell.Y].Id;
                CompetitionInfo comp     = RS.Competitions[cell.X];
                if (comp.Results.ContainsKey(playerId))
                {
                    PlayersCompetitionResult res = comp.Results[playerId];
                    lblInfoRatingBegin.Text = res.RatingBegin.ToString();
                    lblInfoDelta.Text       = res.Delta.ToString();
                    lblInfoPenalty.Text     = (res.Penalty == 0) ? "-" : res.Penalty.ToString();
                    lblInfoRating.Text      = (res.RatingBegin + res.Delta).ToString();
                    pnlInfo.Visible         = true;
                    pnlInfo.BringToFront();
                }
                else
                {
                    pnlInfo.Visible = false;
                }
            }
            else
            {
                pnlInfo.Visible = false;
            }
        }
示例#18
0
 public static async Task <TeamsInfo> GetTeams(this CompetitionInfo info) => await Rest.Get <TeamsInfo>(info.Links.Teams.Href);
示例#19
0
 public static async Task <FixturesInfo> GetFixtures(this CompetitionInfo info) => await Rest.Get <FixturesInfo>(info.Links.Fixtures.Href);
示例#20
0
 public static async Task <LeagueTable> GetLeagueTable(this CompetitionInfo info) => await Rest.Get <LeagueTable>(info.Links.LeagueTable.Href);
示例#21
0
 public static async Task <LeagueTable> GetLeagueTable(this CompetitionInfo info, int matchDay) => await Rest.Get <LeagueTable>($"{info.Links.LeagueTable.Href}?matchday={matchDay}");