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); } } }
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); }
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); } }
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), '.'); } }
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(); } } }
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); }