private static ClsTurnier LoadFromDB(int TurnierID) { ClsTurnier Turnier = new ClsTurnier(); Turnier.TKopf = ClsTurnierControler.Turnier(TurnierID); Turnier.TRunden = ClsTurnierControler.Runden(TurnierID); Turnier.TGruppen = ClsTurnierControler.Gruppen(TurnierID); Turnier.TSpiele = ClsTurnierControler.Spiele(TurnierID); Turnier.TTabellen = ClsTurnierControler.Tabellen(TurnierID); Turnier.TEreignisse = ClsTurnierControler.Ereignisse(TurnierID); return(Turnier); }
private static void SaveTabellenplatz(string Gruppe, string mannschaft, int platz) { try { List <TTabellen> e1 = ClsTurnierControler.Tabellen(ClsGlobal.Instance.TurnierID, Gruppe); TTabellen e = (from t in e1 where t.Mannschaft == mannschaft select t).FirstOrDefault(); e.fixPlatz = platz; ClsTurnierControler.SaveTabellen(e); } catch (Exception ex) { ClsError.Error(Name, MethodBase.GetCurrentMethod().ToString(), ex); } }
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); } }
/// <summary> /// Nach Rundenplazierung die Mannschften in den Folgerunden eintragen. /// </summary> /// <param name="spiel">todo: describe spiel parameter on IstMannschaftenGegenueber</param> private static void IstMannschaftenGegenueber(TSpiele spiel) { try { // Gruppenübergereifende Plaetze ermitten und mannschaften in folgerunden eintragen (1ter 1ter, 2ter 1ter,...) int grpManAnz = ClsTurnierControler.Tabellen((int)ClsGlobal.Instance.TurnierID, spiel.Gruppe).Count; // So oft wie Mannschaften je Gruppe (Anzeahl der Mannschaften wird al Platzzaehler verwendet) for (int p = 1; p <= grpManAnz; p += 1) { // alle Tabelleneintraege der Runde List <TTabellen> erg1 = ClsTurnierControler.Tabellen((int)ClsGlobal.Instance.TurnierID, spiel.Runde); // Alle x-platzierten lesen List <TTabellen> erg = (from d in erg1 where d.Platz == p select d).ToList(); if (erg != null) { // nach vorgaben sortieren erg = ClsFunktionen.STTabellem(erg); // erg enthaelt nun alle x-platzierten nach sortiervorgabe int platz = 1; for (int i = 0; i < erg.Count; i++) { string suchstr = platz.ToString() + "ter " + p.ToString() + "ter-Runde " + spiel.Runde.ToString(); List <TSpiele> s0 = ClsTurnierControler.Spiele(ClsGlobal.Instance.TurnierID); List <TSpiele> s1 = (from s in s0 where s.Status < 2 select s).ToList(); List <TSpiele> p1 = (from s in s1 where s.IstMannA == suchstr select s).ToList(); if (p1.Any()) { for (int j = 0; j < p1.Count; j++) { p1[j].IstMannA = erg[i].Mannschaft; p1[j].Status = p1[j].Status + 1; ClsTurnierControler.SaveSpiel(p1[j]); } } List <TSpiele> p2 = (from s in s1 where s.IstMannB == suchstr select s).ToList(); if (p2.Any()) { for (int j = 0; j < p1.Count; j++) { p2[j].IstMannB = erg[i].Mannschaft; p2[j].Status = p2[j].Status + 1; ClsTurnierControler.SaveSpiel(p2[j]); } } platz += 1; // suche Tabelleneinträge der folgerunde und ersetzte Mannschftsnamen List <TTabellen> tab = ClsTurnierControler.Tabellen(ClsGlobal.Instance.TurnierID); TTabellen gefunden = (from x in tab where x.Mannschaft == suchstr select x).FirstOrDefault(); if (gefunden != null) { gefunden.Mannschaft = erg[i].Mannschaft; ClsTurnierControler.SaveTabellen(gefunden); } } ClsDBVariablen.Instance.SetTabellenVariableWert("T02", ClsTabellenfunktionen.SpielplanToVariable_Json(ClsGlobal.Instance.TurnierID)); } } } catch (Exception ex) { ClsError.Error(Name, MethodBase.GetCurrentMethod().ToString(), ex); } }
/// <summary> /// Nach Gruppenplazierung die Mannschften in den Folgerunden eintragen. /// </summary> /// <param name="spiel">todo: describe spiel parameter on IstMannschaftenGI</param> private static void IstMannschaftenGI(string Gruppe) { try { // platz in Gruppe ermitteln über order by und mannschaften in folgerunden eintragen List <TTabellen> e = ClsTurnierControler.Tabellen(ClsGlobal.Instance.TurnierID, Gruppe); if (e.Any()) { for (int i = 0; i < e.Count; i++) { if (e[i] != null) { string suchstr = e[i].Platz.ToString() + "ter-" + Gruppe; // hole alle Spiele des Turniers List <TSpiele> s0 = ClsTurnierControler.Spiele(ClsGlobal.Instance.TurnierID); // filter Spiele die den Status kleiner 2 haben List <TSpiele> s1 = (from s in s0 where s.Status < 2 select s).ToList(); // suche Spiele die SuchStr in MannA haben List <TSpiele> p1 = (from s in s1 where s.IstMannA == suchstr select s).ToList(); if (p1.Any()) { for (int j = 0; j < p1.Count; j++) { p1[j].IstMannA = e[i].Mannschaft; p1[j].Status = p1[j].Status + 1; ClsTurnierControler.SaveSpiel(p1[j]); } } // suche Spiele die SuchStr in MannB haben List <TSpiele> p2 = (from s in s1 where s.IstMannB == suchstr select s).ToList(); if (p2.Any()) { for (int j = 0; j < p2.Count; j++) { p2[j].IstMannB = e[i].Mannschaft; p2[j].Status = p2[j].Status + 1; ClsTurnierControler.SaveSpiel(p2[j]); } } // suche Tabelleneinträge der folgerunde und ersetzte Mannschftsnamen List <TTabellen> tab = ClsTurnierControler.Tabellen(ClsGlobal.Instance.TurnierID); TTabellen gefunden = (from x in tab where x.Mannschaft == suchstr select x).FirstOrDefault(); if (gefunden != null) { gefunden.Mannschaft = e[i].Mannschaft; ClsTurnierControler.SaveTabellen(gefunden); } } } ClsDBVariablen.Instance.SetTabellenVariableWert("T02", ClsTabellenfunktionen.SpielplanToVariable_Json(ClsGlobal.Instance.TurnierID)); } } catch (Exception ex) { ClsError.Error(Name, MethodBase.GetCurrentMethod().ToString(), ex); } }
public static string TabelleToVariable_Json(int turnierID) { try { ClsTabellenVariabeln tv = ClsDBVariablen.Instance.GetTabellenVariable("T01"); bool kname = Convert.ToBoolean(ClsOptionsControler.Options3("kurznamen").Value); string Runde = ClsGlobal.Instance.TableFilterList.Find(x => x.Table == "T01" && x.Field == "Runde").Value; string Gruppe = ClsGlobal.Instance.TableFilterList.Find(x => x.Table == "T01" && x.Field == "Gruppe").Value; if (string.IsNullOrEmpty(Runde)) { Runde = "0"; } int runde = Convert.ToInt32(Runde); // Create a DataTable for buildup DataTable tempTable = new DataTable(); // Spalte je Anzeigespalte erstellen List <Anzeigetabelle> cols1 = ClsOptionsControler.Anzeigetabelle("T01", "std"); List <Anzeigetabelle> cols = (from x in cols1 where x.Sichtbar == 1 select x).ToList(); string[] spalten = new string[cols.Count + 1]; if (cols.Any()) { spalten[0] = "ID"; for (int i = 0; i < cols.Count; i++) { spalten[i + 1] = cols[i].DBFeld; } } // Tabelle lesen List <TTabellen> tab = ClsTurnierControler.Tabellen(turnierID); // Daten filtern if (Runde != "0") { tab = (from t in tab where t.Runde == runde select t).ToList(); } if (!string.IsNullOrEmpty(Gruppe)) { tab = (from t in tab where t.Gruppe == Gruppe select t).ToList(); } // Daten sortieren tab = (from t in tab orderby t.Runde, t.Gruppe, t.Platz select t).ToList(); //// Seite berechnen int recPerPage = tv.RecPerPage; int skip = calacSkipRecords("T02", recPerPage, (decimal)tab.Count()); // tabseite tab = (from t in tab select t).Skip(skip).Take(recPerPage).ToList(); // Werte übersetzen if (tab.Any()) { for (int i = 0; i < tab.Count; i++) { if (kname) { tab[i].Mannschaft = Kurzname(tab[i].Mannschaft); } } } // Mache aus List ein Datatable using (var reader = FastMember.ObjectReader.Create(tab, spalten)) { tempTable.Load(reader); } // Spalten übersetzen for (int i = 0; i < tempTable.Columns.Count; i++) { // Anzeigename string text = (from x in cols where x.DBFeld == tempTable.Columns[i].ColumnName select x.Anzeigename).FirstOrDefault(); if (string.IsNullOrEmpty(text)) { //text = ClsLocalisationFunctions.Tabellenfeld("Tabelle", tempTable.Columns[i].ColumnName); text = ClsTextControler.TextByNameAndNumber("Tabelle", tempTable.Columns[i].ColumnName); } if (!string.IsNullOrEmpty(text)) { tempTable.Columns[i].ColumnName = text; } } return(ConvertDatatabletoString(tempTable)); // tempTable.Dispose(); } catch (Exception ex) { ClsError.Error(Name, MethodBase.GetCurrentMethod().ToString(), ex); return(null); } }