Esempio n. 1
0
        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");
            }
        }
Esempio n. 2
0
        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");
                }
            }
        }