Exemplo n.º 1
0
        internal void ToExchange(Lehrers lehrers)
        {
            ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013)
            {
                UseDefaultCredentials = true
            };

            service.TraceEnabled = false;
            service.TraceFlags   = TraceFlags.All;
            service.Url          = new Uri("https://ex01.bkb.local/EWS/Exchange.asmx");

            Excelzeilen e = new Excelzeilen();

            foreach (var lehrer in lehrers)
            {
                foreach (var excelzeile in this)
                {
                    foreach (var v in excelzeile.IVerantwortlich)
                    {
                        if (v.Kürzel == lehrer.Kürzel)
                        {
                            v.Excelzeilen.Add(excelzeile);
                        }
                    }
                }
            }

            foreach (var lehrer in lehrers)
            {
                if (lehrer.Excelzeilen.Count > 0)
                {
                    lehrer.ToExchange(service);
                }
            }
        }
Exemplo n.º 2
0
        public Excelzeilen Notenlisten(Schuelers schuelers, Lehrers lehrers)
        {
            Excelzeilen excelzeilen = new Excelzeilen();

            string quelle = "APA.xlsx";

            System.IO.File.Copy(quelle, Global.Ziel, true);

            Application application = new Application();
            Workbook    workbook    = application.Workbooks.Open(Global.Ziel);

            try
            {
                foreach (var klasse in this)
                {
                    excelzeilen.Add(klasse.Notenliste(application, workbook, (from s in schuelers
                                                                              where s.Klasse.NameUntis == klasse.NameUntis
                                                                              select s).ToList(), lehrers));
                }
                return(excelzeilen);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
            finally
            {
                workbook.Save();
                workbook.Close();
                application.Quit();
            }
            return(null);
        }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            System.Net.ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => true);

            try
            {
                Console.WriteLine(Global.Titel);

                Global.IstInputNotenCsvVorhanden();

                var         prds        = new Periodes();
                var         fchs        = new Fachs();
                var         lehs        = new Lehrers(prds);
                var         klss        = new Klasses(lehs, prds);
                var         schuelers   = new Schuelers(klss, lehs);
                Excelzeilen excelzeilen = new Excelzeilen();
                schuelers.Unterrichte();
                excelzeilen.AddRange(klss.Notenlisten(schuelers, lehs));
                excelzeilen.ToExchange(lehs);
                lehs.FehlendeUndDoppelteEinträge(schuelers);
                System.Diagnostics.Process.Start(Global.Ziel);
                //Global.MailSenden(new Klasse(), new Lehrer(), "Liste alle Dokumente für den APA", "Siehe Anlage.", klss.Dokumente());
                //System.Windows.Forms.Clipboard.SetText(excelzeilen.ToClipboard());
                Console.WriteLine("Tabelle ZulassungskonferenzBC in Zwischenablage geschrieben.");
                Console.ReadKey();
            }
            catch (IOException ex)
            {
                Console.WriteLine(ex.ToString());
                Console.ReadKey();
                Environment.Exit(0);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Heiliger Bimbam! Es ist etwas schiefgelaufen! Die Verarbeitung wird gestoppt.");
                Console.WriteLine("");
                Console.WriteLine(ex);
                Console.ReadKey();
                Environment.Exit(0);
            }
        }
Exemplo n.º 4
0
        public Schuelers(Klasses klss, Lehrers lehs)
        {
            using (OdbcConnection connection = new OdbcConnection(Global.ConAtl))
            {
                DataSet         dataSet         = new DataSet();
                OdbcDataAdapter schuelerAdapter = new OdbcDataAdapter(@"
SELECT DBA.schue_sj.pu_id AS ID,
DBA.schue_sj.dat_eintritt AS bildungsgangEintrittDatum,
DBA.schue_sj.dat_austritt AS Austrittsdatum,
DBA.schue_sj.s_klassenziel_erreicht,
DBA.schue_sj.dat_klassenziel_erreicht,
DBA.schueler.name_1 AS Nachname,
DBA.schueler.name_2 AS Vorname,
DBA.schueler.dat_geburt AS GebDat,
DBA.klasse.klasse AS Klasse
FROM ( DBA.schue_sj JOIN DBA.schueler ON DBA.schue_sj.pu_id = DBA.schueler.pu_id ) JOIN DBA.klasse ON DBA.schue_sj.kl_id = DBA.klasse.kl_id 
WHERE vorgang_schuljahr = '" + Global.AktSjAtl + "'", connection);

                connection.Open();
                schuelerAdapter.Fill(dataSet, "DBA.leistungsdaten");

                foreach (DataRow theRow in dataSet.Tables["DBA.leistungsdaten"].Rows)
                {
                    int id = Convert.ToInt32(theRow["ID"]);

                    DateTime austrittsdatum = theRow["Austrittsdatum"].ToString().Length < 3 ? new DateTime() : DateTime.ParseExact(theRow["Austrittsdatum"].ToString(), "dd.MM.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);

                    DateTime bildungsgangEintrittDatum = theRow["bildungsgangEintrittDatum"].ToString().Length < 3 ? new DateTime() : DateTime.ParseExact(theRow["bildungsgangEintrittDatum"].ToString(), "dd.MM.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);

                    if (austrittsdatum.Year == 1)
                    {
                        DateTime gebdat = theRow["Gebdat"].ToString().Length < 3 ? new DateTime() : DateTime.ParseExact(theRow["Gebdat"].ToString(), "dd.MM.yyyy HH:mm:ss", System.Globalization.CultureInfo.InvariantCulture);

                        Klasse klasse = theRow["Klasse"] == null ? null : (from k in klss where k.NameUntis == theRow["Klasse"].ToString() select k).FirstOrDefault();

                        string nachname = theRow["Nachname"] == null ? "" : theRow["Nachname"].ToString();
                        string vorname  = theRow["Vorname"] == null ? "" : theRow["Vorname"].ToString();

                        Schueler schueler = new Schueler(
                            id,
                            nachname,
                            vorname,
                            gebdat,
                            klasse,
                            bildungsgangEintrittDatum
                            );

                        if ((from a in Global.AbschlussKlassen
                             where klasse != null
                             where klasse.NameUntis != null
                             where klasse.NameUntis.StartsWith(a)
                             select a).Any())
                        {
                            this.Add(schueler);
                        }
                    }
                }

                connection.Close();
                Console.WriteLine(("Schüler " + ".".PadRight(this.Count / 150, '.')).PadRight(48, '.') + (" " + this.Count).ToString().PadLeft(30), '.');
            }
        }
Exemplo n.º 5
0
        public Klasses(Lehrers lehrers, Periodes periodes)
        {
            Lehrers = lehrers;

            using (OleDbConnection oleDbConnection = new OleDbConnection(Global.ConU))
            {
                try
                {
                    string queryString = @"SELECT 
Class.CLASS_ID, 
Class.Name, 
Class.TeacherIds, 
Class.Longname, 
Teacher.Name,
Class.ClassLevel, 
Class.PERIODS_TABLE_ID,
Department.Name,
Class.TimeRequest,
Class.ROOM_ID,
Class.Text
FROM (Class LEFT JOIN Department ON Class.DEPARTMENT_ID = Department.DEPARTMENT_ID) LEFT JOIN Teacher ON Class.TEACHER_ID = Teacher.TEACHER_ID
WHERE (((Class.SCHOOL_ID)=177659) AND ((Class.TERM_ID)=" + periodes.Count + ") AND ((Class.Deleted)=False) AND ((Class.TERM_ID)=" + periodes.Count + ") AND ((Class.SCHOOLYEAR_ID)=" + Global.AktSjUnt + ") AND ((Department.SCHOOL_ID)=177659) AND ((Department.SCHOOLYEAR_ID)=" + Global.AktSjUnt + ") AND ((Teacher.SCHOOL_ID)=177659) AND ((Teacher.SCHOOLYEAR_ID)=" + Global.AktSjUnt + ") AND ((Teacher.TERM_ID)=" + periodes.Count + "))ORDER BY Class.Name ASC; ";

                    OleDbCommand oleDbCommand = new OleDbCommand(queryString, oleDbConnection);
                    oleDbConnection.Open();
                    OleDbDataReader oleDbDataReader = oleDbCommand.ExecuteReader();

                    while (oleDbDataReader.Read())
                    {
                        List <Lehrer> klassenleitungen = new List <Lehrer>();

                        foreach (var item in (Global.SafeGetString(oleDbDataReader, 2)).Split(','))
                        {
                            klassenleitungen.Add((from l in lehrers
                                                  where l.IdUntis.ToString() == item
                                                  select l).FirstOrDefault());
                        }

                        var klasseName = Global.SafeGetString(oleDbDataReader, 1);

                        Klasse klasse = new Klasse()
                        {
                            IdUntis          = oleDbDataReader.GetInt32(0),
                            NameUntis        = klasseName,
                            Klassenleitungen = klassenleitungen,
                            Jahrgang         = Global.SafeGetString(oleDbDataReader, 5),
                            Bereichsleitung  = Global.SafeGetString(oleDbDataReader, 7),
                            Beschreibung     = Global.SafeGetString(oleDbDataReader, 3),
                            Url = "https://www.berufskolleg-borken.de/bildungsgange/" + Global.SafeGetString(oleDbDataReader, 10)
                        };

                        if ((from a in Global.AbschlussKlassen
                             where klasse != null
                             where klasse.NameUntis != null
                             where klasse.NameUntis.StartsWith(a)
                             select a).Any())
                        {
                            this.Add(klasse);
                        }
                    }
                    ;

                    Console.WriteLine(("Klassen " + ".".PadRight(this.Count / 150, '.')).PadRight(48, '.') + (" " + this.Count).ToString().PadLeft(30), '.');

                    oleDbDataReader.Close();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                    throw new Exception(ex.ToString());
                }
                finally
                {
                    oleDbConnection.Close();
                }
            }
        }
Exemplo n.º 6
0
        internal Excelzeile Notenliste(
            Application application,
            Workbook workbook,
            List <Schueler> schuelers,
            Lehrers lehrers)
        {
            Console.Write(NameUntis.PadRight(6) + ": Excel-Notenliste erzeugen ... ");

            Worksheet deckblatt = workbook.Worksheets.get_Item(1);

            deckblatt.Copy(Type.Missing, workbook.Sheets[workbook.Sheets.Count]);
            workbook.Sheets[workbook.Sheets.Count].Name = NameUntis + "-D";
            var worksheet = workbook.Sheets[NameUntis + "-D"];

            worksheet.Activate();

            worksheet.Cells[7, 2]  = "Prüfung: Sommer " + DateTime.Now.Year;
            worksheet.Cells[10, 3] = NameUntis;
            worksheet.Cells[10, 6] = Klassenleitungen[0].Vorname + " " + Klassenleitungen[0].Nachname;

            // Lehrer auf dem Deckblatt auflisten

            int z = 16;

            foreach (var lehrerkürzel in (from s in schuelers from f in s.Fächer orderby f.Lehrerkürzel select f.Lehrerkürzel).Distinct())
            {
                worksheet.Cells[z, 2] = (from l in lehrers where l.Kürzel == lehrerkürzel select l.Nachname + ", " + l.Vorname).FirstOrDefault();

                var fächer = (from s in schuelers
                              from f in s.Fächer
                              where f.Lehrerkürzel == lehrerkürzel
                              where !f.KürzelUntis.EndsWith(" FU")
                              select f.KürzelUntis).Distinct().ToList();
                var ff = "";
                foreach (var fach in fächer)
                {
                    ff += fach + ",";
                }
                worksheet.Cells[z, 6] = ff.TrimEnd(',');
                z++;
            }

            Worksheet vorlage = workbook.Sheets["Liste"];

            if (NameUntis == "BSO")
            {
                vorlage = workbook.Sheets["Liste-BSO"];
            }

            vorlage.Copy(Type.Missing, workbook.Sheets[workbook.Sheets.Count]);
            workbook.Sheets[workbook.Sheets.Count].Name = NameUntis + "-L";
            worksheet = workbook.Sheets[NameUntis + "-L"];
            worksheet.Activate();

            worksheet.PageSetup.LeftHeader = "Prüfungsliste";
            //worksheet.PageSetup.CenterHeader = "Abschlusskonferenz";
            //worksheet.PageSetup.RightHeader = DateTime.Now.ToLocalTime();

            worksheet.Cells[1, 1] = "Klasse: " + this.NameUntis + "         Klassenleitung: " + this.Klassenleitungen[0].Vorname + " " + this.Klassenleitungen[0].Nachname + "        " + "Schuljahr: " + Global.AktSjAtl;
            //worksheet.Cells.Font.Size = 12;

            int zeileObenLinks  = 3;
            int spalteObenlinks = 1;

            foreach (var schueler in schuelers.OrderBy(x => x.Nachname).ThenBy(y => y.Vorname).ToList())
            {
                worksheet.Cells[zeileObenLinks + 2, spalteObenlinks] = schueler.Nachname + ", " + schueler.Vorname;
                worksheet.Cells[zeileObenLinks + 3, spalteObenlinks] = "*" + schueler.Gebdat.ToShortDateString();

                if (NameUntis == "BSO")
                {
                    worksheet.Cells[zeileObenLinks + 5, spalteObenlinks + 1] = "";
                    worksheet.Cells[zeileObenLinks + 6, spalteObenlinks + 1] = "";
                    worksheet.Cells[zeileObenLinks + 7, spalteObenlinks + 1] = "";
                }

                int x = 0;

                foreach (var fach in (from f in schueler.Fächer
                                      where f.KürzelUntis != null
                                      where f.KürzelUntis != ""
                                      where f.Lehrerkürzel != null
                                      where f.Lehrerkürzel != ""
                                      where !f.KürzelUntis.EndsWith("FU")
                                      select f).OrderBy(y => y.Nummer).Distinct().ToList())
                {
                    worksheet.Cells[zeileObenLinks + 1, spalteObenlinks + 2 + x] = fach.Lehrerkürzel;
                    worksheet.Cells[zeileObenLinks + 2, spalteObenlinks + 2 + x] = fach.KürzelUntis;

                    // Wenn der Schüler auch BWR hat, wird aus IF WI

                    if (fach.KürzelUntis == "IF")
                    {
                        if ((from f in schueler.Fächer
                             where f.KürzelUntis.StartsWith("BWR")
                             select f.KürzelUntis).Any())
                        {
                            worksheet.Cells[zeileObenLinks + 2, spalteObenlinks + 2 + x] = "WI";
                        }
                    }

                    worksheet.Cells[zeileObenLinks + 3, spalteObenlinks + 2 + x] = fach.Note == null ? "" : fach.Note.Substring(0, Math.Min(fach.Note.Length, 1));

                    if (NameUntis.Contains("13"))
                    {
                        worksheet.Cells[zeileObenLinks + 3, spalteObenlinks + 2 + x] = fach.Note;
                    }

                    x++;
                }
                zeileObenLinks = zeileObenLinks + 12;
            }

            // Liste für Homepage erstellen

            var teilnehmer = new List <Lehrer>
            {
                (from l in lehrers where l.Kürzel == Global.KürzelSchulleiter select l).FirstOrDefault(),
                (from l in lehrers where l.Kürzel == this.Bereichsleitung select l).FirstOrDefault()
            };

            teilnehmer.AddRange(this.Klassenleitungen);

            string kla = "";

            foreach (var item in Klassenleitungen)
            {
                kla += item.Vorname + " " + item.Nachname + ",";
            }

            Global.Excel2Pdf(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + NameUntis, NameUntis);

            Console.Write("Nach PDF umwandeln ... ");
            worksheet.ExportAsFixedFormat(
                XlFixedFormatType.xlTypePDF,
                Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + NameUntis,
                XlFixedFormatQuality.xlQualityStandard,
                true,
                true,
                1,
                Math.Ceiling((Double)schuelers.Count / 4.0),  // Letzte zu druckende Worksheetseite
                false);

            // Passwort protect pdf

            PdfDocument document = PdfReader.Open(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + NameUntis + ".pdf");

            PdfSecuritySettings securitySettings = document.SecuritySettings;

            securitySettings.UserPassword  = "******";
            securitySettings.OwnerPassword = "******";
            securitySettings.PermitAccessibilityExtractContent = false;
            securitySettings.PermitAnnotations      = false;
            securitySettings.PermitAssembleDocument = false;
            securitySettings.PermitExtractContent   = false;
            securitySettings.PermitFormsFill        = true;
            securitySettings.PermitFullQualityPrint = false;
            securitySettings.PermitModifyDocument   = true;
            securitySettings.PermitPrint            = true;

            document.Save(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + NameUntis + "-Kennwort.pdf");

            var beginn = (from g in Global.ApaUhrzeiten where g.Key == this.NameUntis select g.Value).FirstOrDefault();

            Excelzeile excelzeile = new Excelzeile();

            excelzeile.ADatum  = Global.Zulassungskonferenz;
            excelzeile.BTag    = string.Format("{0:ddd}", beginn) + " " + beginn.ToString("dd.MM.yyyy");
            excelzeile.CVonBis = new List <DateTime>()
            {
                beginn, beginn.AddMinutes(10)
            };
            excelzeile.DBeschreibung = "Zulassungskonferenz - <a title='Nachricht für " + Global.GetAnrede((this).Klassenleitungen[0]) + "' href='mailto: " + (this).Klassenleitungen[0].Mail + " ?subject=Nachricht für " + Global.GetAnrede((this).Klassenleitungen[0]) + "'>" + "<b>" + (this).NameUntis + "</b></a> - " + this.Beschreibung;
            excelzeile.EJahrgang     = "";
            excelzeile.FBeginn       = beginn;
            excelzeile.GEnde         = beginn.AddMinutes(10);
            excelzeile.HRaum         = new Raums();
            excelzeile.HRaum.Add(new Raum(Global.RaumApa));
            excelzeile.IVerantwortlich = teilnehmer;
            excelzeile.JKategorie      = new List <string>()
            {
                "ZulassungskonferenzBC "
            };
            excelzeile.KHinweise  = "";
            excelzeile.LGeschützt = "";
            excelzeile.Subject    = "Zulassungskonferenz " + NameUntis;

            Global.MailSenden(
                this,
                (from l in lehrers where l.Kürzel == this.Bereichsleitung select l).FirstOrDefault(),
                "Notenliste " + NameUntis + " für " + kla,
                @"Guten Morgen " + kla + @"<br><br>
zur Vorbereitung auf die Zulassungskonferenz der Klasse " + NameUntis + @" am " + string.Format("{0:ddd}", beginn) + " " + beginn.ToString("dd.MM.yyyy") + @" im Raum " + Global.RaumApa + @" erhalten Sie die Liste der Noten Ihrer Klasse.
<br>
<br>
Es werden Ihnen in der Liste alle Fächer angezeigt, die seit dem Schuljahresbeginn unterrichtet wurden. Das schließt auch diejenigen Fächer ein, die z.B. in der zweiten Woche nach den Ferien ersatzlos gestrichen wurden. Als Klassenleitung wissen Sie, wo entsprechend keine Noten erforderlich sind und wo noch Noten fehlen.  
<br>
<br>
Fächer, die von mehreren Lehrkräften unterrichtet werden, werden auch mehrfach aufgeführt. Es kann wahlweise die Eintragung nur von einer Lehrkraft vorgenommen worden sein oder es muss bei allen Lehrkräften dieselbe Noten eingetragen worden sein.
<br><br>
Aus Datenschutzgründen kann die Liste natürlich nicht unverschlüsselt gesendet werden. Das Kennwort ist unsere leicht abgewandelte Schulnummer. Sie finden das Kennwort <a href='https://bk-borken.lms.schulon.org/course/view.php?id=415'>hier</a>. <br><br>Frohe Ostern!<br><br>Stefan Bäumer<br><br>PS: Weil diese Mail samt Inhalt automatisch erstellt und versandt wurde, ist der (angekündigte) Versand der Liste über den Messenger so nicht möglich.", new List <string>()
            {
                Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + NameUntis + "-Kennwort.pdf"
            });

            File.Delete(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + NameUntis + ".zip");
            //File.Delete(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + NameUntis + ".pdf");
            File.Delete(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + NameUntis + "-Kennwort.pdf");
            Console.WriteLine(" ok");
            return(excelzeile);
        }