Пример #1
0
		public FootballLeaguePage()
		{
			InitializeComponent();
			DataContext = this;
			Settings.LogPageOpened(this);

			League = new FootballLeague();
			FilterStateList();
			FilterTeamList();
		}
Пример #2
0
        public FootballLeaguePage()
        {
            InitializeComponent();
            DataContext = this;
            Settings.LogPageOpened(this);

            League = new FootballLeague();
            FilterStateList();
            FilterTeamList();
        }
Пример #3
0
        /// <summary>
        /// Erstellt den Code für die Tabelle der angegebenen <see cref="FootballLeague"/>
        /// </summary>
        /// <param name="league"><see cref="FootballLeague"/> der zu generierenden Tabelle</param>
        /// <param name="qual1Count">Anzahl der Qual1-Plätze</param>
        /// <param name="qual2Count">Anzahl der Qual2-Plätze</param>
        /// <returns>Generierten Tabellencode</returns>
        public static string GenerateTableCode(FootballLeague league, int qual1Count, int qual2Count)
        {
            StringBuilder sb = new StringBuilder(Settings.WikiStrings.FootballLeagueTableHeader);

            int position = 1;

            foreach (DataRow row in league.Table.Rows)
            {
                try
                {
                    var team         = row["Team"] as FootballTeam;
                    var matches      = (int)row["Matches"];
                    var win          = (int)row["Win"];
                    var drawn        = (int)row["Drawn"];
                    var lose         = (int)row["Lose"];
                    var goalsFor     = (int)row["GoalsFor"];
                    var goalsAgainst = (int)row["GoalsAgainst"];
                    var goalsString  = String.Format("{0}:{1}", goalsFor, goalsAgainst);
                    var points       = (int)row["Points"];

                    string classString = String.Empty;
                    if (position <= qual1Count)
                    {
                        classString = Settings.WikiStrings.ClassQual1;
                    }
                    else if (position - qual1Count <= qual2Count)
                    {
                        classString = Settings.WikiStrings.ClassQual2;
                    }

                    sb.AppendFormat(Settings.WikiStrings.FootballLeagueTableElememt, classString, position++, team.Name, matches, win, drawn, lose, goalsString, points);
                }
                catch (Exception e)
                {
                    System.Diagnostics.Debug.WriteLine(e);
                }
            }

            sb.Append(WikiStrings.TableEnd);
            return(sb.ToString());
        }
Пример #4
0
        /// <summary>
        /// Generiert den Code für die Darstellung der Ergebnisse der angegebenen <see cref="FootballLeague"/> und nutzt dazu die angegebene <see cref="LeagueWikiTemplate"/>
        /// </summary>
        /// <param name="league"><see cref="FootballLeague"/> der darzustellenden Ergebnisse</param>
        /// <param name="template"><see cref="LeagueWikiTemplate"/> der darzustellenden Ergebnisse</param>
        /// <returns>Generierten Ergebniscode</returns>
        public static string GenerateResultsCode(FootballLeague league, LeagueWikiTemplate template)
        {
            if (template == null)
            {
                throw new NotImplementedException("Results output without template not implemented");
            }

            var templateRegex  = new Regex(WikiStrings.TemplateRegexString);
            var teamRegex      = new Regex(@"(A\d+)");
            var teamIndexRegex = new Regex(@"(\d+)");
            var templateCode   = Regex.Replace(template.TemplateCode, @"\r\n?|\n", String.Empty);

            string[] templateLines = templateCode.Split('|');
            string[] filledLines   = new string[templateLines.Length + 1];

            // Vorlagenzeilen einzeln durchgehen
            for (int i = 0; i < templateLines.Length; i++)
            {
                var line = templateLines[i].Replace(WikiStrings.TemplateEnd, String.Empty);

                var templateMatch = templateRegex.Match(line);
                var teamMatches   = teamRegex.Matches(line);

                // Wenn nur ein Team enthalten ist: Teamnamen
                if (teamMatches.Count == 1)
                {
                    var index = Int32.Parse(teamMatches[0].Value.Substring(1));
                    var team  = league.Teams[index - 1];
                    line = String.Format("{0}{1}{2}", WikiStrings.TemplateVariableStartRegexString, line, team.Name);
                }

                // Wenn 2 Teams enthalten sind: Ergebnisse oder Zusatzdaten
                else if (teamMatches.Count == 2)
                {
                    var index1 = Int32.Parse(teamMatches[0].Value.Substring(1));
                    var team1  = league.Teams[index1 - 1];
                    var index2 = Int32.Parse(teamMatches[1].Value.Substring(1));
                    var team2  = league.Teams[index2 - 1];

                    var match = league.Matches.Where(x => x.TeamA == team1 && x.TeamB == team2).FirstOrDefault();
                    line = String.Format("{0}{1}", WikiStrings.TemplateVariableStartRegexString, line);

                    // Datumsangabe
                    if (HasLeagueTemplateDate(line))
                    {
                        line += match.Date.ToShortDateString();
                    }
                    // Ortsangabe
                    else if (HasLeagueTemplateLocation(line))
                    {
                        line += match.TeamA.Stadium.City;
                    }
                    // Spielergebnis
                    else
                    {
                        line += String.Format("{0}:{1}", match.ResultA, match.ResultB);
                    }
                }

                // Wenn nicht benötigte Variable
                else if (templateMatch.Success)
                {
                    line = (line.StartsWith(WikiStrings.TemplateVariableStartRegexString) ? line : String.Format("{0}{1}", WikiStrings.TemplateVariableStartRegexString, line));
                }

                filledLines[i] = line;
            }
            filledLines[filledLines.Length - 1] = WikiStrings.TemplateEnd;

            return(String.Join(Environment.NewLine, filledLines));
        }
Пример #5
0
 /// <summary>
 /// Generiert den Code für die Darstellung der Ergebnisse der angegebenen <see cref="FootballLeague"/> und nutzt dazu die angegebene <see cref="LeagueWikiTemplate"/> asynchron
 /// </summary>
 /// <param name="league"><see cref="FootballLeague"/> der darzustellenden Ergebnisse</param>
 /// <param name="template"><see cref="LeagueWikiTemplate"/> der darzustellenden Ergebnisse</param>
 /// <returns>Generierten Ergebniscode</returns>
 public async static Task <string> GenerateResultsCodeAsync(FootballLeague league, LeagueWikiTemplate template)
 {
     return(await Task.Run(() => GenerateResultsCode(league, template)));
 }
Пример #6
0
 /// <summary>
 /// Erstellt den Code für die Tabelle der angegebenen <see cref="FootballLeague"/> asynchron
 /// </summary>
 /// <param name="league"><see cref="FootballLeague"/> der zu generierenden Tabelle</param>
 /// <param name="qual1Count">Anzahl der Qual1-Plätze</param>
 /// <param name="qual2Count">Anzahl der Qual2-Plätze</param>
 /// <returns>Generierten Tabellencode</returns>
 public async static Task <string> GenerateTableCodeAsync(FootballLeague league, int qual1Count, int qual2Count)
 {
     return(await Task.Run(() => GenerateTableCode(league, qual1Count, qual2Count)));
 }
Пример #7
0
		/// <summary>
		/// Generiert den Code für die Darstellung der Ergebnisse der angegebenen <see cref="FootballLeague"/> und nutzt dazu die angegebene <see cref="LeagueWikiTemplate"/>
		/// </summary>
		/// <param name="league"><see cref="FootballLeague"/> der darzustellenden Ergebnisse</param>
		/// <param name="template"><see cref="LeagueWikiTemplate"/> der darzustellenden Ergebnisse</param>
		/// <returns>Generierten Ergebniscode</returns>
		public static string GenerateResultsCode(FootballLeague league, LeagueWikiTemplate template)
		{
			if(template == null)
				throw new NotImplementedException("Results output without template not implemented");

			var templateRegex = new Regex(WikiStrings.TemplateRegexString);
			var teamRegex = new Regex(@"(A\d+)");
			var teamIndexRegex = new Regex(@"(\d+)");
			var templateCode = Regex.Replace(template.TemplateCode, @"\r\n?|\n", String.Empty);
			string[] templateLines = templateCode.Split('|');
			string[] filledLines = new string[templateLines.Length + 1];

			// Vorlagenzeilen einzeln durchgehen
			for(int i = 0; i < templateLines.Length; i++)
			{
				var line = templateLines[i].Replace(WikiStrings.TemplateEnd, String.Empty);

				var templateMatch = templateRegex.Match(line);
				var teamMatches = teamRegex.Matches(line);

				// Wenn nur ein Team enthalten ist: Teamnamen
				if(teamMatches.Count == 1)
				{
					var index = Int32.Parse(teamMatches[0].Value.Substring(1));
					var team = league.Teams[index - 1];
					line = String.Format("{0}{1}{2}", WikiStrings.TemplateVariableStartRegexString, line, team.Name);
				}

				// Wenn 2 Teams enthalten sind: Ergebnisse oder Zusatzdaten
				else if(teamMatches.Count == 2)
				{
					var index1 = Int32.Parse(teamMatches[0].Value.Substring(1));
					var team1 = league.Teams[index1 - 1];
					var index2 = Int32.Parse(teamMatches[1].Value.Substring(1));
					var team2 = league.Teams[index2 - 1];

					var match = league.Matches.Where(x => x.TeamA == team1 && x.TeamB == team2).FirstOrDefault();
					line = String.Format("{0}{1}", WikiStrings.TemplateVariableStartRegexString, line);

					// Datumsangabe
					if(HasLeagueTemplateDate(line))
					{
						line += match.Date.ToShortDateString();
					}
					// Ortsangabe
					else if(HasLeagueTemplateLocation(line))
					{
						line += match.TeamA.Stadium.City;
					}
					// Spielergebnis
					else
					{
						line += String.Format("{0}:{1}", match.ResultA, match.ResultB);
					}
				}

				// Wenn nicht benötigte Variable
				else if(templateMatch.Success)
				{
					line = (line.StartsWith(WikiStrings.TemplateVariableStartRegexString) ? line : String.Format("{0}{1}", WikiStrings.TemplateVariableStartRegexString, line));
				}

				filledLines[i] = line;

			}
			filledLines[filledLines.Length - 1] = WikiStrings.TemplateEnd;

			return String.Join(Environment.NewLine, filledLines);
		}
Пример #8
0
		/// <summary>
		/// Generiert den Code für die Darstellung der Ergebnisse der angegebenen <see cref="FootballLeague"/> und nutzt dazu die angegebene <see cref="LeagueWikiTemplate"/> asynchron
		/// </summary>
		/// <param name="league"><see cref="FootballLeague"/> der darzustellenden Ergebnisse</param>
		/// <param name="template"><see cref="LeagueWikiTemplate"/> der darzustellenden Ergebnisse</param>
		/// <returns>Generierten Ergebniscode</returns>
		public async static Task<string> GenerateResultsCodeAsync(FootballLeague league, LeagueWikiTemplate template)
		{
			return await Task.Run(() => GenerateResultsCode(league, template));
		}
Пример #9
0
		/// <summary>
		/// Erstellt den Code für die Tabelle der angegebenen <see cref="FootballLeague"/>
		/// </summary>
		/// <param name="league"><see cref="FootballLeague"/> der zu generierenden Tabelle</param>
		/// <param name="qual1Count">Anzahl der Qual1-Plätze</param>
		/// <param name="qual2Count">Anzahl der Qual2-Plätze</param>
		/// <returns>Generierten Tabellencode</returns>
		public static string GenerateTableCode(FootballLeague league, int qual1Count, int qual2Count)
		{
			StringBuilder sb = new StringBuilder(Settings.WikiStrings.FootballLeagueTableHeader);

			int position = 1;
			foreach(DataRow row in league.Table.Rows)
			{
				try
				{
					var team = row["Team"] as FootballTeam;
					var matches = (int) row["Matches"];
					var win = (int) row["Win"];
					var drawn = (int) row["Drawn"];
					var lose = (int) row["Lose"];
					var goalsFor = (int) row["GoalsFor"];
					var goalsAgainst = (int) row["GoalsAgainst"];
					var goalsString = String.Format("{0}:{1}", goalsFor, goalsAgainst);
					var points = (int) row["Points"];

					string classString = String.Empty;
					if(position <= qual1Count)
						classString = Settings.WikiStrings.ClassQual1;
					else if(position - qual1Count <= qual2Count)
						classString = Settings.WikiStrings.ClassQual2;

					sb.AppendFormat(Settings.WikiStrings.FootballLeagueTableElememt, classString, position++, team.Name, matches, win, drawn, lose, goalsString, points);
				}
				catch(Exception e)
				{
					System.Diagnostics.Debug.WriteLine(e);
				}
			}

			sb.Append(WikiStrings.TableEnd);
			return sb.ToString();
		}
Пример #10
0
		/// <summary>
		/// Erstellt den Code für die Tabelle der angegebenen <see cref="FootballLeague"/> asynchron
		/// </summary>
		/// <param name="league"><see cref="FootballLeague"/> der zu generierenden Tabelle</param>
		/// <param name="qual1Count">Anzahl der Qual1-Plätze</param>
		/// <param name="qual2Count">Anzahl der Qual2-Plätze</param>
		/// <returns>Generierten Tabellencode</returns>
		public async static Task<string> GenerateTableCodeAsync(FootballLeague league, int qual1Count, int qual2Count)
		{
			return await Task.Run(() => GenerateTableCode(league, qual1Count, qual2Count));
		}
Пример #11
0
		/// <summary>
		/// Prüft, ob in der Gruppe 2 Mannschaften oder mehr aus dem gleichen Staat sind
		/// </summary>
		/// <param name="group">Gruppe</param>
		/// <returns>True, wenn 2 oder mehr Mannschaften aus dem gleichen Staat</returns>
		private bool AreSameStatesInGroup(FootballLeague group)
		{
			return (group.Teams[0].State == group.Teams[1].State) || (group.Teams[0].State == group.Teams[2].State) ||
				(group.Teams[0].State == group.Teams[3].State) || (group.Teams[1].State == group.Teams[2].State) ||
				(group.Teams[1].State == group.Teams[3].State) || (group.Teams[2].State == group.Teams[3].State);
		}
Пример #12
0
 /// <summary>
 /// Prüft, ob in der Gruppe 2 Mannschaften oder mehr aus dem gleichen Staat sind
 /// </summary>
 /// <param name="group">Gruppe</param>
 /// <returns>True, wenn 2 oder mehr Mannschaften aus dem gleichen Staat</returns>
 private bool AreSameStatesInGroup(FootballLeague group)
 {
     return((group.Teams[0].State == group.Teams[1].State) || (group.Teams[0].State == group.Teams[2].State) ||
            (group.Teams[0].State == group.Teams[3].State) || (group.Teams[1].State == group.Teams[2].State) ||
            (group.Teams[1].State == group.Teams[3].State) || (group.Teams[2].State == group.Teams[3].State));
 }