Exemple #1
0
 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);
            }
        }