Example #1
0
        private void LeseKlassenleiter()
        {
            KlasseTableAdapter ta  = new KlasseTableAdapter();
              Worksheet s = xls.workbook.Worksheets[1];
              //Worksheet s = wb.ActiveSheet;
              int zeile=2;
              string kuerzel, klasse;
              int lehrerid;

              kuerzel = (string)(s.Cells[zeile,3].Value);
              klasse = (string)(s.Cells[zeile,4].Value);
              while (kuerzel!=null)
              {
            if (klasse!=null)
            {
              LehrerListe.TryGetValue(kuerzel,out lehrerid);
              var dt = ta.GetDataByBezeichnung(klasse);
              if (dt.Count>0)
              {
            var klassenRow = dt[0];
            klassenRow.KlassenleiterId = lehrerid;
            ta.Update(klassenRow);
              }
            }
            zeile++;
              kuerzel = (string)(s.Cells[zeile,3].Value);
              klasse = (string)(s.Cells[zeile,4].Value);
              }
        }
Example #2
0
 public Klasse(int id)
 {
     var rst = new KlasseTableAdapter().GetDataById(id);
     if (rst.Count == 1)
     {
         this.data = rst[0];
     }
     else
     {
         throw new InvalidOperationException("Konstruktor Klasse: Ungültige ID.");
     }
 }
Example #3
0
        /// <summary>
        /// Die Methode zum Einlesen der Daten.
        /// </summary>
        /// <param name="fileName">Der Dateiname.</param>
        public static void ReadSchueler(string fileName)
        {
            using (StreamReader reader = new StreamReader(fileName, Encoding.GetEncoding("iso-8859-1")))
              using (SchuelerTableAdapter tableAdapter = new SchuelerTableAdapter())
              using (KlasseTableAdapter klasseTableAdapter = new KlasseTableAdapter())
              {
            while (!reader.EndOfStream)
            {
              string line = reader.ReadLine();
              if (string.IsNullOrEmpty(line))
              {
            log.Debug("Ignoriere Leerzeile");
            continue;
              }

              string[] array = line.Split(new string[] { "\t" }, StringSplitOptions.None);
              string[] cleanArray = array.Select(aString => aString.Trim(new char[] { '\"', ' ', '\n' })).ToArray();

              //TODO: Schueler nicht in Teilklassen stecken (bei Mischklassen, vor allem FOS/BOS-Mischung problematisch)
              var klasse = GetKlasseId(klasseTableAdapter, cleanArray[klasseSpalte].Trim());
              if (klasse == null)
              {
            log.Debug("Ignoriere einen Schüler ohne richtige Klasse. Übergebene Klasse war " + cleanArray[klasseSpalte]);
            continue;
              }

              // wenn der Schüler noch nicht vorhanden ist
              var table = tableAdapter.GetDataById(int.Parse(cleanArray[schuelerIdSpalte]));
              diNoDataSet.SchuelerRow row = (table.Count == 0) ? table.NewSchuelerRow() : table[0];
              FillRow(cleanArray, klasse, row);
              if (table.Count == 0)
              {
            table.AddSchuelerRow(row);
              }

              row.AcceptChanges();
              tableAdapter.Update(row);

              // Diese Zeile meldet den Schüler bei allen notwendigen Kursen seiner Klasse an
              new Schueler(row).WechsleKlasse(new Klasse(klasse));
            }
              }
        }
        /// <summary>
        /// Die Methode zum Einlesen der Daten.
        /// </summary>
        /// <param name="fileName">Der Dateiname.</param>
        public static void ReadSchueler(string fileName)
        {
            using (StreamReader reader = new StreamReader(fileName, Encoding.GetEncoding("iso-8859-1")))
              using (SchuelerTableAdapter tableAdapter = new SchuelerTableAdapter())
              using (KlasseTableAdapter klasseTableAdapter = new KlasseTableAdapter())
              {
            while (!reader.EndOfStream)
            {
              string line = reader.ReadLine();
              if (string.IsNullOrEmpty(line))
              {
            log.Debug("Ignoriere Leerzeile");
            continue;
              }

              string[] array = line.Split(new string[] { "\t" }, StringSplitOptions.None);
              string[] cleanArray = array.Select(aString => aString.Trim(new char[] { '\"', ' ', '\n' })).ToArray();

              int klasseId = GetKlasseId(klasseTableAdapter, cleanArray[klasseSpalte].Trim());
              if (klasseId == -1)
              {
            log.Debug("Ignoriere einen Schüler ohne richtige Klasse. Übergebene Klasse war " + cleanArray[klasseSpalte]);
            continue;
              }

              // wenn der Schüler noch nicht vorhanden ist
              if (tableAdapter.GetDataById(int.Parse(cleanArray[schuelerIdSpalte])).Count == 0)
              {
            tableAdapter.Insert(
              int.Parse(cleanArray[schuelerIdSpalte]),
              cleanArray[nachnameSpalte],
              cleanArray[vornameSpalte],
              klasseId,
              cleanArray[rufnameSpalte],
              cleanArray[geschlechtSpalte],
              ParseDate(cleanArray[geburtsdatumSpalte]),
              cleanArray[geburtsortSpalte],
              cleanArray[bekenntnisSpalte],
              cleanArray[anschr1PlzSpalte],
              cleanArray[anschr1OrtSpalte],
              cleanArray[anschr1StrasseSpalte],
              cleanArray[anschr1TelefonSpalte],
              ChangeAusbildungsrichtung(cleanArray[ausbildungsrichtungSpalte]),
              cleanArray[fremdsprache2Spalte],
              cleanArray[reliOderEthikSpalte],
              cleanArray[wahlpflichtfachSpalte],
              cleanArray[wahlfach1Spalte],
              cleanArray[wahlfach2Spalte],
              cleanArray[wahlfach3Spalte],
              cleanArray[wahlfach4Spalte],
              cleanArray[wdh1JahrgangsstufeSpalte],
              cleanArray[wdh2JahrgangsstufeSpalte],
              cleanArray[wdh1GrundSpalte],
              cleanArray[wdh2GrundSpalte],
              ParseDate(cleanArray[probezeitBisSpalte]),
              ParseDate(cleanArray[austrittsdatumSpalte]),
              cleanArray[schulischeVorbildungSpalte],
              cleanArray[beruflicheVorbildungSpalte],
              cleanArray[lrsStoerungSpalte] == "1",
              cleanArray[lrsSchwaecheSpalte] == "1",
              ParseDate(cleanArray[lrsBisDatumSpalte]),
              cleanArray[verwandtschaftsbezeichnungEltern1Spalte],
              cleanArray[nachnameEltern1Spalte],
              cleanArray[vornameEltern1Spalte],
              cleanArray[anredeEltern1Spalte],
              cleanArray[nachnameEltern2Spalte],
              cleanArray[vornameEltern2Spalte],
              cleanArray[anredeEltern2Spalte],
              cleanArray[verwandtschaftsbezeichnungEltern2Spalte]
              );
              }
            }
              }
        }
 /// <summary>
 /// Sucht die ID der Klasse in der Datenbank. Versucht auch zu beurteilen, ob es sich überhaupt um eine echte Klasse handelt.
 /// Legt auch Klassen ggf. selbstständig in der Datenbank an.
 /// </summary>
 /// <param name="klasseTableAdapter">Der Table Adapter für Klassen.</param>
 /// <param name="klasse">Die Klassenbezeichnung.</param>
 /// <returns>Die Id der Klasse oder -1 falls die Klasse ungültig ist.</returns>
 private static int GetKlasseId(KlasseTableAdapter klasseTableAdapter, string klasse)
 {
     var klasseDBresult = klasseTableAdapter.GetDataByBezeichnung(klasse);
       if (klasseDBresult.Count == 1)
       {
     return klasseDBresult[0].Id;
       }
       else
       {
     // -N : Klassen für kommendes Jahr
     // AHR, FHR: Klassen des vergangenen Jahres
     // Abm: Abmeldungen
     // Ex, Import: ?
     if (klasse.EndsWith("-N") || klasse.Contains("AHR") || klasse.Contains("FHR") || klasse.Contains("Abm") || klasse.Equals("Ex") || klasse.Equals("Import"))
     {
       return -1;
     }
     else
     {
       klasseTableAdapter.Insert(klasse);
       var neueKlasse = klasseTableAdapter.GetDataByBezeichnung(klasse);
       return neueKlasse[0].Id;
     }
       }
 }
        /// <summary>
        /// Sucht eine Klasse in der Datenbank. Wenn nicht gefunden, kann sie neu angelegt werden.
        /// </summary>
        /// <param name="aklasse">Die Klassenbezeichnung.</param>
        /// <param name="createIfNotFound">True wenn die Klasse ggf. auch neu angelegt werden darf.</param>
        /// <returns>Die Zeile der Klasse in der Datenbank oder null wenn nicht gefunden.</returns>
        public static diNoDataSet.KlasseRow FindOrCreateKlasse(string aklasse, bool createIfNotFound)
        {
            // suche die Klasse in der Datenbank. Wenn neu => anlegen
              using (var klAdapter = new KlasseTableAdapter())
              {
            var klasse = klAdapter.GetDataByBezeichnung(aklasse);
            if (klasse.Count == 0)
            {
              if (createIfNotFound)
              {
            new KlasseTableAdapter().Insert(aklasse);
              }
              else
              {
            return null;
              }
            }

            return new KlasseTableAdapter().GetDataByBezeichnung(aklasse)[0];
              }
        }