Example #1
0
        private static void TabCalc(int turnierID, string gruppe)
        {
            try
            {
                // Tabellenupdate
                List <TTabellen> mannschaften = ClsTurnierControler.Tabellen(turnierID, gruppe);
                if (mannschaften.Any())
                {
                    List <TTabellen> unsorted1 = Settablevalues(turnierID, gruppe, mannschaften);
                    for (int i = 0; i < unsorted1.Count; i++)
                    {
                        unsorted1[i].Direkterpunktvergleich       = unsorted1.Count;
                        unsorted1[i].Direktererweitertervergleich = unsorted1.Count;
                        ClsTurnierControler.SaveTabellen(unsorted1[i]);
                    }

                    // Dierektervergleich
                    // ermittel ob es gleiche punktanzahl gibt
                    List <int> test = unsorted1.GroupBy(x => x.Punkte).Select(y => y.Key).ToList();

                    // alle pläzte duchgehen und prüfen ob es noch weitere Plaetze mit gleicher punktzahl gibt
                    for (int i = 0; i < test.Count; i++)
                    {
                        List <TTabellen> newlist = ClsTurnierControler.Tabellen(turnierID, gruppe);
                        List <TTabellen> dist    = (from x in newlist where x.Punkte == test[i] select x).ToList();
                        if (dist.Count > 1)
                        {
                            // nur über Punkte ausrechnen
                            List <TTabellen> unsorted = new List <TTabellen>(Settablevalues(turnierID, gruppe, dist).ToList());
                            List <TTabellen> sorted   = unsorted.OrderByDescending(x => x.Punkte).ToList();
                            for (int p = 0; p < sorted.Count; p += 1)
                            {
                                TTabellen row = sorted[p];
                                ClsTurnierControler.SaveTabellenDVP(row, p);
                            }

                            // über Punkte und Tore ausrechnen
                            sorted = unsorted.OrderByDescending(x => x.Punkte).ThenByDescending(y => y.Tore).ThenBy(z => z.Gegentore).ToList();
                            for (int p = 0; p < sorted.Count; p += 1)
                            {
                                TTabellen row = sorted[p];
                                ClsTurnierControler.SaveTabellenDVPV(row, p);
                            }
                        }
                    }
                }

                // Gruppenplaetze eintragen
                List <TTabellen> tabelle = ClsTurnierControler.Tabellen(turnierID, gruppe);

                if (tabelle.Any())
                {
                    // Nach Vorgaben sortieren
                    List <TTabellen> sortedtabelle = ClsFunktionen.STTabellem(tabelle);

                    // Plaetze eintragen
                    int platz = 1;
                    for (int i = 0; i < sortedtabelle.Count; i++)
                    {
                        if (sortedtabelle[i] != null)
                        {
                            sortedtabelle[i].Platz = platz;
                            ClsTurnierControler.SaveTabellen(sortedtabelle[i]);
                            platz += 1;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ClsError.Error(Name, MethodBase.GetCurrentMethod().ToString(), ex);
            }
        }