/// <summary> /// Prüft, ob die Legasthenievermerke der Datenbank mit der Excel-Datei übereinstimmen. /// </summary> /// <param name="schueler">Liste aller Schüler aus der Datenbank.</param> private void CheckLegastheniker(diNoDataSet.SchuelerRow schueler) { Schueler schuelerObj = new Schueler(schueler); if (schuelerObj.IsLegastheniker) // eigentlich auch zum Entfernen gedacht, aber dann werden jedesmal alle Vermerke neu gesetzt (nicht performant). { xls.SetLegasthenievermerk(schuelerObj.Id, schuelerObj.IsLegastheniker); } }
/// <summary> /// Prüft, ob ein Schueler in einem Kurs ist. Voreinstellung: Der Schueler ist drin, solange kein Selector ihn rausnimmt. /// Der Fremdsprachenselektor prüft, ob Französisch als zweite Fremdsprache eingetragen ist. /// </summary> /// <param name="schueler">Der Schüler.</param> /// <param name="kurs">Der Kurs (momentan nur französisch).</param> /// <returns>true wenn der Schüler französisch gewählt hat.</returns> public bool IsInKurs(diNoDataSet.SchuelerRow schueler, diNoDataSet.KursRow kurs) { var fach = new FachTableAdapter().GetDataById(kurs.FachId)[0]; if (fach.Kuerzel.Equals("F", StringComparison.OrdinalIgnoreCase)) { // F3 steht für französisch fortgeführt. Diese Leute gehören nicht in den "normalen" Französischkurs return (fach.Kuerzel.Equals(schueler.Fremdsprache2, StringComparison.OrdinalIgnoreCase)) && !(schueler.Wahlpflichtfach.Equals("F3", StringComparison.OrdinalIgnoreCase)); } return true; }
/// <summary> /// Füllt die Kurs-ListView mit den übergebenen Kursen. /// </summary> /// <param name="table">Data Table mit den Kursen.</param> private void FillKursliste(diNoDataSet.KursDataTable table) { List<Kurs> kurse = new List<Kurs>(); foreach (var aKurs in table) { kurse.Add(new Kurs(aKurs)); } listBoxKurse.DataSource = kurse; }
/// <summary> /// Aus dem übergebenen Kurs wird eine Exceldatei mit allen Schülerdaten generiert /// </summary> public ErzeugeExcelDatei(diNoDataSet.KursRow aKurs) { kurs = new Kurs(aKurs); if (kurs.getLehrer == null) { return; // es gibt auch Kurse ohne Lehrer, z. B. übernommene Noten aus 11ter Klasse } alleSchueler = kurs.getSchueler(true); // sind bereits via SQL nach Klasse und Namen sortiert if (alleSchueler.Count == 0) { log.WarnFormat("Der Kurs {0} hat keine Schueler ", kurs.Data.Bezeichnung); return; } if (alleSchueler.Count > OpenNotendatei.MaxAnzahlSchueler) { throw new InvalidOperationException("zu viele Schüler " + alleSchueler.Count); } if (string.IsNullOrEmpty(kurs.FachBezeichnung)) { // ignoriere FPA, Seminare und ähnliche Platzhalter log.Debug("Erzeuge keine Datei für das Fach " + kurs.getFach.Kuerzel); return; } CopyExcelFile(); xls = new OpenNotendatei(fileName); FillExcelFile(); SwitchNotenschluessel(); // speichere und schließe Datei xls.workbook.Save(); xls.Dispose(); // Destruktor aufrufen xls = null; }
public Klasse(diNoDataSet.KlasseRow klasseR) { data = klasseR; }
/// <summary> /// Hängt einen neuen Schüler unten an die Datei an. /// </summary> /// <param name="aSchueler">Der Schüler.</param> public void AppendSchueler(diNoDataSet.SchuelerRow aSchueler) { UnsavedChanges = true; // TODO: Methode ungetestet // muss von unten her gesucht werden, da in der DB dieser Schüler schon weg sein kann. int zeile = GetErsteFreieZeile(notenbogen); int zeileFuerSId = GetSidZeileForNotenbogenZeile(zeile); WriteValue(notenbogen, CellConstant.Nachname + zeile, aSchueler.Name); WriteValue(notenbogen, CellConstant.Vorname + (zeile + 1), " " + aSchueler.Rufname); WriteValueProtectedCell(sid, CellConstant.SId + zeileFuerSId, aSchueler.Id.ToString()); if (aSchueler.LRSStoerung || aSchueler.LRSSchwaeche) { WriteValue(notenbogen, CellConstant.LegasthenieVermerk + zeile, CellConstant.LegasthenieEintragung); } }
private static IList<Klasse> Fill(diNoDataSet.KlasseDataTable klassen) { IList<Klasse> res = new List<Klasse>(); foreach (var klasse in klassen) { res.Add(new Klasse(klasse)); } return res; }
public Kurs(diNoDataSet.KursRow data) { this.Id = data.Id; this.data = data; }
private void Init(diNoDataSet.LehrerRow row) { this.data = row; SetRollen(); }
public Schueler(diNoDataSet.SchuelerRow s) { this.Id = s.Id; this.data = s; }
/// <summary> /// Prüft, ob ein Schueler in einem Kurs ist. /// </summary> /// <param name="schueler">Der Schüler.</param> /// <param name="kurs">Der Kurs.</param> /// <returns>true, wenn der Schüler in diesen Kurs gehen soll.</returns> public bool IsInKurs(diNoDataSet.SchuelerRow schueler, diNoDataSet.KursRow kurs) { var fach = new FachTableAdapter().GetDataById(kurs.FachId)[0]; Schueler derSchueler = new Schueler(schueler); if (derSchueler.getKlasse.Zweig == Zweig.Wirtschaft) { if (derSchueler.getKlasse.Schulart == Schulart.FOS) { // Wirtschafts-FOSler müssen zwischen WIn und Französisch (fortgeführt) wählen // wenn der Schüler dieses Fach extra gewählt hat soll er natürlich reingehen if (fach.Kuerzel.Equals("F-Wi", StringComparison.OrdinalIgnoreCase) && schueler.Wahlpflichtfach.Equals("F3", StringComparison.OrdinalIgnoreCase)) { return true; } if (fach.Kuerzel.Equals("WIn", StringComparison.OrdinalIgnoreCase) && schueler.Wahlpflichtfach.Equals("WIn", StringComparison.OrdinalIgnoreCase)) { return true; } return false; } else { // Wirtschafts-BOSler gehen immer in WIn, aber nie in Französisch (fortgeführt) oder Kunst return fach.Kuerzel.Equals("WIn", StringComparison.OrdinalIgnoreCase); } } // Für Soziale gilt: Wer Kunst als Wahlpflichtfach gewählt hat geht in Kunst // wer Französisch als Wahlpflichtfach gewählt hat, geht in Französisch (das macht aber der // Fremdsprachenselector, weil dann Französisch als Sprache2 eingetragen wird) if (derSchueler.getKlasse.Zweig == Zweig.Sozial) { if (fach.Kuerzel.Equals("Ku", StringComparison.OrdinalIgnoreCase) && schueler.Wahlpflichtfach.Equals("Ku", StringComparison.OrdinalIgnoreCase)) { return true; } } return false; }
/// <summary> /// Prüft, ob die Legasthenievermerke der Datenbank mit der Excel-Datei übereinstimmen. /// </summary> /// <param name="sheet">Das Excel-Sheet.</param> /// <param name="kursAdapter">Der Kurs-Adapter.</param> /// <param name="kurs">Die Zeile des aktuellen Kurses in der Datenbank.</param> /// <param name="alleSchueler">Liste aller Schüler aus der Datenbank.</param> private static void CheckLegastheniker(ExcelSheet sheet, KursTableAdapter kursAdapter, diNoDataSet.KursRow kurs, diNoDataSet.SchuelerKursDataTable alleSchueler) { //TODO: Methode ungetestet using (FachTableAdapter fachAdapter = new FachTableAdapter()) { var deutsch = fachAdapter.GetDataByKuerzel("D")[0]; var englisch = fachAdapter.GetDataByKuerzel("E")[0]; if (kurs.FachId == deutsch.Id || kurs.FachId == englisch.Id) { foreach (var schueler in alleSchueler) { var excelSchueler = sheet.Schueler.FirstOrDefault( x => x.Id == schueler.SchuelerId ); //falls der Schüler noch in der Excel-Datei drinsteht. Könnte ja sein, dass er schon ausgetreten o. ä. ist if (excelSchueler != null) { var dbSchueler = new SchuelerTableAdapter().GetDataById(schueler.SchuelerId)[0]; if (excelSchueler.IsLegastheniker != (dbSchueler.LRSSchwaeche || dbSchueler.LRSStoerung)) { excelSchueler.IsLegastheniker = (dbSchueler.LRSSchwaeche || dbSchueler.LRSStoerung); sheet.SetLegasthenieVermerk(excelSchueler); } } } } } }
/// <summary> /// Trägt einen Schüler in einen Kurs in der Datenbank ein. /// </summary> /// <param name="kurs">Der Kurs.</param> /// <param name="dbKlasse">Die Klasse.</param> /// <param name="kursSelector">Ein Selektor zur Prüfung, welche Schüler in welchen Kurs auch wirklich müssen.</param> public static void AddSchuelerToKurs(diNoDataSet.KursRow kurs, diNoDataSet.KlasseRow dbKlasse, ISchuelerKursSelector kursSelector) { using (SchuelerTableAdapter sAdapter = new SchuelerTableAdapter()) { sAdapter.ClearBeforeFill = true; var schuelerDerKlasse = sAdapter.GetDataByKlasse(dbKlasse.Id); if (schuelerDerKlasse.Count == 0) { if (dbKlasse.Bezeichnung.StartsWith("FB") && dbKlasse.Bezeichnung.EndsWith("F")) { // z.B. FB13T_F meint die FOSler der Mischklasse FB13T. Evtl. sind die als eigene Klasse F13T in der DB string modifizierteKlasse = dbKlasse.Bezeichnung.Replace("FB", "F"); modifizierteKlasse = modifizierteKlasse.Replace("_F", string.Empty); dbKlasse = FindOrCreateKlasse(modifizierteKlasse, false); if (dbKlasse != null) { schuelerDerKlasse = sAdapter.GetDataByKlasse(dbKlasse.Id); } } if (dbKlasse.Bezeichnung.StartsWith("FB") && dbKlasse.Bezeichnung.EndsWith("B")) { // z.B. FB13T_B meint die BOSler der Mischklasse FB13T. Evtl. sind die als eigene Klasse B13T in der DB string modifizierteKlasse = dbKlasse.Bezeichnung.Replace("FB", "B"); modifizierteKlasse = modifizierteKlasse.Replace("_B", string.Empty); dbKlasse = FindOrCreateKlasse(modifizierteKlasse, false); if (dbKlasse != null) { schuelerDerKlasse = sAdapter.GetDataByKlasse(dbKlasse.Id); } } if (dbKlasse.Bezeichnung.EndsWith("_W") && dbKlasse.Bezeichnung.Contains("SW")) { // z.B. B13SW_W meint die Wirtschaftler der Mischklasse B13SW. Evtl. sind die nur als Mischklasse in der DB string modifizierteKlasse = dbKlasse.Bezeichnung.Replace("_W", string.Empty); dbKlasse = FindOrCreateKlasse(modifizierteKlasse, false); if (dbKlasse != null) { schuelerDerKlasse = sAdapter.GetDataByKlasseAndZweig(dbKlasse.Id, "W"); if (schuelerDerKlasse.Count == 0) { schuelerDerKlasse = sAdapter.GetDataByKlasseAndZweig(dbKlasse.Id, "WVR"); } } } if (dbKlasse.Bezeichnung.EndsWith("_S") && dbKlasse.Bezeichnung.Contains("SW")) { // z.B. B13SW_S meint die Wirtschaftler der Mischklasse B13SW. Evtl. sind die nur als Mischklasse in der DB string modifizierteKlasse = dbKlasse.Bezeichnung.Replace("_S", string.Empty); dbKlasse = FindOrCreateKlasse(modifizierteKlasse, false); if (dbKlasse != null) { schuelerDerKlasse = sAdapter.GetDataByKlasseAndZweig(dbKlasse.Id, "S"); } } if (dbKlasse.Bezeichnung.EndsWith("_T") && dbKlasse.Bezeichnung.Contains("TW")) { // Techniker aus der Mischklasse string modifizierteKlasse = dbKlasse.Bezeichnung.Replace("_T", string.Empty); dbKlasse = FindOrCreateKlasse(modifizierteKlasse, false); if (dbKlasse != null) { schuelerDerKlasse = sAdapter.GetDataByKlasseAndZweig(dbKlasse.Id, "T"); } } if (dbKlasse.Bezeichnung.EndsWith("_W") && dbKlasse.Bezeichnung.Contains("TW")) { // Wirtschaftler aus der Mischklasse string modifizierteKlasse = dbKlasse.Bezeichnung.Replace("_W", string.Empty); dbKlasse = FindOrCreateKlasse(modifizierteKlasse, false); if (dbKlasse != null) { schuelerDerKlasse = sAdapter.GetDataByKlasseAndZweig(dbKlasse.Id, "W"); } } if (dbKlasse.Bezeichnung.EndsWith("_T") && dbKlasse.Bezeichnung.Contains("ST")) { // Techniker aus der Mischklasse string modifizierteKlasse = dbKlasse.Bezeichnung.Replace("_T", string.Empty); dbKlasse = FindOrCreateKlasse(modifizierteKlasse, false); if (dbKlasse != null) { schuelerDerKlasse = sAdapter.GetDataByKlasseAndZweig(dbKlasse.Id, "T"); } } if (dbKlasse.Bezeichnung.EndsWith("_S") && dbKlasse.Bezeichnung.Contains("ST")) { // Soziale aus der Mischklasse string modifizierteKlasse = dbKlasse.Bezeichnung.Replace("_S", string.Empty); dbKlasse = FindOrCreateKlasse(modifizierteKlasse, false); if (dbKlasse != null) { schuelerDerKlasse = sAdapter.GetDataByKlasseAndZweig(dbKlasse.Id, "S"); } } } if (schuelerDerKlasse.Count == 0) { //throw new InvalidOperationException("Klasse " + dbKlasse.Bezeichnung + " ist leer"); log.Error("Klasse " + dbKlasse.Bezeichnung + " ist leer"); } foreach (var schueler in schuelerDerKlasse) { AddSchuelerToKurs(kurs, kursSelector, schueler); } } }
/// <summary> /// Prüft, ob ein Schueler in einem Kurs ist. /// </summary> /// <param name="schueler">Der Schüler.</param> /// <param name="kurs">Der Kurs.</param> /// <returns>true, wenn der Schüler in diesen Kurs gehen soll.</returns> public bool IsInKurs(diNoDataSet.SchuelerRow schueler, diNoDataSet.KursRow kurs) { var fach = new FachTableAdapter().GetDataById(kurs.FachId)[0]; // wenn eine Wahl vorliegt, zuerst danach richten bool kursGewaehlt = !string.IsNullOrEmpty(schueler.ReligionOderEthik); if (kursGewaehlt) { bool katholisch = fach.Kuerzel.Equals("K", StringComparison.OrdinalIgnoreCase) && schueler.ReligionOderEthik.Equals("RK", StringComparison.OrdinalIgnoreCase); bool evangelisch = fach.Kuerzel.Equals("Ev", StringComparison.OrdinalIgnoreCase) && schueler.ReligionOderEthik.Equals("EV", StringComparison.OrdinalIgnoreCase); bool ethik = fach.Kuerzel.Equals("Eth", StringComparison.OrdinalIgnoreCase) && schueler.ReligionOderEthik.Equals("Eth", StringComparison.OrdinalIgnoreCase); return katholisch || evangelisch || ethik; } else { // wenn keine Wahl vorliegt, dann muss das Bekenntnis passen // wenn das auch nicht passt, dann stecken wir den Schueler in Ethik bool bekenntnisStimmt = IsEqualBekenntnis(schueler.Bekenntnis, fach.Kuerzel); return bekenntnisStimmt || fach.Kuerzel.Equals("Eth", StringComparison.OrdinalIgnoreCase); } }
public static void AddSchuelerToKurs(diNoDataSet.KursRow kurs, ISchuelerKursSelector kursSelector, diNoDataSet.SchuelerRow schueler) { using (SchuelerKursTableAdapter skursAdapter = new SchuelerKursTableAdapter()) { if (kursSelector.IsInKurs(schueler, kurs) && skursAdapter.GetCountBySchuelerAndKurs(schueler.Id, kurs.Id) == 0) { log.Warn("neuer Schüler im Kurs " + kurs.Bezeichnung); skursAdapter.Insert(schueler.Id, kurs.Id); } } }
public Klasse(diNoDataSet.KlasseRow klasseR) { eigeneSchueler = new List<Schueler>(); data = klasseR; }
public Kurs(diNoDataSet.KursRow data) { this.Id = data.Id; this.data = data; setSchreibtKA(); }
/// <summary> /// Entfernt einen Schüler aus der Datei (Name und Id). Lässt seine Noten aber stehen. /// </summary> /// <param name="aSchueler">der Schüler.</param> public void RemoveSchueler(diNoDataSet.SchuelerRow aSchueler) { UnsavedChanges = true; RemoveSchueler(aSchueler.Id); }
public FachSchuelerNotenDruckKurz(diNoDataSet.SeminarfachnoteRow s) { fachBez = "Seminararbeit"; if (!s.IsGesamtnoteNull()) { Z = s.Gesamtnote.ToString(); JF2 =Z; } }
/// <summary> /// Hängt einen neuen Schüler unten an die Datei an. /// </summary> /// <param name="aSchueler">Der Schüler.</param> /// <param name="setzeLegasthenie">Ob der Legasthenievermerk geprüft werden soll.</param> public void AppendSchueler(diNoDataSet.SchuelerRow aSchueler, bool setzeLegasthenie) { UnsavedChanges = true; int zeile = GetErsteFreieZeile(notenbogen); int zeileFuerSId = GetSidZeileForNotenbogenZeile(zeile); WriteValueProtectedCell(notenbogen, CellConstant.Nachname + zeile, aSchueler.Name); WriteValueProtectedCell(notenbogen, CellConstant.Vorname + (zeile + 1), " " + aSchueler.Rufname); WriteValueProtectedCell(sid, CellConstant.SId + zeileFuerSId, aSchueler.Id.ToString()); if (setzeLegasthenie && (aSchueler.LRSStoerung || aSchueler.LRSSchwaeche)) { WriteValue(notenbogen, CellConstant.LegasthenieVermerk + zeile, CellConstant.LegasthenieEintragung); } }
public Fach(diNoDataSet.FachRow f) { data = f; }
/// <summary> /// Prüft, ob ein Schueler in einem Kurs ist. Voreinstellung: Der Schueler ist drin, solange kein Selector ihn rausnimmt. /// </summary> /// <param name="schueler">Der Schueler.</param> /// <param name="kurs">Der Kurs.</param> /// <returns>False wenn es einen Grund gibt, weswegen der Schueler in diesen Kurs nicht gehen darf. Sonst true.</returns> public bool IsInKurs(diNoDataSet.SchuelerRow schueler, diNoDataSet.KursRow kurs) { var fach = new FachTableAdapter().GetDataById(kurs.FachId)[0]; foreach (ISchuelerKursSelector selector in this.allSelectors) { if (selector.IsInterestedInFach(fach) && !selector.IsInKurs(schueler, kurs)) { return false; } } return true; }
/// <summary> /// Entfernt einen Schüler aus der Datei (Name und Id). Lässt seine Noten aber stehen. /// </summary> /// <param name="aSchueler">der Schüler.</param> public void RemoveSchueler(diNoDataSet.SchuelerRow aSchueler) { RemoveSchueler(aSchueler.Id); }
/// <summary> /// Interessiert sich momentan für die Fächer F-Wi, Ku und WIn. /// </summary> /// <param name="fach">Das Fach</param> /// <returns>true falls eines der Reli-Fächer übergeben wurde. Sonst false.</returns> public bool IsInterestedInFach(diNoDataSet.FachRow fach) { return fach.Kuerzel.Equals("F-Wi", StringComparison.OrdinalIgnoreCase) || fach.Kuerzel.Equals("WIn", StringComparison.OrdinalIgnoreCase) || fach.Kuerzel.Equals("Ku", StringComparison.OrdinalIgnoreCase); }
public BerechneteNote(int aKursId, int aSchuelerId, diNoDataSet.BerechneteNoteRow d) { kursid = aKursId; schuelerid = aSchuelerId; //SchnittSchulaufgaben = d.IsSchnittSchulaufgabenNull() ? null : d.SchnittSchulaufgaben; // frisst er nicht!!? if (d.IsSchnittSchulaufgabenNull()) SchnittSchulaufgaben = null; else SchnittSchulaufgaben = d.SchnittSchulaufgaben; if (d.IsSchnittMuendlichNull()) SchnittMuendlich = null; else SchnittMuendlich = d.SchnittMuendlich; if (d.IsJahresfortgangMitKommaNull()) JahresfortgangMitKomma = null; else JahresfortgangMitKomma = d.JahresfortgangMitKomma; if (d.IsJahresfortgangGanzzahligNull()) JahresfortgangGanzzahlig = null; else JahresfortgangGanzzahlig = d.JahresfortgangGanzzahlig; if (d.IsPruefungGesamtNull()) PruefungGesamt= null; else PruefungGesamt = d.PruefungGesamt; if (d.IsSchnittFortgangUndPruefungNull()) SchnittFortgangUndPruefung = null; else SchnittFortgangUndPruefung = d.SchnittFortgangUndPruefung; if (d.IsAbschlusszeugnisNull()) Abschlusszeugnis = null; else Abschlusszeugnis = d.Abschlusszeugnis; StandNr = (Zeitpunkt)d.StandNr; ErstesHalbjahr = d.ErstesHalbjahr; }
public Vorkommnis(diNoDataSet.VorkommnisRow data) { this.data = data; }
// baut Notenobjekt aus einer DB-Zeile auf public Note(diNoDataSet.NoteRow nr) { kursid = nr.KursId; schuelerid = nr.SchuelerId; Typ = (Notentyp)nr.Notenart; Punktwert = nr.Punktwert; Datum = nr.Datum; Zelle = nr.Zelle; Halbjahr = (Halbjahr)nr.Halbjahr; }
public Lehrer(diNoDataSet.LehrerRow r) { Init(r); }
/// <summary> /// Füllt die SchuelerRow mit ihren Daten aus WinSV /// </summary> /// <param name="cleanArray">Das Array mit Daten.</param> /// <param name="klasse">Die Klasse in welche der Schüler gehen soll.</param> /// <param name="row">Die SchuelerRow.</param> private static void FillRow(string[] cleanArray, diNoDataSet.KlasseRow klasse, diNoDataSet.SchuelerRow row) { row.Id = int.Parse(cleanArray[schuelerIdSpalte]); row.Name = cleanArray[nachnameSpalte]; row.Vorname = cleanArray[vornameSpalte]; row.KlasseId = klasse.Id; row.Schulart = klasse.Bezeichnung.StartsWith("B") ? "B" : "F"; row.Rufname = cleanArray[rufnameSpalte]; row.Geschlecht = cleanArray[geschlechtSpalte]; DateTime? geburtsdatum = ParseDate(cleanArray[geburtsdatumSpalte]); if (geburtsdatum == null) { row.SetGeburtsdatumNull(); } else { row.Geburtsdatum = (DateTime)geburtsdatum; } row.Geburtsort = cleanArray[geburtsortSpalte]; row.Bekenntnis = cleanArray[bekenntnisSpalte]; row.AnschriftPLZ = cleanArray[anschr1PlzSpalte]; row.AnschriftOrt = cleanArray[anschr1OrtSpalte]; row.AnschriftStrasse = cleanArray[anschr1StrasseSpalte]; row.AnschriftTelefonnummer = cleanArray[anschr1TelefonSpalte]; row.Ausbildungsrichtung = ChangeAusbildungsrichtung(cleanArray[ausbildungsrichtungSpalte]); row.Fremdsprache2 = cleanArray[fremdsprache2Spalte]; row.ReligionOderEthik = cleanArray[reliOderEthikSpalte]; if (cleanArray[wahlpflichtfachSpalte] == "F") { // normales Französisch wird als Fremdsprache2 importiert, aber nicht als Wahlpflichtfach row.Fremdsprache2 = "F"; } else { row.Wahlpflichtfach = ChangeFranz(cleanArray[wahlpflichtfachSpalte]); } row.Wahlfach1 = ChangeFranz(cleanArray[wahlfach1Spalte]); row.Wahlfach2 = ChangeFranz(cleanArray[wahlfach2Spalte]); row.Wahlfach3 = ChangeFranz(cleanArray[wahlfach3Spalte]); row.Wahlfach4 = ChangeFranz(cleanArray[wahlfach4Spalte]); row.Wiederholung1Jahrgangsstufe = cleanArray[wdh1JahrgangsstufeSpalte]; row.Wiederholung2Jahrgangsstufe = cleanArray[wdh2JahrgangsstufeSpalte]; row.Wiederholung1Grund = cleanArray[wdh1GrundSpalte]; row.Wiederholung2Grund = cleanArray[wdh2GrundSpalte]; DateTime? probezeit = ParseDate(cleanArray[probezeitBisSpalte]); if (probezeit == null || probezeit <= DateTime.Now) { row.SetProbezeitBisNull(); } else { row.ProbezeitBis = (DateTime)probezeit; } DateTime? austrittsdatum = ParseDate(cleanArray[austrittsdatumSpalte]); if (austrittsdatum == null) { row.SetAustrittsdatumNull(); } else { row.Austrittsdatum = (DateTime)austrittsdatum; } row.SchulischeVorbildung = cleanArray[schulischeVorbildungSpalte]; row.BeruflicheVorbildung = cleanArray[beruflicheVorbildungSpalte]; row.LRSStoerung = cleanArray[lrsStoerungSpalte] == "1"; row.LRSSchwaeche = cleanArray[lrsSchwaecheSpalte] == "1"; DateTime? lrsBis = ParseDate(cleanArray[lrsBisDatumSpalte]); if (lrsBis == null) { row.SetLRSBisDatumNull(); } else { row.LRSBisDatum = (DateTime)lrsBis; } row.VerwandtschaftsbezeichnungEltern1 = cleanArray[verwandtschaftsbezeichnungEltern1Spalte]; row.NachnameEltern1 = cleanArray[nachnameEltern1Spalte]; row.VornameEltern1 = cleanArray[vornameEltern1Spalte]; row.AnredeEltern1 = cleanArray[anredeEltern1Spalte]; row.NachnameEltern2 = cleanArray[nachnameEltern2Spalte]; row.VornameEltern2 = cleanArray[vornameEltern2Spalte]; row.AnredeEltern2 = cleanArray[anredeEltern2Spalte]; row.VerwandtschaftsbezeichnungEltern2 = cleanArray[verwandtschaftsbezeichnungEltern2Spalte]; row.EintrittJahrgangsstufe = cleanArray[eintrittJgstSpalte]; DateTime? eintrittDatum = ParseDate(cleanArray[eintrittDatumSpalte]); if (eintrittDatum == null) { row.SetEintrittAmNull(); } else { row.EintrittAm = (DateTime)eintrittDatum; } row.EintrittAusSchulnummer = !string.IsNullOrEmpty(cleanArray[eintrittVonSchulnummerSpalte]) ? int.Parse(cleanArray[eintrittVonSchulnummerSpalte]) : -1; row.Email = cleanArray[emailSpalte]; row.Notfalltelefonnummer = cleanArray[notfallrufnummerSpalte]; }