public SpielErgebnis() { InitializeComponent(); Loaded += (SpielErgebnis_Loaded); Begegnung = new Begegnung(); Message = String.Empty; ProgressBarVisibility = Visibility.Collapsed; }
/// <summary> /// Ermittelt alle Begegnungen einer Gruppe /// </summary> /// <returns></returns> public Begegnung[] GetBegegnungen(int gruppenId) { var games = new List<Spiel>(); var begegnungen = new List<Begegnung>(); using (var context = new WM2010Entities()) { var mannschaften = GetMannschaften(gruppenId); foreach (var m in mannschaften) { var spiele = (from s in context.Spiel where s.Mannschaft1Id == m.MannschaftId || s.Mannschaft2Id == m.MannschaftId select s).ToList(); foreach (var spiel in spiele) { if (!games.Contains(spiel)) { spiel.SpielOrtReference.Load(); games.Add(spiel); } } } foreach (var game in games) { var begegnung = new Begegnung(); var m1 = (from m in mannschaften where game.Mannschaft1Id == m.MannschaftId select m).FirstOrDefault(); var m2 = (from m in mannschaften where game.Mannschaft2Id == m.MannschaftId select m).FirstOrDefault(); if (m1 != null && m2 != null) { begegnung.Spiel = game; begegnung.Mannschaft1Fahne = m1.Fahne; begegnung.Mannschaft1Name = m1.Land; begegnung.Mannschaft2Fahne = m2.Fahne; begegnung.Mannschaft2Name = m2.Land; begegnungen.Add(begegnung); } } return begegnungen.ToArray(); } }
public string SaveAndSetFinalrunden(Begegnung begegnung) { if (begegnung == null || begegnung.Spiel == null) throw new ArgumentNullException("begegnung"); if (begegnung.Spiel.ToreMannschaft1 == begegnung.Spiel.ToreMannschaft2) throw new ArgumentException("In den Finalrunden muss das Ergebnis eindeutig sein"); var result = WM2010Manager.UpdateSpiel(begegnung.Spiel); if (result == null) throw new Exception("Fehler beim Speichern des Spiels"); //sieger und verlierer aus der Partie ermitteln: var siegerMannschaftId = (result.ToreMannschaft1 > result.ToreMannschaft2) ? result.Mannschaft1Id.Value : result.Mannschaft2Id.Value; var verliererMannschaftId = (result.ToreMannschaft1 < result.ToreMannschaft2) ? result.Mannschaft1Id.Value : result.Mannschaft2Id.Value; Spiel spiel = new Spiel(); Spiel verliererspiel = new Spiel(); //switche das Spieldatum und lege die neuen spiele fest switch (result.DatumUhrzeit.Value.Ticks) { //achtelfinalgewinner ziehen ins viertelfinale case 634131648000000000: //Sieger als ma1 am 634136832000000000 spiel = GetFinalrundenSpiel(new DateTime(634136832000000000)); spiel.Mannschaft1Id = siegerMannschaftId; break; case 634131810000000000: //Sieger als ma2 am 634136832000000000 spiel = GetFinalrundenSpiel(new DateTime(634136832000000000)); spiel.Mannschaft2Id = siegerMannschaftId; break; case 634132512000000000: //Sieger als ma1 am 634137696000000000 spiel = GetFinalrundenSpiel(new DateTime(634137696000000000)); spiel.Mannschaft1Id = siegerMannschaftId; break; case 634132674000000000: //Sieger als ma2 am 634137696000000000 spiel = GetFinalrundenSpiel(new DateTime(634137696000000000)); spiel.Mannschaft2Id = siegerMannschaftId; break; case 634133376000000000: //Sieger als ma1 am 634136994000000000 spiel = GetFinalrundenSpiel(new DateTime(634136994000000000)); spiel.Mannschaft1Id = siegerMannschaftId; break; case 634133538000000000: //Sieger als ma2 am 634136994000000000 spiel = GetFinalrundenSpiel(new DateTime(634136994000000000)); spiel.Mannschaft2Id = siegerMannschaftId; break; case 634134240000000000: //Sieger als ma1 am 634137858000000000 spiel = GetFinalrundenSpiel(new DateTime(634137858000000000)); spiel.Mannschaft1Id = siegerMannschaftId; break; case 634134402000000000: //Sieger als ma2 am 634137858000000000 spiel = GetFinalrundenSpiel(new DateTime(634137858000000000)); spiel.Mannschaft2Id = siegerMannschaftId; break; //viertelfinalgewinner ziehen ins Halbfinale case 634136832000000000: //sieger als m1 am 634140450000000000 spiel = GetFinalrundenSpiel(new DateTime(634140450000000000)); spiel.Mannschaft1Id = siegerMannschaftId; break; case 634136994000000000: //sieger als m2 am 634140450000000000 spiel = GetFinalrundenSpiel(new DateTime(634140450000000000)); spiel.Mannschaft2Id = siegerMannschaftId; break; case 634137696000000000: //sieger als m1 am 634141314000000000 spiel = GetFinalrundenSpiel(new DateTime(634141314000000000)); spiel.Mannschaft1Id = siegerMannschaftId; break; case 634137858000000000: //sieger als m2 am 634141314000000000 spiel = GetFinalrundenSpiel(new DateTime(634141314000000000)); spiel.Mannschaft2Id = siegerMannschaftId; break; case 634140450000000000: //halbfinalverlierer //verlierer als m1 am 634143906000000000 verliererspiel = GetFinalrundenSpiel(new DateTime(634143906000000000)); verliererspiel.Mannschaft1Id = verliererMannschaftId; SaveSpiel(verliererspiel); //halbfinalgewinner //sieger als m1 am 634144770000000000 spiel = GetFinalrundenSpiel(new DateTime(634144770000000000)); spiel.Mannschaft1Id = siegerMannschaftId; break; case 634141314000000000: //halbfinalverlierer //verlierer als m2 am 634143906000000000 verliererspiel = GetFinalrundenSpiel(new DateTime(634143906000000000)); verliererspiel.Mannschaft2Id = verliererMannschaftId; SaveSpiel(verliererspiel); //halbfinalgewinner //Sieger als m2 am 634144770000000000 spiel = GetFinalrundenSpiel(new DateTime(634144770000000000)); spiel.Mannschaft2Id = siegerMannschaftId; break; default: break; } SaveSpiel(spiel); return String.Empty; }
/// <summary> /// Prueft und speichert eine Begegnung /// </summary> public void SaveBegegnung(Begegnung begegnung) { //mannschaften holen var m1 = GetMannschaft((int)begegnung.Spiel.Mannschaft1Id); var m2 = GetMannschaft((int)begegnung.Spiel.Mannschaft2Id); var gruppenId = m1.GruppeID; //spiel holen var spiel = GetSpiel(m1.MannschaftId, m2.MannschaftId); //pruefen ob begegnung schon statt fand, wenn ja dann das alte Ergebnis subtrahieren if (spiel.ToreMannschaft1 != null && spiel.ToreMannschaft2 != null) { //tore an der Mannschaft um das alte Ergebnis subtrahieren m1.Tore -= spiel.ToreMannschaft1; m2.Tore -= spiel.ToreMannschaft2; //gegentore um das alte ergebnis subtrahieren m1.GegenTore -= spiel.ToreMannschaft2; m2.GegenTore -= spiel.ToreMannschaft1; //punkte an der Mannschaft um das alte ergebnis subtrahieren if (spiel.ToreMannschaft1 != spiel.ToreMannschaft2) { if (spiel.ToreMannschaft1 > spiel.ToreMannschaft2) { m1.Punkte -= 3; } else if (spiel.ToreMannschaft1 < spiel.ToreMannschaft2) { m2.Punkte -= 3; } } else { m1.Punkte -= 1; m2.Punkte -= 1; } } //tore schreiben m1.Tore += begegnung.Spiel.ToreMannschaft1; m2.Tore += begegnung.Spiel.ToreMannschaft2; m1.GegenTore += begegnung.Spiel.ToreMannschaft2; m2.GegenTore += begegnung.Spiel.ToreMannschaft1; //punkte verteilen if (begegnung.Spiel.ToreMannschaft1 != begegnung.Spiel.ToreMannschaft2) { if (begegnung.Spiel.ToreMannschaft1 > begegnung.Spiel.ToreMannschaft2) { m1.Punkte += 3; } else if (begegnung.Spiel.ToreMannschaft1 < begegnung.Spiel.ToreMannschaft2) { m2.Punkte += 3; } } else { m1.Punkte += 1; m2.Punkte += 1; } //speichern SaveSpiel(begegnung.Spiel); SaveMannschaft(m1); SaveMannschaft(m2); //TODO //Finalrunden "bestuecken" //wenn in einer Gruppe alle Spiele gespeichert, dann den erst und zweitplazierten einsortieren var begegnungen = GetBegegnungen(m1.GruppeID); if (Array.TrueForAll(begegnungen, b => b.Spiel.Mannschaft1Id.HasValue && b.Spiel.ToreMannschaft2.HasValue)) { var sieger = GetGruppenErster(gruppenId); var zweiter = GetGruppenZweiter(gruppenId); Spiel s1 = new Spiel(); Spiel s2 = new Spiel(); switch (gruppenId) { case 1://Gruppe A //Sieger Gruppe A spielt am 26. Juni 2010, 16:00 Uhr als M1 s1 = GetFinalrundenSpiel(new DateTime(634131648000000000)); s1.Mannschaft1Id = sieger.MannschaftId; //Sieger Gruppe A spielt am 27. Juni 2010, 20:30 Uhr als M2 s2 = GetFinalrundenSpiel(new DateTime(634132674000000000)); s2.Mannschaft2Id = zweiter.MannschaftId; break; case 2://Gruppe B //Zweiter Gruppe A am 26. Juni 2010, 16:00 Uhr als M2 s1 = GetFinalrundenSpiel(new DateTime(634131648000000000)); s1.Mannschaft2Id = zweiter.MannschaftId; //Zweiter Gruppe A am 27. Juni 2010, 20:30 Uhr als M1 s2 = GetFinalrundenSpiel(new DateTime(634132674000000000)); s2.Mannschaft1Id = sieger.MannschaftId; break; case 3://Gruppe C //Sieger Gruppe C 26. Juni 2010, 20:30 Uhr als M1 s1 = GetFinalrundenSpiel(new DateTime(634131810000000000)); s1.Mannschaft1Id = sieger.MannschaftId; //Sieger 27. Juni 2010, 16:00 Uhr als M1 s2 = GetFinalrundenSpiel(new DateTime(634132512000000000)); s2.Mannschaft2Id = zweiter.MannschaftId; break; case 4: //GruppeD //Zweiter Gruppe D 26. Juni 2010, 20:30 Uhr als M2 s1 = GetFinalrundenSpiel(new DateTime(634131810000000000)); s1.Mannschaft2Id = zweiter.MannschaftId; //Zweiter D 27. Juni 2010, 16:00 Uhr als M1 s2 = GetFinalrundenSpiel(new DateTime(634132512000000000)); s2.Mannschaft1Id = sieger.MannschaftId; break; case 5: //Gruppe E //Sieger E 28. Juni 2010, 16:00 Uhr als M1 s1 = GetFinalrundenSpiel(new DateTime(634133376000000000)); s1.Mannschaft1Id = sieger.MannschaftId; //Sieger E 29. Juni 2010, 16:00 Uhr als M2 s2 = GetFinalrundenSpiel(new DateTime(634134240000000000)); s2.Mannschaft2Id = zweiter.MannschaftId; break; case 6: //Gruppe F //Zweiter F 28. Juni 2010, 16:00 Uhr als M2 s1 = GetFinalrundenSpiel(new DateTime(634133376000000000)); s1.Mannschaft2Id = zweiter.MannschaftId; //Zweiter F 29. Juni 2010, 16:00 Uhr als M1 s2 = GetFinalrundenSpiel(new DateTime(634134240000000000)); s2.Mannschaft1Id = sieger.MannschaftId; break; case 7: //Gruppe G //Sieger G 28. Juni 2010, 20:30 Uhr als M1 s1 = GetFinalrundenSpiel(new DateTime(634133538000000000)); s1.Mannschaft1Id = sieger.MannschaftId; // Sieger G 29. Juni 2010, 20:30 Uhr als M2 s2 = GetFinalrundenSpiel(new DateTime(634134402000000000)); s2.Mannschaft2Id = zweiter.MannschaftId; break; case 8: //Gruppe H //Zweiter H 28. Juni 2010, 20:30 Uhr als M2 s1 = GetFinalrundenSpiel(new DateTime(634133538000000000)); s1.Mannschaft2Id = zweiter.MannschaftId; //Zweiter H 29. Juni 2010, 20:30 Uhr als M1 s2 = GetFinalrundenSpiel(new DateTime(634134402000000000)); s2.Mannschaft1Id = sieger.MannschaftId; break; default: break; } SaveSpiel(s1); SaveSpiel(s2); } }
private void SetFinalrunde(string finalrunde) { finalRundenPanel.Children.Clear(); var image = new Image { Stretch = Stretch.None, Source = new BitmapImage(new Uri(String.Format("../Style/Images/FinalRunde{0}.png", finalrunde), UriKind.RelativeOrAbsolute)) }; image.Margin = new Thickness { Bottom = 20 }; finalRundenPanel.Children.Add(image); //reihenfolge sortieren spiele.Sort((x, y) => DateTime.Compare((DateTime)x.DatumUhrzeit, (DateTime)y.DatumUhrzeit)); foreach (var spiel in spiele) { Begegnung begegnung = new Begegnung(); begegnung.Spiel = spiel; if (spiel.Mannschaft1Id.HasValue && spiel.Mannschaft2Id.HasValue) { var m1 = _wmController.GetMannschaft(spiel.Mannschaft1Id.Value); var m2 = _wmController.GetMannschaft(spiel.Mannschaft2Id.Value); begegnung.Mannschaft1Name = m1.Land; begegnung.Mannschaft1Fahne = m1.Fahne; begegnung.Mannschaft2Name = m2.Land; begegnung.Mannschaft2Fahne = m2.Fahne; } else { switch (spiel.DatumUhrzeit.Value.Ticks) { //achtelfinale case 634131648000000000: begegnung.Mannschaft1Name = "Sieger Gruppe A"; begegnung.Mannschaft2Name = "Zweiter Gruppe B"; break; case 634131810000000000: begegnung.Mannschaft1Name = "Sieger Gruppe C"; begegnung.Mannschaft2Name = "Zweiter Gruppe D"; break; case 634132512000000000: begegnung.Mannschaft1Name = "Sieger Gruppe D"; begegnung.Mannschaft2Name = "Zweiter Gruppe C"; break; case 634132674000000000: begegnung.Mannschaft1Name = "Sieger Gruppe B"; begegnung.Mannschaft2Name = "Zweiter Gruppe A"; break; case 634133376000000000: begegnung.Mannschaft1Name = "Sieger Gruppe E"; begegnung.Mannschaft2Name = "Zweiter Gruppe F"; break; case 634133538000000000: begegnung.Mannschaft1Name = "Sieger Gruppe G"; begegnung.Mannschaft2Name = "Zweiter Gruppe H"; break; case 634134240000000000: begegnung.Mannschaft1Name = "Sieger Gruppe F"; begegnung.Mannschaft2Name = "Zweiter Gruppe E"; break; case 634134402000000000: begegnung.Mannschaft1Name = "Sieger Gruppe H"; begegnung.Mannschaft2Name = "Zweiter Gruppe G"; break; //viertelfinale case 634136832000000000: begegnung.Mannschaft1Name = "Sieger Achtelfinale 1"; begegnung.Mannschaft2Name = "Sieger Achtelfinale 2"; break; case 634136994000000000: begegnung.Mannschaft1Name = "Sieger Achtelfinale 5"; begegnung.Mannschaft2Name = "Sieger Achtelfinale 6"; break; case 634137696000000000: begegnung.Mannschaft1Name = "Sieger Achtelfinale 3"; begegnung.Mannschaft2Name = "Sieger Achtelfinale 4"; break; case 634137858000000000: begegnung.Mannschaft1Name = "Sieger Achtelfinale 7"; begegnung.Mannschaft2Name = "Sieger Achtelfinale 8"; break; //halbfinale case 634140450000000000: begegnung.Mannschaft1Name = "Sieger Viertelfinale 1"; begegnung.Mannschaft2Name = "Sieger Viertelfinale 2"; break; case 634141314000000000: begegnung.Mannschaft1Name = "Sieger Viertelfinale 3"; begegnung.Mannschaft2Name = "Sieger Viertelfinale 4"; break; //platz3 case 634143906000000000: begegnung.Mannschaft1Name = "Verlierer Halbfinale 1"; begegnung.Mannschaft2Name = "Verlierer Halbfinale 2"; break; //finale case 634144770000000000: begegnung.Mannschaft1Name = "Sieger Halbfinale 1"; begegnung.Mannschaft2Name = "Sieger Halbfinale 2"; break; default: break; } } var game = new SpieleGrid(); var gridSpiel = game.FindName("gridSpiel") as Grid; if (gridSpiel != null) { if (spiel.Mannschaft1Id.HasValue && spiel.Mannschaft2Id.HasValue) { gridSpiel.MouseLeftButtonDown += (GridSpielMouseLeftButtonDown); gridSpiel.MouseEnter += (GridSpielMouseEnter); gridSpiel.MouseLeave += (GridSpielMouseLeave); } gridSpiel.DataContext = begegnung; //im Finale zusaetzlich bilder einbauen if (begegnung.Spiel.DatumUhrzeit.Value.Ticks == 634143906000000000) { var dritterPlatzImage = new Image { Stretch = Stretch.None, Source = new BitmapImage(new Uri(String.Format("../Style/Images/Spiel.um.Platz.3.png"), UriKind.RelativeOrAbsolute)) }; dritterPlatzImage.Margin = new Thickness (0,15,0,15); finalRundenPanel.Children.Add(dritterPlatzImage); } if (begegnung.Spiel.DatumUhrzeit.Value.Ticks == 634144770000000000) { var finalImage = new Image { Stretch = Stretch.None, Source = new BitmapImage(new Uri(String.Format("../Style/Images/Finale.png"), UriKind.RelativeOrAbsolute)) }; finalImage.Margin = new Thickness (0,15,0,15); finalRundenPanel.Children.Add(finalImage); } finalRundenPanel.Children.Add(game); } } }