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 void LoadSpieleToTE() { try { List <TSpiele> tee = ClsTurnierControler.Spiele(ClsGlobal.Instance.TurnierID); if (!tee.Any()) { return; } } catch (Exception ex) { ClsError.Error(Name, MethodBase.GetCurrentMethod().ToString(), ex); } }
/// <summary> /// findet das nächste Spiel /// </summary> /// <param name="pos"></param> /// <param name="turnierID"></param> /// <returns></returns> public static TSpiele FindNext(int pos, int turnierID) { try { TKopf turnierk = ClsTurnierControler.Turnier(turnierID); if (turnierk.status == 3) { return(null); } List <TSpiele> spiele1; if (turnierk.Matrix != "AdHoc") { spiele1 = ClsTurnierControler.Spiele(turnierID, GetActualRoundNo(turnierID)); } else { spiele1 = ClsTurnierControler.Spiele(turnierID); } List <TSpiele> spiele2 = (from x in spiele1 where x.Status == 2 select x).ToList(); if (!spiele2.Any()) { // MessageBox.Show("Es ist kein Spiel mehr offen.", "Meldung..."); ////ClsTranslateControls.ShowMessage("M0018", "Meldung", new object[] { "\n" }, MessageBoxButtons.OK); return(null); } if (pos >= spiele2.Count) { return(null); } else { return(spiele2[pos]); } } catch (Exception ex) { ClsError.Error(Name, MethodBase.GetCurrentMethod().ToString(), ex); return(new TSpiele()); } }
private static List <TTabellen> Settablevalues(int turnierID, string gruppe, List <TTabellen> mannschaften) { try { List <string> mannamen = mannschaften.Select(x => x.Mannschaft).ToList(); // Tabellenupdate if (mannschaften.Any()) { for (int i = 0; i < mannschaften.Count; i++) { // Spiele lesen List <TSpiele> spiele1 = ClsTurnierControler.Spiele(turnierID, gruppe); List <TSpiele> spiele = (from e in spiele1 where (e.IstMannA == mannschaften[i].Mannschaft && mannamen.Contains(e.IstMannB)) || (e.IstMannB == mannschaften[i].Mannschaft && mannamen.Contains(e.IstMannA)) select e).ToList(); // Spiele Auswerten int punkte = (from TSpiele e in spiele where e.IstMannA == mannschaften[i].Mannschaft select e.PunkteA).Sum() + (from TSpiele e in spiele where e.IstMannB == mannschaften[i].Mannschaft select e.PunkteB).Sum(); int tore = (from TSpiele e in spiele where e.IstMannA == mannschaften[i].Mannschaft select e.ToreA).Sum() + (from TSpiele e in spiele where e.IstMannB == mannschaften[i].Mannschaft select e.ToreB).Sum(); int gegentore = (from TSpiele e in spiele where e.IstMannA == mannschaften[i].Mannschaft select e.ToreB).Sum() + (from TSpiele e in spiele where e.IstMannB == mannschaften[i].Mannschaft select e.ToreA).Sum(); int spielanz = (from TSpiele e in spiele where e.IstMannA == mannschaften[i].Mannschaft && e.Status == 3 select e).Count() + (from TSpiele e in spiele where e.IstMannB == mannschaften[i].Mannschaft && e.Status == 3 select e).Count(); // gegentore wenn beide nicht da int anz = (from e in spiele1 where (e.IstMannA == mannschaften[i].Mannschaft && e.Status == 4) || (e.IstMannB == mannschaften[i].Mannschaft && e.Status == 4) select e).Count(); gegentore += (anz * 5); mannschaften[i].Punkte = punkte; mannschaften[i].Tore = tore; mannschaften[i].Gegentore = gegentore; mannschaften[i].Spiele = spielanz; mannschaften[i].Torverhaeltnis = tore - gegentore; } } return(mannschaften); } catch (Exception ex) { ClsError.Error(Name, MethodBase.GetCurrentMethod().ToString(), ex); return(new List <TTabellen>()); } }
/// <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); } }
/// <summary> /// Spielendebehandlung /// </summary> /// <param name="spiel"></param> /// <param name="beidenichts"></param> /// <returns></returns> public static int Spiel_beenden(TSpiele spiel, bool beidenichts = false) { try { bool rundenwechsel = false; if (beidenichts == false) { // wenn nur 2 Mannschaften in Gruppe dann Unentschieden nicht erlaubt List <TSpiele> sl1 = ClsTurnierControler.Spiele(ClsGlobal.Instance.TurnierID); int anzGrMan = (from TSpiele tee in sl1 where tee.Gruppe == spiel.Gruppe select tee).Count(); if (anzGrMan == 1 && spiel.ToreA == spiel.ToreB) { ClsMessage.SendMessage("In dieser Gruppe ist kein Unentschieden erlaubt.\nSpiel nicht beendet.", "Geht nicht..."); ////ClsTranslateControls.ShowMessage("M0016", "Meldung", new object[] { "\n" }, MessageBoxButtons.OK); return(0); } } // Spiel beenden if (beidenichts == false) { ClsTurnierControler.SaveSpielStatus(spiel, 3); } else { ClsTurnierControler.SaveSpielStatus(spiel, 4); } ClsDBVariablen.Instance.SetTabellenVariableWert("T02", ClsTabellenfunktionen.SpielplanToVariable_Json(ClsGlobal.Instance.TurnierID)); // Punkte vergeben if (beidenichts == false) { SpielPunkteSpeichern(ClsGlobal.Instance.TurnierID, spiel.Spiel); } // Tabelle berechnen TabCalc(ClsGlobal.Instance.TurnierID, spiel.Gruppe); // prüfen ob Spiel um platz wenn ja, platz in Tabelle eintragen TKopf tkk = ClsTurnierControler.Turnier(ClsGlobal.Instance.TurnierID); if (tkk.Platzierungstyp == "P") { if (spiel.SPlatz != 0) { if (spiel.ToreA > spiel.ToreB) { SaveTabellenplatz(spiel.Gruppe, spiel.IstMannA, spiel.SPlatz); } else if (spiel.ToreA < spiel.ToreB) { SaveTabellenplatz(spiel.Gruppe, spiel.IstMannB, spiel.SPlatz); } } if (spiel.VPlatz != 0) { if (spiel.ToreA > spiel.ToreB) { SaveTabellenplatz(spiel.Gruppe, spiel.IstMannB, spiel.VPlatz); } else if (spiel.ToreA < spiel.ToreB) { SaveTabellenplatz(spiel.Gruppe, spiel.IstMannA, spiel.VPlatz); } } } // Prüfen ob alle Spiele der Gruppe beendet sind List <TSpiele> spiele1 = ClsTurnierControler.Spiele(ClsGlobal.Instance.TurnierID, spiel.Gruppe); int g = (from grp in spiele1 where grp.Status < 3 select grp).Count(); if (g == 0) { // Gruppe abgeschlossen // wenn alle Spiele beendet dann Gruppe als beendet buchen ClsTurnierControler.SaveGruppenStatus(ClsGlobal.Instance.TurnierID, spiel.Gruppe, 3); // Mannschaften in folgerunden eintragen IstMannschaftenGI(spiel.Gruppe); // prüfen ob alle gruppen in Runde beendet List <TSpiele> spiele = ClsTurnierControler.Spiele(ClsGlobal.Instance.TurnierID, spiel.Runde); int r = (from x in spiele where x.Status < 3 select x).Count(); if (r == 0) { rundenwechsel = true; // Runde als beendet buchen ClsTurnierControler.SaveRundenStatus(ClsGlobal.Instance.TurnierID, GetActualRoundNo(ClsGlobal.Instance.TurnierID), 3); // istmanschaften bei Gruppenübergereifender Folgerunde IstMannschaftenGegenueber(spiel); // wenn Folgerunde existent if (tkk.Matrix != "AdHoc") { int rundenAnz = ClsTurnierControler.Runden(ClsGlobal.Instance.TurnierID).Count; if (spiel.Runde < rundenAnz) { int neueRunde = spiel.Runde; neueRunde += 1; ClsDBVariablen.Instance.SetTextVariableWert("S17", neueRunde.ToString()); // ClsLocalisationFunctions.Keytext("Text", "01") + " " + runde; ClsMessage.SendMessage("Runde beendet", "rundenwechsel..."); ClsTurnierControler.SaveRundenStatus(ClsGlobal.Instance.TurnierID, neueRunde, 1); } } } // prüfen ob alle Spiele in allen Runden in Turnier beendet List <TSpiele> spiele3 = ClsTurnierControler.Spiele(ClsGlobal.Instance.TurnierID); int ts = (from grp in spiele3 where grp.Status < 3 select grp).Count(); if (ts == 0) { ClsTurnierControler.SaveTurnierStatus(ClsGlobal.Instance.TurnierID, 3); // ClsFunktionen.fillTreeViewdetails( turniernr, tvBrowser); ClsMessage.SendMessage("Turnier beendet.", "Geschaft..."); ////ClsTranslateControls.ShowMessage("M0017", "Meldung", new object[] { "\n" }, MessageBoxButtons.OK); } } ClsDBVariablen.Instance.SetTabellenVariableWert("T01", ClsTabellenfunktionen.TabelleToVariable_Json(ClsGlobal.Instance.TurnierID)); if (rundenwechsel == true) { return(2); } return(1); } catch (Exception ex) { ClsError.Error(Name, MethodBase.GetCurrentMethod().ToString(), ex); return(0); } }
public static string SpielplanToVariable_Json(int turnierID) { try { bool kname = Convert.ToBoolean(ClsOptionsControler.Options3("kurznamen").Value); string Runde = ClsGlobal.Instance.TableFilterList.Find(x => x.Table == "T02" && x.Field == "Runde").Value; string Gruppe = ClsGlobal.Instance.TableFilterList.Find(x => x.Table == "T02" && x.Field == "Gruppe").Value; string Status = ClsGlobal.Instance.TableFilterList.Find(x => x.Table == "T02" && x.Field == "Status").Value; string Datum = ClsGlobal.Instance.TableFilterList.Find(x => x.Table == "T02" && x.Field == "Datum").Value; if (string.IsNullOrEmpty(Runde)) { Runde = "0"; } int runde = Convert.ToInt32(Runde); // Create a DataTable for buildup DataTable tempTable = new DataTable(); // Spalte je Anzeigespalte esretllen (Überschriften) List <Anzeigetabelle> cols1 = ClsOptionsControler.Anzeigetabelle("T02", "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; } } // Zeilen Hinzufügen // Tabelle lesen List <TSpiele> tab = ClsTurnierControler.Spiele(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(); } if (!string.IsNullOrEmpty(Status)) { tab = (from t in tab where t.Status == Convert.ToInt32(Status) select t).ToList(); } if (!string.IsNullOrEmpty(Datum)) { tab = (from t in tab //where t.Datum == Convert.ToDateTime(ClsGlobal.Instance.FilterS.Date) where t.Datum == Datum select t).ToList(); } // Daten sortieren tab = (from ot in tab orderby ot.Spiel select ot).ToList(); // Werte übersetzen if (tab.Any()) { for (int i = 0; i < tab.Count; i++) { if (kname) { tab[i].IstMannA = Kurzname(tab[i].IstMannA); tab[i].IstMannB = Kurzname(tab[i].IstMannB); } } } // 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("Spielplan", tempTable.Columns[i].ColumnName); text = ClsTextControler.TextByNameAndNumber("Spielplan", tempTable.Columns[i].ColumnName); } if (!string.IsNullOrEmpty(text)) { tempTable.Columns[i].ColumnName = text; } } return(ConvertDatatabletoString(tempTable)); } catch (Exception ex) { ClsError.Error(Name, MethodBase.GetCurrentMethod().ToString(), ex); return(null); } }