/// <summary> /// Speichert das Spiel /// </summary> /// <returns></returns> public Spiel SaveSpiel(Spiel spiel) { return WM2010Manager.UpdateSpiel(spiel); }
/// <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); } }
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> /// Methode zum Aendern eines Spiels /// </summary> public static Spiel UpdateSpiel(Spiel spiel) { if (spiel == null) throw new ArgumentNullException("spiel"); using (var context = new WM2010Entities()) { var so = CqSpiel.Invoke(context, spiel.Id); if (so == null) return null; context.ApplyPropertyChanges(so.EntityKey.EntitySetName, spiel); context.SaveChanges(); context.Refresh(RefreshMode.StoreWins, so); so.SpielOrtReference.Load(); return so; } }