static void Main(string[] args) { List <string> aktSj = new List <string>(); try { Console.WriteLine("Kurswahlen (Version 20200829)"); Console.WriteLine("============================="); Console.WriteLine(""); Console.WriteLine("Das Programm liest die Religionskurswahlen aus Atlantis aus und trägt sie in Untis als Kurswahl ein."); aktSj = new List <string>(); aktSj.Add((DateTime.Now.Month >= 8 ? DateTime.Now.Year : DateTime.Now.Year - 1).ToString()); aktSj.Add((DateTime.Now.Month >= 8 ? DateTime.Now.Year + 1 : DateTime.Now.Year).ToString()); Periodes periodes = new Periodes(aktSj[0] + aktSj[1]); var periode = periodes.Count; Klasses klasses = new Klasses(aktSj[0] + aktSj[1], periode); Schuelers schuelers = new Schuelers(klasses, aktSj[0] + aktSj[1]); Fachs fachs = new Fachs(aktSj[0] + aktSj[1]); Unterrichts unterrichtsImKurssystem = new Unterrichts(schuelers, klasses, fachs, aktSj[0] + aktSj[1], periode); Kurswahlen kurswahlenIst = new Kurswahlen(aktSj[0] + aktSj[1], klasses, fachs, unterrichtsImKurssystem, periode); // Allen Schülern werden Gym-Wahlen zugewiesen //schuelers.KurswahlenGymIst(kurswahlenIst); // Für alle Nicht-Gym-Schüler werden die Religionskurswahlen hinzugefügt schuelers.ReliKurswahlenHinzufügenOderLöschen(unterrichtsImKurssystem, kurswahlenIst, aktSj[0] + aktSj[1], periode); Console.WriteLine(""); Console.WriteLine("ENTER beendet das Programm"); Console.ReadKey(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); Console.ReadKey(); } }
public Kurswahlen(string aktSj, Klasses klasses, Fachs fachs, Unterrichts unterrichts, int periode) { using (OleDbConnection oleDbConnection = new OleDbConnection(Global.ConnectionStringUntis)) { try { Console.Write("Kurswahlen ".PadRight(75, '.') + " "); string queryString = @"SELECT StudentChoice.STUDENT_ID, Student.Longname, Student.FirstName, Student.BirthDate, StudentChoice.Number, StudentChoice.AlternativeCourses, Student.Name, Student.StudNumber, StudentChoice.Deleted FROM Student LEFT JOIN StudentChoice ON Student.STUDENT_ID = StudentChoice.STUDENT_ID WHERE (((StudentChoice.SCHOOLYEAR_ID)= " + aktSj + ") AND ((StudentChoice.TERM_ID)=" + periode + ")) ORDER BY StudentChoice.STUDENT_ID;"; OleDbCommand oleDbCommand = new OleDbCommand(queryString, oleDbConnection); oleDbConnection.Open(); OleDbDataReader oleDbDataReader = oleDbCommand.ExecuteReader(); while (oleDbDataReader.Read()) { Kurswahl kurswahl = new Kurswahl(aktSj, periode); kurswahl.StudentId = oleDbDataReader.GetInt32(0); try { kurswahl.Nachname = Global.SafeGetString(oleDbDataReader, 1); if (kurswahl.Nachname == "Dillhage") { string a = ""; } kurswahl.Vorname = Global.SafeGetString(oleDbDataReader, 2); kurswahl.Geburtsdatum = DateTime.ParseExact((oleDbDataReader.GetInt32(3)).ToString(), "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture); kurswahl.Number = Convert.ToInt32(oleDbDataReader.GetValue(4)); kurswahl.AlternativeCourses.Add(Global.SafeGetString(oleDbDataReader, 5)); kurswahl.StudentKurzname = Global.SafeGetString(oleDbDataReader, 6); kurswahl.Fach = (from f in fachs where f.IdUntis.ToString() == kurswahl.AlternativeCourses[0].Split('/')[1] select f.KürzelUntis).FirstOrDefault(); kurswahl.Klasse = (from u in unterrichts where u.IdUntis.ToString() == kurswahl.AlternativeCourses[0].Split('/')[0] select u.Klasse.NameUntis).FirstOrDefault(); kurswahl.AtlantisId = Global.SafeGetString(oleDbDataReader, 7); kurswahl.Deleted = oleDbDataReader.GetBoolean(8); this.Add(kurswahl); } catch (Exception) { Console.WriteLine("Schüler " + kurswahl.Nachname + " " + kurswahl.Vorname + " hat keine Klasse"); } } ; oleDbDataReader.Close(); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } finally { oleDbConnection.Close(); Console.WriteLine(this.Count); } } }
internal void ReliKurswahlenHinzufügenOderLöschen(Unterrichts unterrichts, Kurswahlen kurswahlenIst, string aktSJ, int periode) { foreach (var schueler in this) { if (true /*schueler.Anmeldename == "bm153842"*/) { // Für jeden Schüler au0erhalb der Gym ... if (schueler.Klasse != null) { if (!schueler.Klasse.StartsWith("G")) { // ... sofern in seiner Klasse Religionsunterricht angeboten wird ... var reliunterrichtDerKlasseDesSchülers = (from u in unterrichts where u.Klasse.NameUntis == schueler.Klasse where (u.Fach.KürzelUntis.StartsWith("KR ") || u.Fach.KürzelUntis.StartsWith("ER ") || u.Fach.KürzelUntis == "KR" || u.Fach.KürzelUntis == "ER") select u).FirstOrDefault(); if (reliunterrichtDerKlasseDesSchülers != null) { // ... und der Schüler sich nicht abgemeldet oder ab- und später wieder angemeldet hat ... Kurswahl kurswahl = new Kurswahl(); if ((schueler.Reliabmeldung.Year == 1 || schueler.Relianmeldung > schueler.Reliabmeldung)) { // ... wird die Kurswahl hinzugefügt. kurswahl.StudentKurzname = schueler.Anmeldename; kurswahl.Geburtsdatum = schueler.Gebdat; kurswahl.Nachname = schueler.Nachname; kurswahl.Vorname = schueler.Vorname; kurswahl.StudentId = schueler.IdUntis; kurswahl.AlternativeCourses.Add(reliunterrichtDerKlasseDesSchülers.IdUntis.ToString() + "/" + reliunterrichtDerKlasseDesSchülers.Fach.IdUntis + "/1"); kurswahl.Fach = reliunterrichtDerKlasseDesSchülers.Fach.KürzelUntis; kurswahl.Klasse = schueler.Klasse; try { if ((from k in kurswahlenIst where k.StudentId == schueler.IdUntis select k).Count() == 0) { kurswahl.Number = 1; } else { kurswahl.Number = (from k in kurswahlenIst where k.StudentId == schueler.IdUntis select k.Number).Max() + 1; } } catch (Exception ex) { Console.WriteLine(ex); Console.ReadKey(); } if (schueler.Kurse == null) { schueler.Kurse = new List <Kurswahl>(); } schueler.Kurse.Add(kurswahl); // Wenn die Reli-Kurswahl in Untis noch nicht existiert, wird sie ergänzt: if (!(from k in kurswahlenIst where k.Fach == kurswahl.Fach where k.Klasse == kurswahl.Klasse where k.StudentId == kurswahl.StudentId select k).Any()) { kurswahl.AktSj = aktSJ; kurswahl.InsertIntoStudentChoice(periode); } // Wenn die Relikurswahl existert, aber Deleted ist, wird sie wieder aktiviert: if ((from k in kurswahlenIst where k.Fach == kurswahl.Fach where k.Klasse == kurswahl.Klasse where k.StudentId == kurswahl.StudentId where k.Deleted == true select k).Any()) { kurswahl.AktSj = aktSJ; schueler.UpdateStudentChoice(periode); } } // Wenn der Schüler den existierenden Religionskurs abgewählt hat, ... else { // ... und bereits eine Kurswahl besteht ... var kk = (from k in kurswahlenIst where k.Fach == reliunterrichtDerKlasseDesSchülers.Fach.KürzelUntis where k.Klasse == schueler.Klasse where k.StudentId == schueler.IdUntis select k).FirstOrDefault(); if (kk != null) { // ... und die Kurswahl nicht bereits delted wurde ... if (!kk.Deleted) { // ... wird die Kurswahl gelöscht. schueler.DeleteStudentChoice(periode); } } } } } } else { //Console.WriteLine("Der Schüler " + schueler.Nachname + ", " + schueler.Vorname + "(" + schueler.IdAtlantis +"; " + schueler.IdUntis + ") hat keine Klasse."); //Console.ReadKey(); } } } }