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); } } }
public Unterrichts(Schuelers schuelers, Klasses klasses, Fachs fachs, string aktSj, int periode) { Console.Write("Unterrichte (nur Verkursungen) ".PadRight(75, '.') + " "); int id = 0; try { using (OleDbConnection oleDbConnection = new OleDbConnection(Global.ConnectionStringUntis)) { string queryString = @"SELECT DISTINCT Lesson_ID, LessonElement1, Periods, Lesson.LESSON_GROUP_ID, Lesson_TT, Flags FROM LESSON WHERE (((SCHOOLYEAR_ID)= " + aktSj + ") AND ((TERM_ID)=" + periode + ") AND (((Lesson.Deleted)=No))) ORDER BY LESSON_ID;"; OleDbCommand oleDbCommand = new OleDbCommand(queryString, oleDbConnection); oleDbConnection.Open(); OleDbDataReader oleDbDataReader = oleDbCommand.ExecuteReader(); int z = 0; while (oleDbDataReader.Read()) { id = oleDbDataReader.GetInt32(0); string lessonElement = Global.SafeGetString(oleDbDataReader, 1); z++; int anzahlGekoppelterLehrer = lessonElement.Count(x => x == '~') / 21; for (int i = 0; i < anzahlGekoppelterLehrer; i++) { var lesson = lessonElement.Split(','); var les = lesson[i].Split('~'); int anzahlStunden = oleDbDataReader.GetInt32(2); try { foreach (var kla in les[17].Split(';')) { Klasse klasse = new Klasse(); if (kla != "") { var istKurs = Global.SafeGetString(oleDbDataReader, 5).Contains("c") ? true : false; Unterricht unterricht = new Unterricht(); unterricht.IdUntis = id; unterricht.Fach = les[2] == "" ? null : (from f in fachs where f.IdUntis.ToString() == les[2] select f).FirstOrDefault(); unterricht.Klasse = (from k in klasses where k.IdUntis.ToString() == kla select k).FirstOrDefault(); // nur Kurse mit mehr als Null Stunden if (istKurs && oleDbDataReader.GetInt32(2) > 0 && unterricht.Fach != null) { this.Add(unterricht); } if (!istKurs && oleDbDataReader.GetInt32(2) > 0 && unterricht.Fach != null) { // Reliunterricht muss verkurst sein! if (unterricht.Klasse.NameUntis != "BTeam") { if ( unterricht.Fach.KürzelUntis.StartsWith("KR ") || unterricht.Fach.KürzelUntis.StartsWith("ER ") || unterricht.Fach.KürzelUntis == "KR" || unterricht.Fach.KürzelUntis == "ER" ) { Console.WriteLine("Achtung: der Unterricht " + unterricht.Fach.KürzelUntis + " mit der ID " + id + " ist Relgionsunterricht, aber nicht als Kurs angelegt!"); Console.ReadKey(); } } } } } } catch (Exception ex) { } } } ; oleDbDataReader.Close(); oleDbConnection.Close(); } } catch (Exception ex) { } Console.WriteLine(this.Count); }
public Schuelers(Klasses klasses, string aktSj) { Schuelers atlantisschulers = new Schuelers(); using (OdbcConnection connection = new OdbcConnection(Global.ConnectionStringAtlantis)) { DataSet dataSet = new DataSet(); OdbcDataAdapter schuelerAdapter = new OdbcDataAdapter(@"SELECT schueler.pu_id AS AtlantisSchuelerId, schueler.gebname AS Geburtsname, schueler.gebort_lkrs AS Geburtsort, schueler.s_geburts_land AS Geburtsland, schue_sj.vorgang_akt_satz_jn AS AktuellJN, schue_sj.s_schulabschluss_bos AS Versetzung1, schue_sj.dat_versetzung AS VersetzungsDatumInDiesenBildungsgang, schue_sj.s_austritts_grund_bdlg AS BBB, schue_sc.dat_austritt AS Austrittsdatum, schue_sc.s_ausb_ziel_erreicht AS BeruflicherAbschluss, schue_sc.s_austritt_schulabschluss AS AllgemeinerAbschluss, schue_sc.s_hoechst_schulabschluss AS LSHoechAllAb, schueler.s_schwerstbehindert AS XX, schue_sj.kl_id AS AtlantisKlasseId, schue_sj.fko_id AS AtlantisStundentafelId, schue_sj.durchschnitts_note_jz AS DurchschnittsnoteJahreszeugnis, schueler.name_1 AS Nachname, schueler.name_2 AS Vorname, check_null (hole_schuljahr_rech ('', -1)) as schuljahr_vorher, check_null (hole_schuljahr_rech ('', 0)) as Bezugsjahr, /* 1 aktuelles SJ des Users */ check_null (sv_km_kuerzel_wert ('s_typ_vorgang', schue_sj.s_typ_vorgang)) as Status, /* 2 */ /* lfd_nr im cf_ realisiert */ /* 3 */ (if check_null (klasse.klasse_statistik_name) <> '' THEN check_null (klasse.klasse_statistik_name) ELSE check_null (klasse.klasse) ENDIF) as Klasse, /* 4 */ check_null (sv_km_kuerzel_wert ('s_berufs_nr_gliederung', schue_sj.s_berufs_nr_gliederung)) as Gliederung, /* 5 */ check_null (substr(schue_sj.s_berufs_nr,4,5)) as Fachklasse, /* 6 Stelle 4-8 */ '' as Klassenart, /* 7 nicht BK */ check_null (sv_km_kuerzel_wert ('s_klasse_art', klasse.s_klasse_art)) as OrgForm, /* 8 */ check_null (sv_km_kuerzel_wert ('jahrgang', schue_sj.s_jahrgang)) as AktJahrgang, /* 9 */ check_null (sv_km_kuerzel_wert ('s_art_foerderungsbedarf', schueler.s_art_foerderungsbedarf)) as Foerderschwerp, /* 10 */ (if check_null (schueler.s_schwerstbehindert) = '' THEN '0' ELSE '1' ENDIF) as Schwerstbeh, /* 11 */ '' as Reformpdg, /* 12 */ (if sv_steuerung ('s_unter', schueler.s_unter) = '$JVA' THEN '1' ELSE '0' ENDIF) as JVA, /* 13 */ check_null_10(adresse.plz ) as Plz, /* 14 */ hole_schueler_ort_bundesland (adresse.s_gem_kz, adresse.ort, adresse.lkz) as Ort, /* 15 */ schueler.dat_geburt as Gebdat, /* 16 */ check_null (sv_km_kuerzel_wert ('s_geschl' , schueler.s_geschl)) as Geschlecht, /* 17 */ check_null (sv_km_kuerzel_wert ('s_staat' , schueler.s_staat)) as Staatsang, /* 18 */ check_null (sv_km_kuerzel_wert ('s_bekennt', schueler.s_bekennt)) as Religion, /* 19 */ schue_sj.dat_rel_anmeld as Relianmeldung, /* 20 */ schue_sj.dat_rel_abmeld as Reliabmeldung, /* 21 */ (if Aufnahmedatum_Bildungsgang is null THEN Aufnahmedatum_Schule ELSE Aufnahmedatum_Bildungsgang ENDIF) as Aufnahmedatum, /* 22 */ (select max (lehr_sc.ls_kuerzel) from lehr_sc, kl_ls, lehrer where lehr_sc.ls_id = kl_ls.ls_id and kl_ls.kl_id = klasse.kl_id and kl_ls.s_typ_kl_ls = '0' and lehrer.le_id = lehr_sc.le_id) as Labk, /* 23 */ (select adresse.plz from adresse, betrieb, pj_bt where adresse.ad_id = betrieb.id_hauptadresse and pj_bt.bt_id = betrieb.bt_id and pj_bt.s_typ_pj_bt = '0' and pj_bt.pj_id = schue_sj.pj_id) as ausbildort, /* 24 */ hole_schueler_betriebsort (schue_sj.pj_id, 'ort') as betriebsort, /* 25 */ /* Kapitel der zuletzt besuchten Schule */ check_null (sv_km_kuerzel_wert ('s_herkunfts_schule', schue_sj.s_herkunfts_schule)) as LSSchulform,/* 26 */ left (schue_sj.vo_s_letzte_schule, 6) as LSSchulnummer, /* 27 */ check_null (sv_km_kuerzel_wert ('s_berufl_vorbildung_glied', schue_sj.s_berufl_vorbildung_glied)) as LSGliederung, /* 28 */ substr (schue_sj.s_berufl_vorbildung, 4, 5) as LSFachklasse, /* 29 */ '' as LSKlassenart, /* 30 */ '' as LSReformpdg, /* 31 */ Null as LSSchulentl, /* 32 */ check_null (sv_km_kuerzel_wert ('s_abgang_jg', schue_sj.vo_s_jahrgang)) as LSJahrgang, /* 33 */ (if Gliederung || Fachklasse = VOGliederung || VOFachklasse then (if AktJahrgang = vojahrgang and Schueler_le_schuljahr_da = 'J' then 'W' else 'V' endif) else right (check_null (sv_km_kuerzel_wert ('s_schulabschluss', schue_sc.s_hoechst_schulabschluss)), 1) ENDIF) as LSQual, /* 34 */ '0' as LSVersetz, /* 35 */ /* Kapitel für das abgelaufene Schuljahr */ check_null ((if (Fall_Bezugsjahr = '1') THEN (SELECT klasse.klasse /* aus Vorjahr lesen */ FROM klasse, schue_sj WHERE schue_sj.kl_id = klasse.kl_id and schue_sj.pj_id = VOpj_id) ELSE /* Fall_schuljahr_vorher */ klasse.klasse ENDIF)) as VOKlasse, /* 36 */ check_null ((if (Fall_Bezugsjahr = '1') THEN (select schue_sj.s_berufs_nr_gliederung /* aus Vorjahr lesen */ from schue_sj where schue_sj.pj_id = VOpj_id) ELSE /* Fall_schuljahr_vorher */ schue_sj.s_berufs_nr_gliederung ENDIF)) as VOGliederung, /* 37 */ check_null ((if (Fall_Bezugsjahr = '1') THEN (select substr (schue_sj.s_berufs_nr, 4, 5) /* aus Vorjahr lesen */ from schue_sj where schue_sj.pj_id = VOpj_id) ELSE /* Fall_schuljahr_vorher */ substr (schue_sj.s_berufs_nr, 4, 5) ENDIF)) as VOFachklasse, /* 38 */ check_null ((if (Fall_Bezugsjahr = '1') THEN (SELECT sv_km_kuerzel_wert ('s_klasse_art', klasse.s_klasse_art)/* aus Vorjahr lesen */ FROM klasse, schue_sj WHERE schue_sj.kl_id = klasse.kl_id and schue_sj.pj_id = VOpj_id) ELSE /* Fall_schuljahr_vorher */ sv_km_kuerzel_wert ('s_klasse_art', klasse.s_klasse_art) ENDIF)) as VOOrgForm, /* 39 */ '' as VOKlassenart, /* 40 nicht BK*/ check_null ((if (Fall_Bezugsjahr = '1') THEN (SELECT sv_km_kuerzel_wert ('jahrgang', schue_sj.s_jahrgang)/* aus Vorjahr lesen */ FROM klasse, schue_sj WHERE schue_sj.kl_id = klasse.kl_id and schue_sj.pj_id = VOpj_id) ELSE /* Fall_schuljahr_vorher */ sv_km_kuerzel_wert ('jahrgang', schue_sj.s_jahrgang) ENDIF)) as VOJahrgang, /* 41 */ check_null (sv_km_kuerzel_wert ('s_art_foerderungsbedarf_vj', schueler.s_art_foerderungsbedarf_vj)) as VOFoerderschwerp, /* 42 */ '0' as VOSchwerstbeh, /* 43 */ '' as VOReformpdg, /* 44 nicht BK*/ hole_schueler_bildungsgang (schueler.pu_id, klasse.s_bildungsgang, schue_sj.dat_austritt, 'austritt') as EntlDatum, /* 45 */ check_null (sv_km_kuerzel_wert ('s_austritts_grund_bdlg', schue_sj.s_austritts_grund_bdlg)) as Zeugnis_JZ, /* 46 */ '' as Schulpflichterf, /* 47 nicht BK */ '' as Schulwechselform, /* 48 nicht BK */ '' as Versetzung, /* 49 */ (IF s_geburts_land is not null AND s_geburts_land <> '000' THEN string (year (dat_zuzug)) ELSE '' ENDIF ) as JahrZuzug_nicht_in_D_geboren, /* 50 */ string (year (dat_eintritt_gs)) as JahrEinschulung, /* 51 */ '' as JahrWechselSekI, /* 52 */ (IF (s_geburts_land is not null AND s_geburts_land <> '000') OR (s_geburts_land is null AND dat_zuzug is not null) THEN '1' ELSE '0' ENDIF ) as Zugezogen, /* 53 */ /* Hilfsfelder */ (SELECT max (adr_mutter.ad_id) FROM adresse adr_mutter WHERE adr_mutter.pu_id = schueler.pu_id AND adr_mutter.s_typ_adr = 'M' ) as ad_id_mutter, (select max (adresse.strasse) from adresse where adresse.pu_id = schueler.pu_id) as strasse, (select max (adresse.tel_1) from adresse where adresse.pu_id = schueler.pu_id) as telefon, (SELECT adr_mutter.s_herkunftsland_adr FROM adresse adr_mutter WHERE adr_mutter.ad_id = ad_id_mutter ) as herkunftsland_mutter, /* 54 */ (SELECT max (adr_vater.ad_id) FROM adresse adr_vater WHERE adr_vater.pu_id = schueler.pu_id AND adr_vater.s_typ_adr = 'V' ) as ad_id_vater, (SELECT adr_vater.s_herkunftsland_adr FROM adresse adr_vater WHERE adr_vater.ad_id = ad_id_vater ) as herkunftsland_vater, /* 55 */ (IF herkunftsland_mutter is not null AND herkunftsland_mutter <> '000' OR herkunftsland_vater is not null AND herkunftsland_vater <> '000' THEN '1' ELSE '0' ENDIF ) as Elternteilzugezogen, /* 56 */ (IF schueler.s_muttersprache is not null AND schueler.s_muttersprache <> 'DE' AND schueler.s_muttersprache <> '000' THEN schueler.s_muttersprache ELSE '' ENDIF ) as Verkehrssprache, /* 57 */ '' as Einschulungsart /* 58 */, '' as Grundschulempfehlung /* 59 */, schue_sj.pj_id as pj_id, check_null (sv_km_kuerzel_wert ('s_religions_unterricht', schue_sj.s_religions_unterricht)) as s_religions_unterricht, schue_sc.dat_eintritt as Aufnahmedatum_schule, hole_schueler_bildungsgang (schueler.pu_id, klasse.s_bildungsgang, schue_sj.dat_eintritt, 'eintritt') as Aufnahmedatum_Bildungsgang, (SELECT max (pj_id) FROM schue_sj WHERE schue_sj.pu_id = schueler.pu_id and schue_sj.s_typ_vorgang IN ('A', 'G', 'S') and schue_sj.vorgang_schuljahr = schuljahr_vorher) as VOpj_id, test_austritt (schue_sj.dat_austritt) as ausgetreten, check_null ((SELECT noten_kopf.s_bestehen_absprf || noten_kopf.s_zusatzabschluss FROM noten_kopf, schue_sj WHERE noten_kopf.s_typ_nok = 'HZ' AND schue_sj.pj_id = noten_kopf.pj_id AND schue_sj.pj_id = VOpj_id)) as Zeugnis_HZ, check_null ((if ( schue_sj.vorgang_schuljahr = check_null (hole_schuljahr_rech ('', 0)) /* '2005/06' */ AND schue_sj.vorgang_akt_satz_jn = 'J' AND ausgetreten = 'N') THEN '1' ELSE '0' ENDIF)) as Fall_Bezugsjahr, check_null ((if ( schue_sj.vorgang_schuljahr = check_null (hole_schuljahr_rech ('', -1)) /* '2004/05' */ AND schue_sj.s_typ_vorgang IN ('A', 'G', 'S') AND ausgetreten = 'J') THEN '1' ELSE '0' ENDIF)) as Fall_schuljahr_vorher, check_null ((if ( VOJahrgang <> '') THEN 'J' ELSE 'N' ENDIF)) as Schueler_le_schuljahr_da, check_null ((if ( Fachklasse <> VOFachklasse OR Gliederung <> VOGliederung) THEN 'J' ELSE 'N' ENDIF)) as Schueler_Berufswechsel, check_null ((if ( VoGliederung = 'C05' AND Gliederung = 'C06') THEN 'J' ELSE 'N' ENDIF)) as Vorjahr_C05_Aktjahr_C06, check_null (sv_km_kuerzel_wert ('jahrgang', schue_sj.s_jahrgang)) as schueler_jahrgang, check_null ((if (Fall_Bezugsjahr = '1') THEN (select schue_sj.s_jahrgang /* aus Vorjahr lesen */ from schue_sj where schue_sj.pj_id = VOpj_id) ELSE /* Fall_schuljahr_vorher */ schue_sj.s_jahrgang ENDIF)) as VOSchueler_Jahrgang, (IF EXISTS (SELECT 1 FROM schue_sj_info WHERE schue_sj_info.info_gruppe = 'MASSNA' AND schue_sj_info.pj_id = schue_sj.pj_id) THEN '1' ELSE '0' ENDIF) as Massnahmetraeger, /* 60 */ check_null (sv_km_kuerzel_wert ('s_geschl', schueler.s_betreuungsart)) as Betreuung, /* 61 */ (IF EXISTS (SELECT 1 FROM schueler_info WHERE schueler_info.info_gruppe = 'PUBEM' AND schueler_info.s_typ_puin = 'BKAZVO' AND schueler_info.betrag IN (0, 6, 12, 18) AND schueler_info.pu_id = schueler.pu_id) THEN (SELECT konv_dec_string(schueler_info.betrag, 0) FROM schueler_info WHERE schueler_info.puin_id = (SELECT max(puin.puin_id) FROM schueler_info puin WHERE puin.info_gruppe = 'PUBEM' AND puin.s_typ_puin = 'BKAZVO' AND puin.betrag IN (0, 6, 12, 18) AND puin.pu_id = schueler.pu_id)) ELSE '0' ENDIF) as BKAZVO, /* 62 */ check_null (sv_km_kuerzel_wert ('s_art_foerderungsbedarf2', schueler.s_art_foerderungsbedarf2)) as Foerderschwerp2, /* 63 */ check_null (sv_km_kuerzel_wert ('s_art_foerderungsbedarf_vj2', schueler.s_art_foerderungsbedarf_vj2)) as VOFoerderschwerp2, /* 64 */ (IF schue_sc.berufsabschluss_jn = 'J' THEN 'Y' ELSE '' ENDIF) as Berufsabschluss, /* 65 */ 'Atlantis' as Produktname, /* 66 */ (SELECT 'V' || version.version_nr FROM version WHERE version.datum = (SELECT max(v.datum) FROM version v)) as Produktversion, /* 67 */ check_null (sv_km_kuerzel_wert ('s_bereich', klasse.s_bereich)) as Adressmerkmal, /* 68 */ (if sv_steuerung ('s_unter', schueler.s_unter) = '$IN' THEN '1' ELSE '' ENDIF) as Internat, /* 69 */ '0' as Koopklasse /* 70 */ FROM schueler, schue_sc, schue_sj, schule, klasse, adresse WHERE schue_sj.kl_id = klasse.kl_id AND schue_sc.sc_id = schule.sc_id AND schue_sc.ps_id = schue_sj.ps_id AND schue_sc.pu_id = schueler.pu_id AND adresse.ad_id = schueler.id_hauptadresse AND ( (schue_sj.vorgang_schuljahr = check_null (hole_schuljahr_rech ('', 0)) /* aktuelles Jahr */ ) OR ( schue_sj.vorgang_schuljahr = check_null (hole_schuljahr_rech ('', -1)) /* letzte jahr */ AND schue_sj.s_typ_vorgang IN ('G', 'S') AND ausgetreten = 'J' ) ) ORDER BY ausgetreten DESC, klasse, schueler.name_1, schueler.name_2", connection); Console.Write("Schüler*innen ".PadRight(75, '.') + " "); connection.Open(); schuelerAdapter.Fill(dataSet, "DBA.schueler"); foreach (DataRow theRow in dataSet.Tables["DBA.schueler"].Rows) { string vorname = theRow["Vorname"] == null ? "" : theRow["Vorname"].ToString(); string nachname = theRow["Nachname"] == null ? "" : theRow["Nachname"].ToString(); if (vorname.Length > 1 && nachname.Length > 1) { var schueler = new Schueler(); schueler.Id = theRow["AtlantisSchuelerId"] == null ? -99 : Convert.ToInt32(theRow["AtlantisSchuelerId"]); schueler.Nachname = theRow["Nachname"] == null ? "" : theRow["Nachname"].ToString(); if (schueler.Nachname == "Haupt") { string a = ""; } schueler.Vorname = theRow["Vorname"] == null ? "" : theRow["Vorname"].ToString(); schueler.Klasse = theRow["Klasse"] == null ? "" : theRow["Klasse"].ToString(); schueler.Gebdat = theRow["Gebdat"].ToString().Length < 3 ? new DateTime() : DateTime.ParseExact(theRow["Gebdat"].ToString(), "dd.MM.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture); schueler.Telefon = theRow["telefon"] == null ? "" : theRow["telefon"].ToString(); schueler.Mail = Bereinigen(schueler.Nachname) + Bereinigen(schueler.Vorname) + schueler.Id + "@students.berufskolleg-borken.de"; schueler.Eintrittsdatum = theRow["Aufnahmedatum"].ToString().Length < 3 ? new DateTime() : DateTime.ParseExact(theRow["Aufnahmedatum"].ToString(), "dd.MM.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture); schueler.AktuellJN = theRow["AktuellJN"] == null ? "" : theRow["AktuellJN"].ToString(); schueler.Austrittsdatum = theRow["Austrittsdatum"].ToString().Length < 3 ? new DateTime((DateTime.Now.Month >= 8 ? DateTime.Now.Year + 1 : DateTime.Now.Year), 7, 31) : DateTime.ParseExact(theRow["Austrittsdatum"].ToString(), "dd.MM.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture); schueler.Volljährig = schueler.Gebdat.AddYears(18) > DateTime.Now ? false : true; schueler.Geschlecht = theRow["Geschlecht"] == null ? "" : theRow["Geschlecht"].ToString(); schueler.Relianmeldung = theRow["Relianmeldung"].ToString().Length < 3 ? new DateTime() : DateTime.ParseExact(theRow["Relianmeldung"].ToString(), "dd.MM.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture); schueler.Reliabmeldung = theRow["Reliabmeldung"].ToString().Length < 3 ? new DateTime() : DateTime.ParseExact(theRow["Reliabmeldung"].ToString(), "dd.MM.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture); schueler.Status = theRow["Status"] == null ? "" : theRow["Status"].ToString(); schueler.Bezugsjahr = Convert.ToInt32(theRow["Bezugsjahr"].ToString().Substring(0, 4)) - Convert.ToInt32(theRow["Fall_schuljahr_vorher"]); if (schueler.Bezugsjahr == (DateTime.Now.Month >= 8 ? DateTime.Now.Year : DateTime.Now.Year - 1) && schueler.Status != "VB" && schueler.Status != "8" && schueler.Status != "9" && schueler.Klasse != "Z" && schueler.AktuellJN == "J") { // Duplikate werden verhindert. if (!(from s in this where s.Id == schueler.Id select s).Any()) { atlantisschulers.Add(schueler); } } } } using (OleDbConnection oleDbConnection = new OleDbConnection(Global.ConnectionStringUntis)) { string sch = ""; try { string queryString = @"SELECT StudNumber, Email, BirthDate, FirstName, Longname, Name, Flags, Student_ID, CLASS_ID, Deleted FROM Student WHERE SCHOOLYEAR_ID =" + aktSj + ";"; OleDbCommand oleDbCommand = new OleDbCommand(queryString, oleDbConnection); oleDbConnection.Open(); OleDbDataReader oleDbDataReader = oleDbCommand.ExecuteReader(); List <Schueler> schuelers = new List <Schueler>(); while (oleDbDataReader.Read()) { Schueler schueler = new Schueler(); schueler.IdAtlantis = Convert.ToInt32(Global.SafeGetString(oleDbDataReader, 0)); schueler.MailAtlantis = Global.SafeGetString(oleDbDataReader, 1); try { schueler.Gebdat = DateTime.ParseExact((oleDbDataReader.GetInt32(2)).ToString(), "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture); } catch (Exception) { } schueler.Vorname = Global.SafeGetString(oleDbDataReader, 3); schueler.Nachname = Global.SafeGetString(oleDbDataReader, 4); sch = schueler.Nachname + ", " + schueler.Vorname; schueler.Anmeldename = Global.SafeGetString(oleDbDataReader, 5); if (schueler.Anmeldename == "nm153778") { string a = ""; } schueler.GeschlechtMw = Global.SafeGetString(oleDbDataReader, 6); schueler.IdUntis = oleDbDataReader.GetInt32(7); schueler.UntisClass_Id = oleDbDataReader.GetInt32(8); schueler.Deleted = oleDbDataReader.GetBoolean(9); // Die idUntis wird vorhandenen Schülern zugewiesen var schü = (from s in this where s.Anmeldename == schueler.Anmeldename select s).FirstOrDefault(); if (schü != null) { schü.IdUntis = schueler.IdUntis; } var untisKlasseName = (from k in klasses where k.IdUntis == schueler.UntisClass_Id select k.NameUntis).FirstOrDefault(); var atlantisKlasseName = (from a in atlantisschulers where a.Mail == schueler.MailAtlantis select a.Klasse).FirstOrDefault(); schueler.Klasse = atlantisKlasseName; if (atlantisKlasseName != null && untisKlasseName != atlantisKlasseName) { Console.WriteLine("[!] Der Schüler " + schueler.Nachname + " " + schueler.Vorname + " ist in Untis in der falschen Klasse (" + untisKlasseName + "). Er wird nach " + atlantisKlasseName + " umgebucht."); var untisZielKlasseId = (from k in klasses where k.NameUntis == atlantisKlasseName select k.IdUntis).FirstOrDefault(); KlasseWechseln(schueler, untisKlasseName, untisZielKlasseId, aktSj); } schueler.Klasse = atlantisKlasseName; schueler.Reliabmeldung = (from a in atlantisschulers where a.Mail == schueler.MailAtlantis select a.Reliabmeldung).FirstOrDefault(); schueler.Relianmeldung = (from a in atlantisschulers where a.Mail == schueler.MailAtlantis select a.Relianmeldung).FirstOrDefault(); if ((from a in atlantisschulers where a.Mail == schueler.MailAtlantis where !schueler.Deleted select a).Any()) { schuelers.Add(schueler); } else { if (!schueler.Deleted) { DeleteSchuelerAusUntis(schueler, aktSj); } } } ; oleDbDataReader.Close(); schuelers = schuelers.OrderBy(o => o.Klasse).ToList(); foreach (var schueler in schuelers) { this.Add(schueler); } } catch (Exception ex) { throw; } finally { oleDbConnection.Close(); Console.WriteLine(this.Count); } } } }