using System; using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Windows; using System.Windows.Controls; using GCHR.Control; using GCHR.Control.Tasks; using GCHR.Model; using GCHR.View; namespace GCHR { public partial class Main { private TaskManager _aufgabenListe; private bool ImportdatenSichern { get { return (btnImportdatenSichern.IsChecked != null) ? (bool) btnImportdatenSichern.IsChecked : false; } } private bool Offlinemodus { get { return (btnOffline.IsChecked != null) ? (bool)btnOffline.IsChecked : false; } } private bool Exportprotokoll { get { return (btnExportprotokoll.IsChecked != null) ? (bool)btnExportprotokoll.IsChecked : false; } } private bool KeinJahresabschluss { get { return (btnKeinJahresabschluss.IsChecked != null) ? (bool)btnKeinJahresabschluss.IsChecked : false; } } public Main() { InitializeComponent(); } private void WindowLoaded(object sender, RoutedEventArgs e) { AktuellenMonatEinstellen(); Logger.Info(DateTime.Now + " GCHR gestartet."); } private void AktuellenMonatEinstellen() { jahrbox.Items.Clear(); for (var i = 2008; i <= DateTime.Today.Year; i++) { jahrbox.Items.Add(i); } var jahr = DateTime.Today.Year; var vormonat = DateTime.Today.Month - 1; if (vormonat < 1) { vormonat += 12; jahr--; } monatsbox.SelectedIndex = vormonat - 1; jahrbox.SelectedValue = jahr; } private void BtnStartenClick(object sender, RoutedEventArgs e) { btnStarten.IsEnabled = false; btnManuelleKonten.Visibility = Visibility.Hidden; AufgabenListeErstellen(); AmpelnRegistrieren(); _aufgabenListe.TryRunNextWorker(); } private string PeriodeAusAuswahl() { var monat = (monatsbox.SelectedIndex + 1).ToString().PadLeft(2, '0'); return jahrbox.Text + monat; } private void AufgabenListeErstellen() { _aufgabenListe = new TaskManager { Data = { ImportdatenSichern = ImportdatenSichern, Offlinemodus = Offlinemodus, Exportprotokoll = Exportprotokoll, KeinJahresabschluss = KeinJahresabschluss } }; _aufgabenListe.CreateTasks(Ablaufsteuerung, new Periode(PeriodeAusAuswahl(), KeinJahresabschluss)); } private void AmpelnRegistrieren() { var ampeln = new[] { ampel_KontenrahmenLaden, ampel_ÜbersetzungstabelleLaden, ampel_ÜbersetzungstabelleStatLaden, ampel_ManuelleLaden, ampel_SuSaKontenImport, ampel_StatKontenImport, ampel_SuSaKontenVerarbeitung, ampel_ManuelleKontenVerarbeitung, ampel_Export }; _aufgabenListe.RegisterAmpeln(ampeln); } private void Ablaufsteuerung(object s, RunWorkerCompletedEventArgs e) { var aktuellerWorker = (BackgroundWorker)s; var aktuelleAufgabe = _aufgabenListe.GetAufgabeByWorker(aktuellerWorker); if (e.Error != null) { btnStarten.IsEnabled = true; } else { if (aktuelleAufgabe.ID == 3 && ampel_ManuelleLaden.Done) { var mkb = new ManuelleKontenBearbeiten(_aufgabenListe.Data.GetManuelleKonten()); mkb.Closed += ManuelleKontenBearbeitenClosed; mkb.Show(); } if (aktuelleAufgabe.ID == 8) { btnStarten.IsEnabled = true; btnProtokoll.Visibility = Visibility.Visible; } } } private void ManuelleKontenBearbeitenClosed(object sender, EventArgs e) { var mkb = (ManuelleKontenBearbeiten)sender; _aufgabenListe.Data.SetManuelleKonten(mkb.ManuelleKonten); _aufgabenListe.Data.AufManuelleKontenWarten.Set(); } #region Events für Buttons auf der rechten Seite private void BtnBeendenClick(object sender, RoutedEventArgs e) { Close(); } private void BtnEinstellungenClick(object sender, RoutedEventArgs e) { new Einstellungen().ShowDialog(); } private void BtnManuelleKontenClick(object sender, RoutedEventArgs e) { return; } #endregion #region Events für Checkboxen private void BtnOfflineChecked(object sender, RoutedEventArgs e) { var chk = sender as CheckBox; btnImportdatenSichern.IsChecked = false; if (chk != null && chk.IsChecked != null) btnImportdatenSichern.IsEnabled = !(bool)chk.IsChecked; } private void BtnImportdatenSichernChecked(object sender, RoutedEventArgs e) { btnOffline.IsChecked = false; btnOffline.Visibility = Visibility.Hidden; } private void BtnImportdatenSichernUnchecked(object sender, RoutedEventArgs e) { btnOffline.Visibility = Visibility.Visible; } #endregion private void BtnProtokollClick(object sender, RoutedEventArgs e) { var dateiInfo = new FileInfo(Logger.ExportLog); var psi = new ProcessStartInfo("explorer.exe", dateiInfo.Directory.ToString()) { RedirectStandardOutput = true, WindowStyle = ProcessWindowStyle.Normal, UseShellExecute = false }; Process.Start(psi); } } }