示例#1
0
 /// <summary>
 /// Speichert das Spiel
 /// </summary>
 /// <returns></returns>
 public Spiel SaveSpiel(Spiel spiel)
 {
     return WM2010Manager.UpdateSpiel(spiel);
 }
示例#2
0
        /// <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);
            }
        }
示例#3
0
        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;
        }
示例#4
0
        /// <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;
            }
        }