public Unterrichts(int periode, Klasses klasses, Lehrers lehrers, Fachs fachs, Raums raums, Unterrichtsgruppes unterrichtsgruppes) { int kalenderwoche = GetCalendarWeek(DateTime.Now); DateTime datumMontagDerKalenderwoche = GetMondayDateOfWeek(kalenderwoche, DateTime.Now.Year); DateTime datumErsterTagDesPrüfZyklus = datumMontagDerKalenderwoche; using (SqlConnection odbcConnection = new SqlConnection(Global.ConnectionStringUntis)) { int id = 0; try { string queryString = @"SELECT Lesson_ID, LessonElement1, Periods, Lesson.LESSON_GROUP_ID, Lesson_TT, Flags, DateFrom, DateTo FROM LESSON WHERE (((SCHOOLYEAR_ID)= " + Global.AktSj[0] + Global.AktSj[1] + ") AND ((TERM_ID)=" + periode + ") AND ((Lesson.SCHOOL_ID)=177659) AND (((Lesson.Deleted)='false'))) ORDER BY LESSON_ID;"; SqlCommand odbcCommand = new SqlCommand(queryString, odbcConnection); odbcConnection.Open(); SqlDataReader sqlDataReader = odbcCommand.ExecuteReader(); while (sqlDataReader.Read()) { id = sqlDataReader.GetInt32(0); string wannUndWo = Global.SafeGetString(sqlDataReader, 4); var zur = wannUndWo.Replace("~~", "|").Split('|'); ZeitUndOrts zeitUndOrts = new ZeitUndOrts(); for (int i = 0; i < zur.Length; i++) { if (zur[i] != "") { var zurr = zur[i].Split('~'); int tag = 0; int stunde = 0; List <string> raum = new List <string>(); try { tag = Convert.ToInt32(zurr[1]); } catch (Exception) { Console.WriteLine("Der Unterricht " + id + " hat keinen Tag."); } try { stunde = Convert.ToInt32(zurr[2]); } catch (Exception) { Console.WriteLine("Der Unterricht " + id + " hat keine Stunde."); } try { var ra = zurr[3].Split(';'); foreach (var item in ra) { if (item != "") { raum.AddRange((from r in raums where item.Replace(";", "") == r.IdUntis.ToString() select r.Raumnummer)); } } if (raum.Count == 0) { raum.Add(""); } } catch (Exception) { Console.WriteLine("Der Unterricht " + id + " hat keinen Raum."); } ZeitUndOrt zeitUndOrt = new ZeitUndOrt(tag, stunde, raum); zeitUndOrts.Add(zeitUndOrt); } } string lessonElement = Global.SafeGetString(sqlDataReader, 1); int anzahlGekoppelterLehrer = lessonElement.Count(x => x == '~') / 21; List <string> klassenKürzel = new List <string>(); for (int i = 0; i < anzahlGekoppelterLehrer; i++) { var lesson = lessonElement.Split(','); var les = lesson[i].Split('~'); string lehrer = les[0] == "" ? null : (from l in lehrers where l.IdUntis.ToString() == les[0] select l.Kürzel).FirstOrDefault(); if (lehrer == "SOE") { string a = ""; } string fach = les[2] == "0" ? "" : (from f in fachs where f.IdUntis.ToString() == les[2] select f.KürzelUntis).FirstOrDefault(); string raumDiesesUnterrichts = ""; if (les[3] != "") { raumDiesesUnterrichts = (from r in raums where (les[3].Split(';')).Contains(r.IdUntis.ToString()) select r.Raumnummer).FirstOrDefault(); } int anzahlStunden = sqlDataReader.GetInt32(2); var unterrichtsgruppeDiesesUnterrichts = (from u in unterrichtsgruppes where u.IdUntis == sqlDataReader.GetInt32(3) select u).FirstOrDefault(); if (les.Count() >= 17) { foreach (var kla in les[17].Split(';')) { Klasse klasse = new Klasse(); if (kla != "") { if (!(from kl in klassenKürzel where kl == (from k in klasses where k.IdUntis == Convert.ToInt32(kla) select k.NameUntis).FirstOrDefault() select kl).Any()) { klassenKürzel.Add((from k in klasses where k.IdUntis == Convert.ToInt32(kla) select k.NameUntis).FirstOrDefault()); } } } } else { } if (lehrer != null) { for (int z = 0; z < zeitUndOrts.Count; z++) { // Wenn zwei Lehrer gekoppelt sind und zwei Räume zu dieser Stunde gehören, dann werden die Räume entsprechend verteilt. string r = zeitUndOrts[z].Raum[0]; try { if (anzahlGekoppelterLehrer > 1 && zeitUndOrts[z].Raum.Count > 1) { r = zeitUndOrts[z].Raum[i]; } } catch (Exception) { if (anzahlGekoppelterLehrer > 1 && zeitUndOrts[z].Raum.Count > 1) { r = zeitUndOrts[z].Raum[0]; } } string k = ""; foreach (var item in klassenKürzel) { k += item + ","; } // Nur wenn der tagDesUnterrichts innerhalb der Befristung stattfindet, wird er angelegt DateTime von = DateTime.ParseExact((sqlDataReader.GetInt32(6)).ToString(), "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture); DateTime bis = DateTime.ParseExact((sqlDataReader.GetInt32(7)).ToString(), "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture); DateTime tagDesUnterrichts = datumErsterTagDesPrüfZyklus.AddDays(zeitUndOrts[z].Tag - 1); if ((periode == 0 || von <= tagDesUnterrichts) && tagDesUnterrichts <= bis) { Unterricht unterricht = new Unterricht( id, lehrer, fach, k.TrimEnd(','), r, "", zeitUndOrts[z].Tag, zeitUndOrts[z].Stunde, unterrichtsgruppeDiesesUnterrichts, datumErsterTagDesPrüfZyklus); this.Add(unterricht); try { string ugg = unterrichtsgruppeDiesesUnterrichts == null ? "" : unterrichtsgruppeDiesesUnterrichts.Name; // Console.WriteLine(unterricht.Id.ToString().PadLeft(4) + " " + unterricht.LehrerKürzel.PadRight(4) + unterricht.KlasseKürzel.PadRight(20) + unterricht.FachKürzel.PadRight(10) + " Raum: " + r.PadRight(10) + " Tag: " + unterricht.Tag + " Stunde: " + unterricht.Stunde + " " + ugg.PadLeft(3)); } catch (Exception ex) { throw ex; } } } } } } Global.WriteLine("Unterrichte", this.Count); sqlDataReader.Close(); } catch (Exception ex) { Console.WriteLine("Fehler beim Unterricht mit der ID " + id + "\n" + ex.ToString()); throw new Exception("Fehler beim Unterricht mit der ID " + id + "\n" + ex.ToString()); } finally { odbcConnection.Close(); } } }
static void Main(string[] args) { try { Global.Initialize(); Periodes periodes = new Periodes(); var periode = (from p in periodes where p.Bis >= DateTime.Now.Date where DateTime.Now.Date >= p.Von select p.IdUntis).FirstOrDefault(); Lehrers lehrers = new Lehrers(periode); Klasses klasses = new Klasses(periode, lehrers); Schuelers schuelers = new Schuelers(klasses); Fachs fachs = new Fachs(); Raums raums = new Raums(periode); Unterrichtsgruppes unterrichtsgruppes = new Unterrichtsgruppes(); Unterrichts unterrichts = new Unterrichts(periode, klasses, lehrers, fachs, raums, unterrichtsgruppes); Anrechnungs anrechnungen = new Anrechnungs(periode); Teams klassenMitAllenSoll = new Teams(klasses, lehrers, schuelers, unterrichts); Global.TeamsSoll.Hinzufügen(anrechnungen, lehrers, klassenMitAllenSoll); // Alle Lehrkräfte und Schüler im Team //Teams klassenMitSchülernSoll = new Teams(klassenMitAllenSoll, "Klassenteams-SuS", lehrers); Global.TeamsSoll.Hinzufügen(new Teams(klassenMitAllenSoll, "Klassenteams-LuL", lehrers)); Global.TeamsSoll.Hinzufügen(new Teams(klassenMitAllenSoll, "Bildungsgaenge-LuL", lehrers)); Global.TeamsSoll.Hinzufügen(new Team("Kollegium", lehrers, lehrers.Kollegium())); Global.TeamsSoll.Hinzufügen(new Team("Abitur", lehrers, unterrichts.Abitur(lehrers))); Global.TeamsSoll.Hinzufügen(new Team("FHR", lehrers, unterrichts.Fhr(lehrers))); Global.TeamsSoll.Hinzufügen(new Team("SV")); Global.TeamsSoll.Hinzufügen(new Team("Lehrerinnen", lehrers, lehrers.Lehrerinnen())); //Global.TeamsSoll.Hinzufügen(new Team("Fachschaft Religionslehre", lehrers, klassenMitAllenSoll.Fachschaft(lehrers, new List<string>() { "KR", "KR FU", "KR1", "KR2", "KR G1", "KR G2", "ER", "ER G1" }))); //Global.TeamsSoll.Hinzufügen(new Team("Fachschaft Wirtschaftslehre in nicht kaufm Klassen", lehrers, klassenMitAllenSoll.Fachschaft(lehrers, new List<string>() { "WL", "WBL" }))); //Global.TeamsSoll.Hinzufügen(new Team("Fachschaft Deutsch/ Kommunikation", lehrers, klassenMitAllenSoll.Fachschaft(lehrers, new List<string>() { "D", "D FU", "D1", "D2", "D G1", "D G2", "D L1", "D L2", "D L", "DL", "DL1", "DL2" }))); //Global.TeamsSoll.Hinzufügen(new Team("Fachschaft Mathematik/ Physik", lehrers, klassenMitAllenSoll.Fachschaft(lehrers, new List<string>() { "M", "M FU", "M1", "M2", "M G1", "M G2", "M L1", "M L2", "M L", "ML", "ML1", "ML2" }))); //Global.TeamsSoll.Hinzufügen(new Team("Fachschaft Politik/ Gesellschaftslehre", lehrers, klassenMitAllenSoll.Fachschaft(lehrers, new List<string>() { "PK", "PK FU", "PK1", "PK2", "GG G1", "GG G2" }))); //Global.TeamsSoll.Hinzufügen(new Team("Fachschaft Sport", lehrers, klassenMitAllenSoll.Fachschaft(lehrers, new List<string>() { "SP", "GG" }))); //Global.TeamsSoll.Hinzufügen(new Team("Fachschaft Englisch", lehrers, klassenMitAllenSoll.Fachschaft(lehrers, new List<string>() { "E", "E FU", "E1", "E2", "E G1", "E G2", "E L1", "E L2", "E L", "EL", "EL1", "EL2" }))); Global.TeamsSoll.Hinzufügen(new Team("Bildungsgangleitungen A", lehrers, lehrers.GetAnrechungenAusBeschreibung("Bildungsgangleitungen A"))); Global.TeamsSoll.Hinzufügen(new Team("Bildungsgangleitungen B", lehrers, lehrers.GetAnrechungenAusBeschreibung("Bildungsgangleitungen B"))); Global.TeamsSoll.Hinzufügen(new Team("Bildungsgangleitungen C", lehrers, lehrers.GetAnrechungenAusBeschreibung("Bildungsgangleitungen C"))); Global.TeamsSoll.Hinzufügen(new Team("Bildungsgangleitungen D", lehrers, lehrers.GetAnrechungenAusBeschreibung("Bildungsgangleitungen D"))); var members = new List <string>(); members.AddRange(lehrers.GetAnrechungenAusBeschreibung("Bildungsgangleitungen A")); members.AddRange(lehrers.GetAnrechungenAusBeschreibung("Bildungsgangleitungen B")); members.AddRange(lehrers.GetAnrechungenAusBeschreibung("Bildungsgangleitungen C")); members.AddRange(lehrers.GetAnrechungenAusBeschreibung("Bildungsgangleitungen D")); Global.TeamsSoll.Hinzufügen(new Team("Bildungsgangleitungen", lehrers, members)); Global.TeamsSoll.Hinzufügen(new Team("Klassenleitungen", lehrers, klasses.Klassenleitungen())); //Global.TeamsSoll.CsvString = "\"GroupDisplayName\"|\"PrimarySmtpAddress\"|\"User\"|\"Type\"\r\n"; //Global.TeamsSoll.Hinzufügen(new Team("aaa10", new List<string>() { "*****@*****.**", "*****@*****.**" })); // Erstelle CSV File.WriteAllText(Global.GruppenMemberCsvSoll, Global.TeamsSoll.CsvString, Encoding.UTF8); Process myProcess = new Process(); Process.Start("notepad++.exe", System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal) + @"\\GruppenOwnerMembersSoll.csv"); // Interop string dateiWord = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal) + @"\\Gruppen-und-Mitglieder.docx"; string dateiPdf = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal) + @"\\Gruppen-und-Mitglieder.pdf"; if (File.Exists(dateiWord)) { File.Delete(dateiWord); } File.Copy(@"U:\Source\Repos\teams\teams\Gruppen und Mitglieder.docx", dateiWord); var wordApp = new Application { Visible = true }; var aDoc = wordApp.Documents.Open(dateiWord, ReadOnly: false, Visible: true); aDoc.Activate(); FindAndReplace(wordApp, "{stand}", DateTime.Now.ToShortDateString()); foreach (var teamSoll in Global.TeamsSoll) { if (teamSoll.DisplayName.StartsWith("FHR")) { string a = ""; } // Die Schulleiterin wird zuerst genannt. Alle anderen Gruppen bleiben alphabetisch sortiert. if (teamSoll.DisplayName == "Schulleitung" || teamSoll.Members.Count == 1) { foreach (var member in teamSoll.Members) { FindAndReplace(wordApp, "{" + teamSoll.DisplayName + "}", "{" + teamSoll.DisplayName + "}" + member + ";\r\n"); } } else { for (int i = 0; i < teamSoll.Members.Count; i++) { string aaa = "\t" + teamSoll.Members[i] + ";"; if (i < teamSoll.Members.Count - 1) { aaa = aaa + "\t" + teamSoll.Members[i + 1] + ";"; } aaa = aaa + "\r\n {" + teamSoll.DisplayName + "}"; FindAndReplace(wordApp, "{" + teamSoll.DisplayName + "}", aaa); i++; } } FindAndReplace(wordApp, "{" + teamSoll.DisplayName + "}", ""); FindAndReplace(wordApp, "{" + teamSoll.DisplayName.Replace("-LuL", "") + "-Bildungsgang" + "}", teamSoll.BildungsgangLanganme); FindAndReplace(wordApp, "{" + teamSoll.DisplayName.Replace("-LuL", "") + "-Bildungsgangleitung" + "}", teamSoll.Bildungsgangleitung); FindAndReplace(wordApp, "{" + teamSoll.DisplayName.Replace("-LuL", "") + "-Vorsitz" + "}", teamSoll.Vorsitz); } // Klassenstrings foreach (var klassenteam in klassenMitAllenSoll) { FindAndReplace(wordApp, "{Klassenteams}", "\t" + klassenteam.DisplayName + "*****@*****.**" + "\t(" + klassenteam.Klassenleitung + ")\r\n{Klassenteams}"); } FindAndReplace(wordApp, "{Klassenteams}", ""); aDoc.Save(); Console.WriteLine("--------------------"); Console.WriteLine("Nächste Schritte:"); Console.WriteLine("1. Inhaltsverzeichnis der Worddatei neu laden. Word schließen"); Console.WriteLine("2. Die Worddatei mit Libreoffice laden und dann exportieren werden, damit der PDF-Viewer das Inhaltsverzeichnis anzeigt."); Console.WriteLine("Ende der Verarbeitung"); Console.ReadKey(); Environment.Exit(0); } catch (Exception ex) { Console.WriteLine(ex); Console.ReadKey(); } finally { } }