Beispiel #1
0
        /// <summary>
        /// Synchronisiert die Excel-Datei mit der Datenbank.
        /// </summary>
        /// <param name="fileName">Der Dateiname.</param>
        public void Synchronize(string fileName)
        {
            if (OnStatusChange != null)
              {
            OnStatusChange(this, new StatusChangedEventArgs() { Status = "synchronisiere " + fileName });
              }

              using (ExcelSheet sheet = new ExcelSheet(fileName))
              {
            // erst mal schauen, ob der Kurs laut DB existiert. Todo: nächstes Jahr kursId verwenden!
            KursTableAdapter kursAdapter = new KursTableAdapter();
            var kurse = kursAdapter.GetDataByBezeichnung(sheet.Kursbezeichnung);
            if (kurse.Count != 1)
            {
              kurse = kursAdapter.GetDataByBezeichnung(sheet.Fachname + " " + sheet.Kursbezeichnung);
              if (kurse.Count != 1)
              {
            if (OnStatusChange != null)
            {
              OnStatusChange(this, new StatusChangedEventArgs() { Status = "Fehler in Datei " + fileName + ": Kurs nicht oder mehrfach gefunden: " + sheet.Kursbezeichnung });
            }
              }
            }

            int kursId = kurse[0].Id;
            using (NoteTableAdapter noteAdapter = new NoteTableAdapter())
            using (BerechneteNoteTableAdapter berechneteNotenAdapter = new BerechneteNoteTableAdapter())
            {
              DeleteAlteNoten(kursId, noteAdapter, berechneteNotenAdapter);
              foreach (var schueler in sheet.Schueler)
              {
            InsertNoten(kursId, noteAdapter, berechneteNotenAdapter, schueler);
              }

              if (OnStatusChange != null)
              {
            OnStatusChange(this, new StatusChangedEventArgs() { Status = "Noten sind eingetragen. Prüfe auf Änderungen an den Schülerdaten." });
              }

              var alleSchueler = CheckSchueler(sheet, kursId);
              CheckLegastheniker(sheet, kursAdapter, kurse[0], alleSchueler);
            }
              }

              if (OnStatusChange != null)
              {
            OnStatusChange(this, new StatusChangedEventArgs() { Status = "Datei " + fileName + " erfolgreich gelesen" });
              }
        }
Beispiel #2
0
        private static Kurs FindOrCreateDummyKurs(string bezeichnung, string fachKuerzel)
        {
            var kursAdapter = new KursTableAdapter();
              var fachAdapter = new FachTableAdapter();

              var kurse = kursAdapter.GetDataByBezeichnung(bezeichnung);
              if (kurse == null || kurse.Count == 0)
              {
            kursAdapter.Insert(bezeichnung, null, fachAdapter.GetDataByKuerzel(fachKuerzel)[0].Id, null);
            kurse = kursAdapter.GetDataByBezeichnung(bezeichnung);
              }
              if (kurse == null || kurse.Count == 0)
              {
            throw new InvalidOperationException("Dummykurs "+ bezeichnung + " konnte nicht angelegt werden.");
              }

              return new Kurs(kurse[0]);
        }
        /// <summary>
        /// Sucht den Kurs in der Datenbank. Falls nicht vorhanden, wird er neu angelegt.
        /// </summary>
        /// <param name="aKursBezeichung">Die Bezeichnung des Kurses.</param>
        /// <param name="aLehrerId">Die Id des Lehrers.</param>
        /// <param name="aFach">Das Fach.</param>
        /// <returns>Die Zurszeile in der Datenbank.</returns>
        public static diNoDataSet.KursRow FindOrCreateKurs(string aKursBezeichung, int aLehrerId, string aFach)
        {
            using (var kursAdapter = new KursTableAdapter())
              {
            // suche den Kurs in der Datenbank. Wenn neu => anlegen
            var kurse = kursAdapter.GetDataByBezeichnung(aKursBezeichung);
            if (kurse.Count == 0)
            {
              // suche Fach in der Datenbank
              var fach = FindOrCreateFach(aFach);
              kursAdapter.Insert(aKursBezeichung, aLehrerId, fach.Id);
            }

            kurse = kursAdapter.GetDataByBezeichnung(aKursBezeichung);
            return kurse[0];
              }
        }