示例#1
0
        public SpielErgebnis()
        {
            InitializeComponent();
            Loaded += (SpielErgebnis_Loaded);

            Begegnung = new Begegnung();
            Message = String.Empty;
            ProgressBarVisibility = Visibility.Collapsed;
        }
示例#2
0
        /// <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();
            }
        }
示例#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>
        /// 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);
                }

            }

        }