public static void OnTimedEvent(object state) { var msg = "Starte Berechnungsdurchlauf"; Logger.Write(msg, "Service", 0, 0, TraceEventType.Information); var Optionen = (OptionenArbeitszeit)state; Optionen.ListeAnmeldungen.Clear(); try { DatenAusDatenbankLaden(Optionen); if (Optionen.ListeTerminals.Count == 0) { msg = "Keine Terminals in Datenbank eingetragen !"; Logger.Write(msg, "Service", 0, 0, TraceEventType.Error); return; } Optionen.ZaehlerZeitErhoehen(); // Einlesen Bediener in Terminal vorbereiten if (Optionen.UpdateBenutzerAusfuehren) { try { ProgDatafox.BedienerInDatafoxDatei(Optionen); } catch (Exception ex) { msg = $"Fehler beim erstellen der Benutzerdatei!\nGrund: {ex.Message}"; Logger.Write(msg, "Service", 0, 0, TraceEventType.Error); } } TerminaldatenEinUndAuslesen(Optionen); ArbeitszeitenInDatenbank(Optionen); msg = $"Fertig !\n{Optionen.ListeAnmeldungen.Count} Anmeldungen verarbeitet"; Logger.Write(msg, "Service", 0, 0, TraceEventType.Information); } catch (Exception f) { ExceptionPolicy.HandleException(f, "Policy"); } }
public static void TerminaldatenEinUndAuslesen(OptionenArbeitszeit Optionen) { string msg; foreach (var datTerminal in Optionen.ListeTerminals) { try { msg = $"Start Terminal: {datTerminal.Bezeichnung} / {datTerminal.eStandort.Bezeichnung}\n IP: {datTerminal.IpNummer} Port: {datTerminal.PortNummer}\n-------------------------------------------------"; Logger.Write(msg, "Service", 0, 0, TraceEventType.Information); var termAktuell = new OptionenTerminal(datTerminal.IpNummer, datTerminal.PortNummer, Optionen.Terminal_TimeOut); if (!Helper.IstPingOk(termAktuell.IpAdresse, out msg)) { Logger.Write(msg, "Service", 0, 0, TraceEventType.Warning); datTerminal.FehlerTerminalAusgeloest = true; continue; } List <string> DatensaetzeVomTerminal = null; try { var offen = ProgDatafox.DatafoxOeffnen(termAktuell); if (!offen) { msg = $"Verbindung zum Terminal konnte nicht geöffnet werden."; Logger.Write(msg, "Service", 0, 0, TraceEventType.Warning); datTerminal.FehlerTerminalAusgeloest = true; continue; } // Zeit mit Termimal abgleichem if (Optionen.DatumZeitAktualisieren) { if (ProgDatafox.ZeitEinstellen(termAktuell, DateTime.Now)) { Logger.Write("Zeit Terminal gestellt", "Service", 0, 0, TraceEventType.Information); } else { Logger.Write("Zeit konnte nicht gestellt werden", "Service", 0, 0, TraceEventType.Warning); } } // Kontrolle, ob Benutzer im Terminal geändert werden müssen if (Optionen.UpdateBenutzerAusfuehren && datTerminal.UpdateTerminal) { datTerminal.TerminaldatenWurdenAktualisiert = true; ProgDatafox.ListenInTerminalSchreiben(termAktuell, Optionen.PfadUpdateBediener); } // Anmeldungen aus Terminal auslesen DatensaetzeVomTerminal = ProgDatafox.ListeAusTerminalAuslesen(termAktuell); if (DatensaetzeVomTerminal.Count == 0) { msg = "Keine Datensätze vorhanden."; Logger.Write(msg, "Service", 0, 0, TraceEventType.Verbose); } else { msg = $"Es wurden {DatensaetzeVomTerminal.Count} Arbeitszeiten von Terminal übertragen."; Logger.Write(msg, "Service", 0, 0, TraceEventType.Information); } } catch (Exception f) { msg = "Fehler bei Kommunikation mit Terminal"; datTerminal.FehlerTerminalAusgeloest = true; throw new MyException(msg, f); } finally { msg = "Verbindung Terminal schliesen."; Logger.Write(msg, "Service", 0, 0, TraceEventType.Information); ProgDatafox.DatafoxSchliessen(termAktuell); } if (DatensaetzeVomTerminal.Count > 0) { try { var anmeldungen = ProgDatafox.KonvertDatafoxImport(DatensaetzeVomTerminal, datTerminal.fStandort, "MITA_"); var lsAnmeldung = anmeldungen.Select(s => $" {s.MatchCode} {s.GehGrund} - {s.Datum} / {s.Vorgang}").ToArray(); Logger.Write($"Ausgelesene Anmeldungen\n{Helper.ListeInString(lsAnmeldung)}", "Service", 0, 0, TraceEventType.Information); Optionen.ListeAnmeldungen.AddRange(anmeldungen); } catch (Exception f) { msg = "Fehler beim Konvertieren der Daten."; throw new Exception(msg, f); } } } catch (Exception f) { ExceptionPolicy.HandleException(f, "Policy"); } } }