internal void Lehrers(Lehrers lehrers, Leistungen alleWebuntisLeistungen) { foreach (var konferenz in this) { var le = (from l in lehrers where System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToUpper().Split('\\')[1] == l.Kuerzel select l).FirstOrDefault(); konferenz.Lehrers = alleWebuntisLeistungen.LehrerDieserKlasse(konferenz, lehrers); } }
public Zuordnungen(Leistungen webuntisLeistungen, Abwesenheiten atlantisAbwesenheiten) { this.Add(new Zuordnung(" FU", "")); this.Add(new Zuordnung("FS19*|INW", "IF")); this.Add(new Zuordnung("HBT19A|FPE", "FPEL")); this.Add(new Zuordnung("WE18A|KKS*", "KKS")); this.Add(new Zuordnung("KR", "REL")); this.Add(new Zuordnung("ER", "REL")); this.Add(new Zuordnung("KR ", "REL")); this.Add(new Zuordnung("ER ", "REL")); this.Add(new Zuordnung("NF ", "")); this.Add(new Zuordnung("", "")); this.Add(new Zuordnung("", "")); this.Add(new Zuordnung("", "")); }
static void Main(string[] args) { Global.Output = new List <string>(); try { Console.WriteLine(" Webuntisnoten2Atlantis | Published under the terms of GPLv3 | Stefan Bäumer " + DateTime.Now.Year + " | Version 20210507"); Console.WriteLine("====================================================================================================="); Console.WriteLine(" *Webuntisnoten2Atlantis* erstellt eine SQL-Datei mit entsprechenden Befehlen zum Import in Atlantis."); Console.WriteLine(" ACHTUNG: Wenn der Lehrer es versäumt hat, mindestens 1 Teilleistung zu dokumentieren, wird keine Ge-"); Console.WriteLine(" samtnote von Webuntis übergeben!"); Console.WriteLine("====================================================================================================="); if (Properties.Settings.Default.DBUser == "") { Settings(); } string targetPath = SetTargetPath(); Process notepadPlus = new Process(); notepadPlus.StartInfo.FileName = "notepad++.exe"; notepadPlus.Start(); Thread.Sleep(1500); string targetAbsenceTimesTotal = CheckFile(targetPath, User, "AbsenceTimesTotal"); string targetMarksPerLesson = CheckFile(targetPath, User, "MarksPerLesson"); string targetSql = Path.Combine(targetPath, Zeitstempel + "_webuntisnoten2atlantis_" + User + ".SQL"); Leistungen alleAtlantisLeistungen = new Leistungen(ConnectionStringAtlantis + Properties.Settings.Default.DBUser, AktSj, User); Leistungen alleWebuntisLeistungen = new Leistungen(targetMarksPerLesson); Abwesenheiten alleAtlantisAbwesenheiten = new Abwesenheiten(ConnectionStringAtlantis + Properties.Settings.Default.DBUser, AktSj[0] + "/" + AktSj[1]); Abwesenheiten alleWebuntisAbwesenheiten = new Abwesenheiten(targetAbsenceTimesTotal); Leistungen webuntisLeistungen = new Leistungen(); Abwesenheiten webuntisAbwesenheiten = new Abwesenheiten(); Leistungen atlantisLeistungen = new Leistungen(); Abwesenheiten atlantisAbwesenheiten = new Abwesenheiten(); FocusMe(); var interessierendeKlassen = new List <string>(); interessierendeKlassen = alleAtlantisLeistungen.GetIntessierendeKlassen(alleWebuntisLeistungen, AktSj); webuntisLeistungen.AddRange((from a in alleWebuntisLeistungen where interessierendeKlassen.Contains(a.Klasse) select a).OrderBy(x => x.Klasse).ThenBy(x => x.Fach).ThenBy(x => x.Name)); atlantisLeistungen.AddRange((from a in alleAtlantisLeistungen where interessierendeKlassen.Contains(a.Klasse) select a).OrderBy(x => x.Klasse).ThenBy(x => x.Fach).ThenBy(x => x.Name)); List <string> abschlussklassen = (from t in alleAtlantisLeistungen where t.Abschlussklasse where interessierendeKlassen.Contains(t.Klasse) select t.Klasse).Distinct().ToList(); atlantisAbwesenheiten.AddRange((from a in alleAtlantisAbwesenheiten where interessierendeKlassen.Contains(a.Klasse) where !abschlussklassen.Contains(a.Klasse) select a)); webuntisAbwesenheiten.AddRange((from a in alleWebuntisAbwesenheiten where interessierendeKlassen.Contains(a.Klasse) where !abschlussklassen.Contains(a.Klasse) select a)); if (webuntisLeistungen.Count == 0) { throw new Exception("[!] Es liegt kein einziger Leistungsdatensatz für Ihre Auswahl vor. Ist evtl. die Auswahl in Webuntis eingeschränkt? "); } // Alte Noten holen webuntisLeistungen.AddRange(alleAtlantisLeistungen.HoleAlteNoten(webuntisLeistungen, interessierendeKlassen, AktSj)); // Sortieren webuntisLeistungen.OrderBy(x => x.Klasse).ThenBy(x => x.Fach).ThenBy(x => x.Name); atlantisLeistungen.OrderBy(x => x.Klasse).ThenBy(x => x.Fach).ThenBy(x => x.Name); // Korrekturen durchführen webuntisLeistungen.WidersprechendeGesamtnotenKorrigieren(interessierendeKlassen); Zuordnungen fehlendezuordnungen = webuntisLeistungen.FächerZuordnen(atlantisLeistungen); webuntisLeistungen.ReligionsabwählerBehandeln(atlantisLeistungen); webuntisLeistungen.BindestrichfächerZuordnen(atlantisLeistungen); atlantisLeistungen.FehlendeZeugnisbemerkungBeiStrich(webuntisLeistungen, interessierendeKlassen); atlantisLeistungen.GetKlassenMitFehlendenZeugnisnoten(interessierendeKlassen, alleWebuntisLeistungen); fehlendezuordnungen.ManuellZuordnen(webuntisLeistungen, atlantisLeistungen); // Add-Delete-Update atlantisLeistungen.Add(webuntisLeistungen, interessierendeKlassen); atlantisLeistungen.Delete(webuntisLeistungen, interessierendeKlassen, AktSj); atlantisLeistungen.Update(webuntisLeistungen, interessierendeKlassen); atlantisAbwesenheiten.Add(webuntisAbwesenheiten); atlantisAbwesenheiten.Delete(webuntisAbwesenheiten); atlantisAbwesenheiten.Update(webuntisAbwesenheiten); alleAtlantisLeistungen.ErzeugeSqlDatei(new List <string>() { targetAbsenceTimesTotal, targetMarksPerLesson, targetSql }); Console.WriteLine(""); Console.WriteLine(" -----------------------------------------------------------------"); Console.WriteLine(" Verarbeitung abgeschlossen. Programm beenden mit Enter."); Console.ReadKey(); Environment.Exit(0); } catch (Exception ex) { Console.WriteLine("Ooops! Es ist etwas schiefgelaufen! Die Verarbeitung wird gestoppt."); Console.WriteLine(""); Console.WriteLine(ex); Console.ReadKey(); Environment.Exit(0); } }
public void ManuellZuordnen(Leistungen webuntisleistungen, Leistungen atlantisleistungen) { var gespeicherteZuordnungen = new Zuordnungen(); foreach (var item in Properties.Settings.Default.Zuordnungen.Split(',')) { if (item != "") { var quelle = item.Split(';')[0]; var ziel = item.Split(';')[1]; Zuordnung zuordnung = new Zuordnung(); zuordnung.Quellklasse = quelle.Split('|')[0]; zuordnung.Quellfach = quelle.Split('|')[1]; zuordnung.Zielfach = ziel.Split('|')[0]; gespeicherteZuordnungen.Add(zuordnung); } } // foreach (var t in this) { var x = (from g in gespeicherteZuordnungen where g.Quellklasse == t.Quellklasse where g.Quellfach == t.Quellfach where g.Zielfach != null select g).FirstOrDefault(); if (x != null) { // Nur wenn es diese Zuordnung noch immer gibt: if ((from a in atlantisleistungen where a.Klasse == t.Quellklasse where a.Fach == x.Zielfach select a).Any()) { t.Zielfach = x.Zielfach; } } } // Wenn keine Zuordnung vorgenommen werden konnte var liste = new List <string>(); if (this.Count > 0) { string x; Console.Clear(); do { Console.WriteLine("Folgende Fächer können keinem Atlantisfach zugeordnet werden oder wurden bereits manuell zugeordnet:"); liste = new List <string>(); for (int i = 0; i < this.Count; i++) { Console.Write((" " + (i + 1).ToString().PadLeft(2) + ". " + this[i].Quellklasse.PadRight(6) + "|" + this[i].Quellfach.PadRight(6) + (this[i].Zielfach != null ? " -> " + this[i].Zielfach : "")).PadRight(34)); if ((i + 1) % 3 == 0) { Console.WriteLine(""); } liste.Add((" " + (i + 1).ToString().PadLeft(2) + ". " + this[i].Quellklasse.PadRight(6) + "|" + this[i].Quellfach.PadRight(6) + (this[i].Zielfach != null ? " -> " + this[i].Zielfach : "")).PadRight(32)); } Console.WriteLine(""); Console.Write("Wollen Sie eine Zuordnung manuell vornehmen? Wählen Sie [1" + (this.Count > 1 ? ", ..., " + this.Count : "") + "] oder ENTER, falls keine Änderung gewünscht ist: "); x = Console.ReadLine(); Console.WriteLine(""); int n; if (int.TryParse(x, out n)) { var eingabe = int.Parse(x); if (eingabe > 0 && eingabe <= this.Count) { Console.Write("Wie heißt das Atlantisfach in der Klasse " + this[eingabe - 1].Quellklasse + ", dem Sie das Untis-Fach *" + this[eingabe - 1].Quellfach + "* zuordnen wollen? "); var xx = Console.ReadLine(); xx = xx.ToUpper(); Console.WriteLine(""); Console.Clear(); if ((from a in atlantisleistungen where a.Klasse == this[eingabe - 1].Quellklasse where a.Fach == xx select a).Any() || xx == "") { this[eingabe - 1].Zielfach = xx; Console.WriteLine("Die Zuordnung des Faches " + xx + " wurde erfolgreich vorgenommen."); if (xx == "") { this[eingabe - 1].Zielfach = null; Console.WriteLine("Die Zuordnung wird entfernt."); } } else { Console.WriteLine("[FEHLER] Ihre Zuordnung war nicht möglich. Das Fach *" + xx + "* gibt es in Atlantis nicht. Die Fächer sind:"); var verschiedeneFächer = (from a in atlantisleistungen where a.Klasse == this[eingabe - 1].Quellklasse select a.Fach).Distinct().ToList(); for (int i = 0; i < verschiedeneFächer.Count; i++) { Console.Write(" " + verschiedeneFächer[i].PadRight(7)); if ((i + 1) % 7 == 0) { Console.WriteLine(""); } } Console.WriteLine(""); } } } } while (x != ""); // ZUordnung zu den Properties und den Webuntisfächern Properties.Settings.Default.Zuordnungen = ""; Properties.Settings.Default.Save(); int vorgenommeneZuordnung = 0; int keineZuordnung = 0; foreach (var item in this) { if (item.Quellfach == "EUS F") { string aaaa = ""; } if (item.Zielfach != null) { if ((from a in atlantisleistungen where a.Klasse == item.Quellklasse where a.Fach == item.Zielfach select a).Any()) { Properties.Settings.Default.Zuordnungen += item.Quellklasse + "|" + item.Quellfach + ";" + item.Zielfach + ","; var we = (from w in webuntisleistungen where w.Klasse == item.Quellklasse where w.Fach == item.Quellfach select w).ToList(); foreach (var w in we) { w.Beschreibung += w.Fach + " -> " + item.Zielfach; w.Fach = item.Zielfach; } vorgenommeneZuordnung++; } } else { keineZuordnung++; } } Properties.Settings.Default.Zuordnungen = Properties.Settings.Default.Zuordnungen.TrimEnd(','); Properties.Settings.Default.Save(); string aus = "Es wurden " + vorgenommeneZuordnung + "x Fächer aus Webuntis einem Atlantisfach zugeordnet. " + keineZuordnung + "x wurde keine Zuordnung vorgenommen:"; if (keineZuordnung == 0) { aus = "Es wurden alle Fächer aus Webuntis einem Atlantisfach wie folgt zugeordnet:"; } new Leistungen().AusgabeSchreiben(aus, liste); } }