Ejemplo n.º 1
0
        /// <summary>
        /// Konstruktor.
        /// </summary>
        /// <param name="statusChangedHandler">Handler für Statusmeldungen. Kann auch null sein.</param>
        public ErzeugeAlleExcelDateien(StatusChanged statusChangedHandler)
        {
            KursTableAdapter ta = new KursTableAdapter();
              var kurse = ta.GetData();
              int count = 0;

              foreach (var kurs in kurse)
              {
            //if (kurs.Id > 824 && kurs.Id < 840)
            //if (kurs.Id==851)
            {
              if (statusChangedHandler != null)
              {
            statusChangedHandler(this, new StatusChangedEventArgs() { Meldung = "Erzeuge Datei" + count + " von " + kurse.Count });
              }

              new ErzeugeExcelDatei(kurs);
              count++;
            }
              }

              if (statusChangedHandler != null)
              {
            statusChangedHandler(this, new StatusChangedEventArgs() { Meldung = count + " Dateien erfolgreich erzeugt" });
              }
        }
Ejemplo n.º 2
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" });
              }
        }
Ejemplo n.º 3
0
        void subrptKursEventHandler(object sender, SubreportProcessingEventArgs e)
        {
            diNoDataSet.KursDataTable kurse = new diNoDataSet.KursDataTable();
            KursTableAdapter BerichtTableAdapter;
            BerichtTableAdapter = new KursTableAdapter();
            BerichtTableAdapter.ClearBeforeFill = true;

            //e.Parameters verwenden, um Fremdschlüssel abzugreifen
            int LehrerId=0;
            int.TryParse(e.Parameters[0].Values[0],out LehrerId);
            BerichtTableAdapter.FillByLehrerId(kurse, LehrerId);
            e.DataSources.Add(new ReportDataSource("DataSetKurs",(DataTable) kurse));
        }
Ejemplo n.º 4
0
 public Kurs(int id)
 {
     this.Id = id;
     var rst = new KursTableAdapter().GetDataById(id);
     if (rst.Count == 1)
     {
         this.data = rst[0];
     }
     else
     {
         throw new InvalidOperationException("Konstruktor Kurs: Ungültige ID.");
     }
 }
Ejemplo n.º 5
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]);
        }
Ejemplo n.º 6
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];
              }
        }
Ejemplo n.º 7
0
        /// <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);
              }
            }
              }
            }
              }
        }