using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Collections.Specialized; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; //using Xceed.Wpf.Toolkit; namespace PEP_Tool { /// /// Interaktionslogik für Zugzuweisung.xaml /// public partial class Zugzuweisung : Window, INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private DataTable mACombo = new DataTable(); public DataTable MACombo { get { return mACombo; } set { mACombo = value; OnPropertyChanged(); } } private List mAView = new List(); public List MAView { get { return mAView; } set { mAView = value; OnPropertyChanged(); } } DataTable schaltList = new DataTable("SchaltList"); DataTable schaltListGewerk = new DataTable("SchaltListGewerk"); DataTable schaltListTag = new DataTable("SchaltListTag"); //public sWork work { get; set; } private List sworks = new List(); public List sWorks { get { return sworks; } set { sworks = value; OnPropertyChanged(); } } int lastSelectedIndex = 0; public Zugzuweisung(Button sender = null) { this.DataContext = this; InitializeComponent(); if (sender != null) ZuweisungFromList(sender); else ZuweisungFromMenu(); dGSchaltList.DataContext = schaltList; dGSchaltListGewerk.DataContext = schaltListGewerk; dGSchaltListTag.DataContext = schaltListTag; sWorks = Reader.ReadsWork(); } private void ZuweisungFromMenu() { lbl1.Visibility = Visibility.Visible; //lbl2.Visibility = Visibility.Collapsed; //btnAddMitarbeiter.Visibility = Visibility.Visible; dPMAFilter.Visibility = Visibility.Visible; //cBGewerke.Visibility = Visibility.Visible; dPSchaltVon.ValueChanged += DPSchaltVon_ValueChanged; dPSchaltBis.ValueChanged += DPSchaltBis_ValueChanged; } object sending; object buttonDatum; private async void ZuweisungFromList(Button sender) { dPSchaltVon.ValueChanged -= DPSchaltVon_ValueChanged; dPSchaltBis.ValueChanged -= DPSchaltBis_ValueChanged; lbl1.Visibility = Visibility.Visible; //lbl2.Visibility = Visibility.Collapsed; //btnAddMitarbeiter.Visibility = Visibility.Visible; dPMAFilter.Visibility = Visibility.Visible; //cBGewerke.Visibility = Visibility.Visible; dPMAFilter.SelectedDate = ((DateTime)((sender.DataContext as System.Data.DataRowView).Row.ItemArray[4])); #region old //sending = sender; //dPMAFilter.Visibility = Visibility.Collapsed; ////cBGewerke.Visibility = Visibility.Collapsed; ////btnAddMitarbeiter.Visibility = Visibility.Collapsed; //lbl1.Visibility = Visibility.Visible; //lbl2.Visibility = Visibility.Visible; //var x = (sender); //var y = x.DataContext as System.Data.DataRowView; //var z = y.Row.ItemArray[0]; //buttonDatum = y.Row.ItemArray[4]; //var schicht = y.Row.ItemArray[8].ToString().Substring(0, 2); //lblDate.Text = Convert.ToDateTime(buttonDatum).ToShortDateString(); //switch (schicht) //{ // case "MF": // cBSchicht.SelectedIndex = 0; // break; // case "MT": // cBSchicht.SelectedIndex = 0; // break; // case "MS": // cBSchicht.SelectedIndex = 1; // break; // case "MN": // cBSchicht.SelectedIndex = 2; // break; // default: // cBSchicht.SelectedIndex = 0; // break; //} //if (schicht == "MF" || schicht == "MT") // FillComboAndView(Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd"), "$$", dPSchaltVon.Value.Value.ToString("yyyy-MM-dd HH:mm:ss"), dPSchaltBis.Value.Value.ToString("yyyy-MM-dd HH:mm:ss")); //else // FillComboAndView(Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd"), schicht, dPSchaltVon.Value.Value.ToString("yyyy-MM-dd HH:mm:ss"), dPSchaltBis.Value.Value.ToString("yyyy-MM-dd HH:mm:ss")); ////var s = $"SELECT Abteilung, MIN(DISTINCT (COUNT(*) - IFNULL((SELECT SUM(AnzahlMA) from pep_tool.schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung),0) - IFNULL((SELECT count(*) from mitarbeiter_change join mitarbeiter_static on PersNr = mitarbeiter_static_PersNr where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND Zuweisung != '' AND m.Abteilung = Abteilung),0)),COUNT(*),IFNULL((SELECT SUM(AnzahlMA) from pep_tool.schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung),0) + IFNULL((SELECT count(*) from mitarbeiter_change join mitarbeiter_static on PersNr = mitarbeiter_static_PersNr where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND Zuweisung != '' AND m.Abteilung = Abteilung),0) From pep_tool.mitarbeiter_static `m` left join pep_tool.mitarbeiter_change `c` ON m.PersNr = c.mitarbeiter_static_PersNr WHERE (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND c.Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' group by m.Abteilung order by Abteilung"; ////if (schicht == "MF" || schicht == "MT") //// MACombo = await SQL.ReadSQL($"SELECT Abteilung, MIN(DISTINCT (COUNT(*) - IFNULL((SELECT SUM(AnzahlMA) from pep_tool.schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung),0) - IFNULL((SELECT count(*) from mitarbeiter_change join mitarbeiter_static on PersNr = mitarbeiter_static_PersNr where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND Zuweisung != '' AND m.Abteilung = Abteilung),0)),COUNT(*),IFNULL((SELECT SUM(AnzahlMA) from pep_tool.schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung),0) + IFNULL((SELECT count(*) from mitarbeiter_change join mitarbeiter_static on PersNr = mitarbeiter_static_PersNr where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND Zuweisung != '' AND m.Abteilung = Abteilung),0) From pep_tool.mitarbeiter_static `m` left join pep_tool.mitarbeiter_change `c` ON m.PersNr = c.mitarbeiter_static_PersNr WHERE (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND c.Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' group by m.Abteilung order by Abteilung"); //////MACombo = await SQL.ReadSQL($"SELECT Abteilung, COUNT(*) - CASE WHEN (SELECT SUM(AnzahlMA) from pep_tool.schaltung s where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung) IS NULL THEN 0 ELSE NULL END,COUNT(*),CASE WHEN (SELECT SUM(AnzahlMA) from pep_tool.schaltung s where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung) IS NULL THEN 0 ELSE NULL END From pep_too.mitarbeiter_static m left join pep_tool.mitarbeiter_change [c] ON m.PersNr = c.mitarbeiter_static_PersNr WHERE (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND c.Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' group by m.Abteilung order by Abteilung"); ////else //// MACombo = await SQL.ReadSQL($"SELECT Abteilung, MIN(DISTINCT (COUNT(*) - IFNULL((SELECT SUM(AnzahlMA) from pep_tool.schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND s.Abteilung = m.Abteilung),0) - IFNULL((SELECT count(*) from mitarbeiter_change join mitarbeiter_static on PersNr = mitarbeiter_static_PersNr where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND Zuweisung != '' AND m.Abteilung = Abteilung),0)),COUNT(*),IFNULL((SELECT SUM(AnzahlMA) from pep_tool.schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND s.Abteilung = m.Abteilung),0) + IFNULL((SELECT count(*) from mitarbeiter_change join mitarbeiter_static on PersNr = mitarbeiter_static_PersNr where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND Zuweisung != '' AND m.Abteilung = Abteilung),0) From pep_tool.mitarbeiter_static `m` left join pep_tool.mitarbeiter_change `c` ON m.PersNr = c.mitarbeiter_static_PersNr WHERE c.Arbeitsmuster like '%{schicht}%' AND c.Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' group by m.Abteilung order by Abteilung"); //////MACombo = await SQL.ReadSQL($"SELECT Abteilung, COUNT(*) - CASE WHEN (SELECT SUM(AnzahlMA) from pep_tool.schaltung s where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND s.Abteilung = m.Abteilung) IS NULL THEN 0 ELSE NULL END,COUNT(*),CASE WHEN (SELECT SUM(AnzahlMA) from pep_tool.schaltung s where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND s.Abteilung = m.Abteilung) IS NULL THEN 0 ELSE NULL END From pep_too.mitarbeiter_static m left join pep_tool.mitarbeiter_change [c] ON m.PersNr = c.mitarbeiter_static_PersNr WHERE c.Arbeitsmuster like '%{schicht}%' AND c.Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' group by m.Abteilung order by Abteilung"); ////schaltList = await SQL.ReadSQL($"SELECT Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM pep_tool.schaltung s WHERE ZugName = '{tbName.Text}'", schaltList); ////schaltListTag = await SQL.ReadSQL($"SELECT Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM pep_tool.schaltung s WHERE Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}'", schaltListTag); //schaltListTag = await SQL.ReadSQL($"SELECT Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM pep_tool.schaltung `s` WHERE Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}'", schaltListTag); ////MAView = Helper.DataTableToGewerk(MACombo); //dPSchaltVon.ValueChanged += DPSchaltVon_ValueChanged; //dPSchaltBis.ValueChanged += DPSchaltBis_ValueChanged; #endregion } bool resultChanged = false; private void BtnOK_Click(object sender, RoutedEventArgs e) { this.Close(); } private async void BtnAdd_Click(object sender, RoutedEventArgs e) { DateTime date = DateTime.Now; if (dPSchaltVon.Value.HasValue) { date = dPSchaltVon.Value.Value; if (dPSchaltVon.Value.Value >= dPSchaltBis.Value.Value) { MessageBox.Show("Startzeit größer als Endzeit", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); return; } } else { MessageBox.Show("Kein gültiges Datum gewählt", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); return; } li.Visibility = Visibility.Visible; await Task.Delay(50); //await SQL.WriteSQL($"INSERT INTO pep_tool.schaltung (ZugName,Datum,Start,Ende,Zustand,Grund,AnzahlMA,Abteilung) VALUES ('{tbName.Text}','{date.ToString("yyyy-MM-dd")}','{dPSchaltVon.Text}','{dPSchaltBis.Text}','{cbSchaltzustand.Text}','{tbGrund.Text}','{cBAnzahlMA.SelectedValue.ToString()}','{(((Gewerk)((ItemCollection)(dGMAView.Items))[dGMAView.SelectedIndex]).Abteilung)}')"); //schaltList = await SQL.ReadSQL($"Select Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM pep_tool.schaltung s WHERE ZugName = '{tbName.Text}'", schaltList); //schaltListGewerk = await SQL.ReadSQL($"SELECT Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM pep_tool.schaltung s WHERE Abteilung = '{(((Gewerk)((ItemCollection)(dGMAView.Items))[dGMAView.SelectedIndex]).Abteilung)}' AND Start like '{Convert.ToDateTime(buttonDatum).ToString("dd.MM.")}%'", schaltListGewerk); //schaltListTag = await SQL.ReadSQL($"SELECT Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM pep_tool.schaltung s WHERE Start like '{Convert.ToDateTime(buttonDatum).ToString("dd.MM.")}%'", schaltListTag); if (cBAnzahlMA.SelectedValue != null && cBAnzahlMA.SelectedIndex != -1 && cBAnzahlMA.SelectedValue.ToString() != "Keine MA verfügbar") await SQL.WriteSQL($"INSERT INTO pep_tool.schaltung (ZugName,Datum,Start,Ende,Zustand,Grund,AnzahlMA,Abteilung,StartEx,EndEx) VALUES ('{tbName.Text}','{date.ToString("yyyy-MM-dd")}','{dPSchaltVon.Text}','{dPSchaltBis.Text}','{cbSchaltzustand.Text}','{tbGrund.Text}','{cBAnzahlMA.SelectedValue.ToString()}','{(((Gewerk)((ItemCollection)(dGMAView.Items))[lastSelectedIndex]).Abteilung)}','{dPSchaltVon.Value.Value.ToString("yyyy-MM-dd HH:mm")}','{dPSchaltBis.Value.Value.ToString("yyyy-MM-dd HH:mm")}')"); else MessageBox.Show(this, "Anzahl Mitarbeiter auswählen!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Warning); schaltList = await SQL.ReadSQL($"Select Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM pep_tool.schaltung `s` WHERE ZugName = '{tbName.Text}'", schaltList); schaltListGewerk = await SQL.ReadSQL($"SELECT Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM pep_tool.schaltung `s` WHERE Abteilung = '{(((Gewerk)((ItemCollection)(dGMAView.Items))[lastSelectedIndex]).Abteilung)}' AND Start like '{Convert.ToDateTime(buttonDatum).ToString("dd.MM.")}%'", schaltListGewerk); schaltListTag = await SQL.ReadSQL($"SELECT Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM pep_tool.schaltung `s` WHERE Start like '{Convert.ToDateTime(buttonDatum).ToString("dd.MM.")}%'", schaltListTag); var schicht = ""; switch (cBSchicht.SelectedIndex) { case 0: schicht = "MF"; break; case 1: schicht = "MS"; break; case 2: schicht = "MN"; break; default: schicht = "MF"; break; } if (schicht == "MF" || schicht == "MT") FillComboAndView(Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd"), "$$", dPSchaltVon.Value.Value.ToString("yyyy-MM-dd HH:mm:ss"), dPSchaltBis.Value.Value.ToString("yyyy-MM-dd HH:mm:ss")); else FillComboAndView(Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd"), schicht, dPSchaltVon.Value.Value.ToString("yyyy-MM-dd HH:mm:ss"), dPSchaltBis.Value.Value.ToString("yyyy-MM-dd HH:mm:ss")); //if (schicht == "MF" || schicht == "MT") // MACombo = await SQL.ReadSQL($"SELECT Abteilung, COUNT(*) - IFNULL((SELECT SUM(AnzahlMA) from pep_tool.schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung),0) - IFNULL((SELECT count(*) from mitarbeiter_change join mitarbeiter_static on PersNr = mitarbeiter_static_PersNr where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND Zuweisung != '' AND m.Abteilung = Abteilung),0),COUNT(*),IFNULL((SELECT SUM(AnzahlMA) from pep_tool.schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung),0) + IFNULL((SELECT count(*) from mitarbeiter_change join mitarbeiter_static on PersNr = mitarbeiter_static_PersNr where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND Zuweisung != '' AND m.Abteilung = Abteilung),0) From pep_tool.mitarbeiter_static `m` left join pep_tool.mitarbeiter_change `c` ON m.PersNr = c.mitarbeiter_static_PersNr WHERE (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND c.Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' group by m.Abteilung order by Abteilung"); ////MACombo = await SQL.ReadSQL($"SELECT Abteilung, COUNT(*) - CASE WHEN (SELECT SUM(AnzahlMA) from pep_tool.schaltung s where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung) IS NULL THEN 0 ELSE NULL END,COUNT(*),CASE WHEN (SELECT SUM(AnzahlMA) from pep_tool.schaltung s where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung) IS NULL THEN 0 ELSE NULL END From pep_too.mitarbeiter_static m left join pep_tool.mitarbeiter_change [c] ON m.PersNr = c.mitarbeiter_static_PersNr WHERE (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND c.Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' group by m.Abteilung order by Abteilung"); //else // MACombo = await SQL.ReadSQL($"SELECT Abteilung, COUNT(*) - IFNULL((SELECT SUM(AnzahlMA) from pep_tool.schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND s.Abteilung = m.Abteilung),0) - IFNULL((SELECT count(*) from mitarbeiter_change join mitarbeiter_static on PersNr = mitarbeiter_static_PersNr where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND Zuweisung != '' AND m.Abteilung = Abteilung),0),COUNT(*),IFNULL((SELECT SUM(AnzahlMA) from pep_tool.schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND s.Abteilung = m.Abteilung),0) + IFNULL((SELECT count(*) from mitarbeiter_change join mitarbeiter_static on PersNr = mitarbeiter_static_PersNr where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND Zuweisung != '' AND m.Abteilung = Abteilung),0) From pep_tool.mitarbeiter_static `m` left join pep_tool.mitarbeiter_change `c` ON m.PersNr = c.mitarbeiter_static_PersNr WHERE c.Arbeitsmuster like '%{schicht}%' AND c.Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' group by m.Abteilung order by Abteilung"); ////MACombo = await SQL.ReadSQL($"SELECT Abteilung, COUNT(*) - CASE WHEN (SELECT SUM(AnzahlMA) from pep_tool.schaltung s where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND s.Abteilung = m.Abteilung) IS NULL THEN 0 ELSE NULL END,COUNT(*),CASE WHEN (SELECT SUM(AnzahlMA) from pep_tool.schaltung s where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND s.Abteilung = m.Abteilung) IS NULL THEN 0 ELSE NULL END From pep_too.mitarbeiter_static m left join pep_tool.mitarbeiter_change [c] ON m.PersNr = c.mitarbeiter_static_PersNr WHERE c.Arbeitsmuster like '%{schicht}%' AND c.Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' group by m.Abteilung order by Abteilung"); //MAView = Helper.DataTableToGewerk(MACombo); dPSchaltVon.ValueChanged -= DPSchaltVon_ValueChanged; dPSchaltBis.ValueChanged -= DPSchaltBis_ValueChanged; dPMAFilter.SelectedDateChanged -= DPMAFilter_SelectedDateChanged; cBSchicht.SelectionChanged -= CBSchicht_SelectionChanged; tbName.TextChanged -= TbName_TextChanged; dGMAView.SelectionChanged -= DGMAView_SelectionChanged; cBsWork.SelectionChanged -= cBsWork_SelectionChanged; tbGrund.TextChanged -= tbGrund_TextChanged; cbSchaltzustand.SelectionChanged -= cbSchaltzustand_SelectionChanged; cBAnzahlMA.SelectionChanged -= cBAnzahlMA_SelectionChanged; li.Visibility = Visibility.Collapsed; dPSchaltVon.Value = null; dPSchaltBis.Value = null; cBSchicht.SelectedIndex = -1; cbSchaltzustand.SelectedIndex = -1; cBAnzahlMA.SelectedIndex = -1; cBsWork.SelectedIndex = -1; dPMAFilter.SelectedDate = null; tbName.Text = "Tz "; tbGrund.Text = ""; tbName.IsEnabled = false; dPSchaltBis.IsEnabled = false; dPSchaltVon.IsEnabled = false; dGMAView.IsEnabled = false; cbSchaltzustand.IsEnabled = false; cBsWork.IsEnabled = false; tbGrund.IsEnabled = false; cbSchaltzustand.IsEnabled = false; cBAnzahlMA.IsEnabled = false; btnAdd.IsEnabled = false; arrow6MAView.Visibility = Visibility.Collapsed; arrow10MA.Visibility = Visibility.Collapsed; arrow11Add.Visibility = Visibility.Collapsed; arrow1Date.Visibility = Visibility.Visible; dPSchaltVon.ValueChanged += DPSchaltVon_ValueChanged; dPSchaltBis.ValueChanged += DPSchaltBis_ValueChanged; dPMAFilter.SelectedDateChanged += DPMAFilter_SelectedDateChanged; cBSchicht.SelectionChanged += CBSchicht_SelectionChanged; tbName.TextChanged += TbName_TextChanged; dGMAView.SelectionChanged += DGMAView_SelectionChanged; cBsWork.SelectionChanged += cBsWork_SelectionChanged; tbGrund.TextChanged += tbGrund_TextChanged; cbSchaltzustand.SelectionChanged += cbSchaltzustand_SelectionChanged; cBAnzahlMA.SelectionChanged += cBAnzahlMA_SelectionChanged; } private void DPMAFilter_SelectedDateChanged(object sender, SelectionChangedEventArgs e) { buttonDatum = dPMAFilter.SelectedDate; lblDate.Text = Convert.ToDateTime(buttonDatum).ToShortDateString(); GetDates(); if (buttonDatum.ToString() != "") { cBSchicht.IsEnabled = true; arrow2Schicht.Visibility = Visibility.Visible; arrow1Date.Visibility = Visibility.Collapsed; } else { cBSchicht.IsEnabled = false; arrow2Schicht.Visibility = Visibility.Collapsed; arrow1Date.Visibility = Visibility.Visible; } } private async void DGSchaltList_PreviewKeyDown(object sender, KeyEventArgs e) { var dg = sender as DataGrid; var row = dg.SelectedItem as DataRowView; var arr = row.Row.ItemArray; if (e.Key == Key.Delete) { li.Visibility = Visibility.Visible; await Task.Delay(50); await SQL.WriteSQL($"UPDATE pep_tool.mitarbeiter_change `m` left join pep_tool.schaltung `s` ON m.mitarbeiter_static_PersNr = s.mitarbeiter_static_PersNr AND s.Datum = m.Datum SET ZugNameB = (select s.ZugName WHERE s.mitarbeiter_static_PersNr = '{arr[8]}' AND s.Start > DATE_FORMAT(NOW(), '%d.%m. %H:%i')) WHERE (s.ZugName = '{arr[1]}' AND s.Datum = '{Convert.ToDateTime(arr[3]).ToString("yyyy-MM-dd")}' AND s.Start = '{arr[4]}' AND s.Ende = '{arr[5]}' AND s.Zustand = '{arr[6]}' AND s.Grund = '{arr[7]}')"); await SQL.WriteSQL($"DELETE FROM pep_tool.schaltung WHERE (Abteilung = '{arr[0]}' AND ZugName = '{arr[2]}' AND Datum = '{Convert.ToDateTime(arr[3].ToString().Split(' ')[0] + "." + DateTime.Now.Year).ToString("yyyy-MM-dd")}' AND Start = '{arr[3]}' AND Ende = '{arr[4]}' AND Zustand = '{arr[5]}' AND Grund = '{arr[6]}')"); //await SQL.WriteSQL($"DELETE FROM [pep_tool.schaltung] WHERE ([Abteilung] = '{arr[0]}' AND [ZugName] = '{arr[2]}' AND [Datum] = '{Convert.ToDateTime(arr[3].ToString().Split(' ')[0] + "." + DateTime.Now.Year).ToString("yyyy-MM-dd")}' AND [Start] = '{arr[3]}' AND [Ende] = '{arr[4]}' AND [Zustand] = '{arr[5]}' AND [Grund] = '{arr[6]}')"); //schaltList = await SQL.ReadSQL($"Select Name,ZugName,Start,Ende,Zustand,Grund FROM pep_tool.mitarbeiter_static m left join pep_tool.schaltung s ON m.PersNr = s.mitarbeiter_static_PersNr WHERE {pers}", schaltList); li.Visibility = Visibility.Collapsed; } } private async void DGMAView_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (dGMAView.SelectedIndex != -1) { lastSelectedIndex = dGMAView.SelectedIndex; var i = Convert.ToInt16((((Gewerk)((ItemCollection)(dGMAView.Items))[dGMAView.SelectedIndex]).MAVerfuegbar)); //var a = new int[i]; var a = new List(); if (i <= 0) { a.Clear(); a.Add(0); } else { for (var j = 1; j != i + 1; ++j) { //a[j - 1] = j; a.Add(j); } } if (a.Count == 1 && a[0] == 0) { cBAnzahlMA.ItemsSource = new string[1] { "Keine MA verfügbar" }; } else { cBAnzahlMA.ItemsSource = a; } lblPlanungGewerk.Text = $"Planung für Gewerk '{(((Gewerk)((ItemCollection)(dGMAView.Items))[dGMAView.SelectedIndex]).Abteilung)}' am {Convert.ToDateTime(buttonDatum).ToShortDateString()}:"; schaltListGewerk = await SQL.ReadSQL($"SELECT Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM pep_tool.schaltung `s` WHERE Abteilung = '{(((Gewerk)((ItemCollection)(dGMAView.Items))[dGMAView.SelectedIndex]).Abteilung)}' AND Start like '{Convert.ToDateTime(buttonDatum).ToString("dd.MM.")}%'", schaltListGewerk); cbSchaltzustand.IsEnabled = true; cBsWork.IsEnabled = true; tbGrund.IsEnabled = true; cbSchaltzustand.IsEnabled = true; //cBAnzahlMA.IsEnabled = true; //btnAdd.IsEnabled = true; arrow6MAView.Visibility = Visibility.Collapsed; arrow7sWork.Visibility = Visibility.Visible; arrow8Grund.Visibility = Visibility.Visible; arrow9Schaltzustand.Visibility = Visibility.Visible; //arrow10MA.Visibility = Visibility.Visible; } else { cbSchaltzustand.IsEnabled = false; cBsWork.IsEnabled = false; tbGrund.IsEnabled = false; cbSchaltzustand.IsEnabled = false; //cBAnzahlMA.IsEnabled = false; btnAdd.IsEnabled = false; arrow6MAView.Visibility = Visibility.Visible; arrow7sWork.Visibility = Visibility.Collapsed; arrow8Grund.Visibility = Visibility.Collapsed; arrow9Schaltzustand.Visibility = Visibility.Collapsed; //arrow10MA.Visibility = Visibility.Collapsed; } } private async void TbName_TextChanged(object sender, TextChangedEventArgs e) { if (tbName.Text != "" && char.IsDigit(tbName.Text[0])) { tbName.Text = "Tz " + tbName.Text; tbName.CaretIndex = tbName.Text.Length; } if (System.Text.RegularExpressions.Regex.IsMatch(tbName.Text, @".{1,3}\d\d\d+")) { schaltList = await SQL.ReadSQL($"Select Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM pep_tool.schaltung `s` WHERE ZugName = '{tbName.Text}'", schaltList); lblPlanungTz.Text = $"Planung für Triebzug '{tbName.Text}':"; dPSchaltVon.IsEnabled = true; arrow4Von.Visibility = Visibility.Visible; arrow3Name.Visibility = Visibility.Collapsed; } else { schaltList.Clear(); lblPlanungTz.Text = $"Planung für Triebzug:"; dPSchaltVon.IsEnabled = false; arrow4Von.Visibility = Visibility.Collapsed; if(tbName.Text != "Tz ") arrow3Name.Visibility = Visibility.Visible; } } private void CBAnzahlMA_DropDownOpened(object sender, EventArgs e) { if (cBAnzahlMA.Items.Count == 0) cBAnzahlMA.ItemsSource = new string[1] { "Bitte zuerst Gewerk wählen" }; } private async void CBSchicht_SelectionChanged(object sender, SelectionChangedEventArgs e) { GetDates(); if ((sender as ComboBox).SelectedIndex != -1) { tbName.IsEnabled = true; arrow3Name.Visibility = Visibility.Visible; arrow2Schicht.Visibility = Visibility.Collapsed; } else { tbName.IsEnabled = false; arrow3Name.Visibility = Visibility.Collapsed; arrow2Schicht.Visibility = Visibility.Visible; } dPSchaltVon.ValueChanged += DPSchaltVon_ValueChanged; dPSchaltBis.ValueChanged += DPSchaltBis_ValueChanged; } private async void GetDates () { dPSchaltVon.ValueChanged -= DPSchaltVon_ValueChanged; dPSchaltBis.ValueChanged -= DPSchaltBis_ValueChanged; var schicht = "";//((DataRowView)((Button)sending).DataContext).Row.ItemArray[8].ToString().Substring(0, 2); switch (cBSchicht.SelectedIndex) { case 0: schicht = "MF"; break; case 1: schicht = "MS"; break; case 2: schicht = "MN"; break; default: schicht = "MF"; break; } DataTable dt = null; if (schicht == "MF" || schicht == "MT") dt = await SQL.ReadSQL($"SELECT Min(str_to_date(REPLACE(Beginn, '*', ':'), '%H:%i')), max(str_to_date(REPLACE(Gehen, '*', ':'), '%H:%i')) from pep_tool.mitarbeiter_change where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (Arbeitsmuster like '%MF%' OR Arbeitsmuster like '%MT%')"); else dt = await SQL.ReadSQL($"SELECT Min(str_to_date(REPLACE(Beginn, '*', ':'), '%H:%i')), max(str_to_date(REPLACE(Gehen, '*', ':'), '%H:%i')) from pep_tool.mitarbeiter_change where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND Arbeitsmuster like '%{schicht}%'"); var from = dt.Rows[0].ItemArray[0].ToString(); var until = dt.Rows[0].ItemArray[1].ToString(); dPSchaltVon.Value = null; dPSchaltBis.Value = null; dPSchaltVon.Minimum = null; dPSchaltBis.Maximum = DateTime.MaxValue; if (!(string.IsNullOrEmpty(from) || string.IsNullOrEmpty(until))) { if (TimeSpan.Parse(from) > TimeSpan.Parse(until)) { dPSchaltVon.Minimum = Convert.ToDateTime(buttonDatum) + TimeSpan.Parse(from); dPSchaltBis.Maximum = Convert.ToDateTime(buttonDatum) + TimeSpan.FromDays(1) + TimeSpan.Parse(until); } else { dPSchaltVon.Minimum = Convert.ToDateTime(buttonDatum) + TimeSpan.Parse(from); dPSchaltBis.Maximum = Convert.ToDateTime(buttonDatum) + TimeSpan.Parse(until); } } else { dPSchaltVon.Minimum = Convert.ToDateTime(buttonDatum); dPSchaltBis.Maximum = Convert.ToDateTime(buttonDatum) + TimeSpan.FromDays(2); } dPSchaltVon.Value = dPSchaltVon.Minimum.Value; dPSchaltBis.Value = dPSchaltBis.Maximum.Value; if (schicht == "MF" || schicht == "MT") FillComboAndView(Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd"), "$$", dPSchaltVon.Value.Value.ToString("yyyy-MM-dd HH:mm:ss"), dPSchaltBis.Value.Value.ToString("yyyy-MM-dd HH:mm:ss")); else FillComboAndView(Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd"), schicht, dPSchaltVon.Value.Value.ToString("yyyy-MM-dd HH:mm:ss"), dPSchaltBis.Value.Value.ToString("yyyy-MM-dd HH:mm:ss")); schaltListTag = await SQL.ReadSQL($"SELECT Abteilung,AnzahlMA,ZugName,Start,Ende,Zustand,Grund FROM pep_tool.schaltung `s` WHERE Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}'", schaltListTag); MAView = Helper.DataTableToGewerk(MACombo); //dPSchaltVon.ValueChanged += DPSchaltVon_ValueChanged; //dPSchaltBis.ValueChanged += DPSchaltBis_ValueChanged; } private void OnPropertyChanged([CallerMemberName] string propertyName = null) { System.Diagnostics.Debug.WriteLine("PropertyChanged " + propertyName); PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } private async void DPSchaltVon_ValueChanged(object sender, RoutedPropertyChangedEventArgs e) { if (dPSchaltVon.Value.HasValue && dPSchaltBis.Value.HasValue) { var schicht = "";//((DataRowView)((Button)sending).DataContext).Row.ItemArray[8].ToString().Substring(0, 2); switch (cBSchicht.SelectedIndex) { case 0: schicht = "MF"; break; case 1: schicht = "MS"; break; case 2: schicht = "MN"; break; default: schicht = "MF"; break; } if (schicht == "MF" || schicht == "MT") FillComboAndView(Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd"), "$$", dPSchaltVon.Value.Value.ToString("yyyy-MM-dd HH:mm:ss"), dPSchaltBis.Value.Value.ToString("yyyy-MM-dd HH:mm:ss")); else FillComboAndView(Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd"), schicht, dPSchaltVon.Value.Value.ToString("yyyy-MM-dd HH:mm:ss"), dPSchaltBis.Value.Value.ToString("yyyy-MM-dd HH:mm:ss")); //if (schicht == "MF" || schicht == "MT") // MACombo = await SQL.ReadSQL($"SELECT Abteilung, COUNT(*) - IFNULL((SELECT SUM(AnzahlMA) from pep_tool.schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung),0) - IFNULL((SELECT count(*) from mitarbeiter_change join mitarbeiter_static on PersNr = mitarbeiter_static_PersNr where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND Zuweisung != '' AND m.Abteilung = Abteilung),0),COUNT(*),IFNULL((SELECT SUM(AnzahlMA) from pep_tool.schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung),0) + IFNULL((SELECT count(*) from mitarbeiter_change join mitarbeiter_static on PersNr = mitarbeiter_static_PersNr where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND Zuweisung != '' AND m.Abteilung = Abteilung),0) From pep_tool.mitarbeiter_static `m` left join pep_tool.mitarbeiter_change `c` ON m.PersNr = c.mitarbeiter_static_PersNr WHERE (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND c.Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' group by m.Abteilung order by Abteilung"); ////MACombo = await SQL.ReadSQL($"SELECT Abteilung, COUNT(*) - CASE WHEN (SELECT SUM(AnzahlMA) from pep_tool.schaltung s where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung) IS NULL THEN 0 ELSE NULL END,COUNT(*),CASE WHEN (SELECT SUM(AnzahlMA) from pep_tool.schaltung s where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung) IS NULL THEN 0 ELSE NULL END From pep_too.mitarbeiter_static m left join pep_tool.mitarbeiter_change [c] ON m.PersNr = c.mitarbeiter_static_PersNr WHERE (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND c.Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' group by m.Abteilung order by Abteilung"); //else // MACombo = await SQL.ReadSQL($"SELECT Abteilung, COUNT(*) - IFNULL((SELECT SUM(AnzahlMA) from pep_tool.schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND s.Abteilung = m.Abteilung),0) - IFNULL((SELECT count(*) from mitarbeiter_change join mitarbeiter_static on PersNr = mitarbeiter_static_PersNr where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND Zuweisung != '' AND m.Abteilung = Abteilung),0),COUNT(*),IFNULL((SELECT SUM(AnzahlMA) from pep_tool.schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND s.Abteilung = m.Abteilung),0) + IFNULL((SELECT count(*) from mitarbeiter_change join mitarbeiter_static on PersNr = mitarbeiter_static_PersNr where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND Zuweisung != '' AND m.Abteilung = Abteilung),0) From pep_tool.mitarbeiter_static `m` left join pep_tool.mitarbeiter_change `c` ON m.PersNr = c.mitarbeiter_static_PersNr WHERE c.Arbeitsmuster like '%{schicht}%' AND c.Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' group by m.Abteilung order by Abteilung"); ////MACombo = await SQL.ReadSQL($"SELECT Abteilung, COUNT(*) - CASE WHEN (SELECT SUM(AnzahlMA) from pep_tool.schaltung s where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND s.Abteilung = m.Abteilung) IS NULL THEN 0 ELSE NULL END,COUNT(*),CASE WHEN (SELECT SUM(AnzahlMA) from pep_tool.schaltung s where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND s.Abteilung = m.Abteilung) IS NULL THEN 0 ELSE NULL END From pep_too.mitarbeiter_static m left join pep_tool.mitarbeiter_change [c] ON m.PersNr = c.mitarbeiter_static_PersNr WHERE c.Arbeitsmuster like '%{schicht}%' AND c.Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' group by m.Abteilung order by Abteilung"); MAView = Helper.DataTableToGewerk(MACombo); } if ((sender as Xceed.Wpf.Toolkit.DateTimePicker).Value.HasValue) { dPSchaltBis.IsEnabled = true; arrow5Bis.Visibility = Visibility.Visible; arrow4Von.Visibility = Visibility.Collapsed; } else { dPSchaltBis.IsEnabled = false; arrow5Bis.Visibility = Visibility.Collapsed; arrow4Von.Visibility = Visibility.Visible; } } private async void DPSchaltBis_ValueChanged(object sender, RoutedPropertyChangedEventArgs e) { if (dPSchaltVon.Value.HasValue && dPSchaltBis.Value.HasValue) { var schicht = "";//((DataRowView)((Button)sending).DataContext).Row.ItemArray[8].ToString().Substring(0, 2); switch (cBSchicht.SelectedIndex) { case 0: schicht = "MF"; break; case 1: schicht = "MS"; break; case 2: schicht = "MN"; break; default: schicht = "MF"; break; } if (schicht == "MF" || schicht == "MT") FillComboAndView(Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd"), "$$", dPSchaltVon.Value.Value.ToString("yyyy-MM-dd HH:mm:ss"), dPSchaltBis.Value.Value.ToString("yyyy-MM-dd HH:mm:ss")); else FillComboAndView(Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd"), schicht, dPSchaltVon.Value.Value.ToString("yyyy-MM-dd HH:mm:ss"), dPSchaltBis.Value.Value.ToString("yyyy-MM-dd HH:mm:ss")); // MACombo = await SQL.ReadSQL($"SELECT Abteilung, COUNT(*) - IFNULL((SELECT SUM(AnzahlMA) from pep_tool.schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung),0) - IFNULL((SELECT count(*) from mitarbeiter_change join mitarbeiter_static on PersNr = mitarbeiter_static_PersNr where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND Zuweisung != '' AND m.Abteilung = Abteilung),0),COUNT(*),IFNULL((SELECT SUM(AnzahlMA) from pep_tool.schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung),0) + IFNULL((SELECT count(*) from mitarbeiter_change join mitarbeiter_static on PersNr = mitarbeiter_static_PersNr where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND Zuweisung != '' AND m.Abteilung = Abteilung),0) From pep_tool.mitarbeiter_static `m` left join pep_tool.mitarbeiter_change `c` ON m.PersNr = c.mitarbeiter_static_PersNr WHERE (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND c.Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' group by m.Abteilung order by Abteilung"); ////MACombo = await SQL.ReadSQL($"SELECT Abteilung, COUNT(*) - CASE WHEN (SELECT SUM(AnzahlMA) from pep_tool.schaltung s where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung) IS NULL THEN 0 ELSE NULL END,COUNT(*),CASE WHEN (SELECT SUM(AnzahlMA) from pep_tool.schaltung s where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung) IS NULL THEN 0 ELSE NULL END From pep_too.mitarbeiter_static m left join pep_tool.mitarbeiter_change [c] ON m.PersNr = c.mitarbeiter_static_PersNr WHERE (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND c.Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' group by m.Abteilung order by Abteilung"); //else // MACombo = await SQL.ReadSQL($"SELECT Abteilung, COUNT(*) - IFNULL((SELECT SUM(AnzahlMA) from pep_tool.schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND s.Abteilung = m.Abteilung),0) - IFNULL((SELECT count(*) from mitarbeiter_change join mitarbeiter_static on PersNr = mitarbeiter_static_PersNr where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND Zuweisung != '' AND m.Abteilung = Abteilung),0),COUNT(*),IFNULL((SELECT SUM(AnzahlMA) from pep_tool.schaltung `s` where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND s.Abteilung = m.Abteilung),0) + IFNULL((SELECT count(*) from mitarbeiter_change join mitarbeiter_static on PersNr = mitarbeiter_static_PersNr where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND Zuweisung != '' AND m.Abteilung = Abteilung),0) From pep_tool.mitarbeiter_static `m` left join pep_tool.mitarbeiter_change `c` ON m.PersNr = c.mitarbeiter_static_PersNr WHERE c.Arbeitsmuster like '%{schicht}%' AND c.Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' group by m.Abteilung order by Abteilung"); ////MACombo = await SQL.ReadSQL($"SELECT Abteilung, COUNT(*) - CASE WHEN (SELECT SUM(AnzahlMA) from pep_tool.schaltung s where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND s.Abteilung = m.Abteilung) IS NULL THEN 0 ELSE NULL END,COUNT(*),CASE WHEN (SELECT SUM(AnzahlMA) from pep_tool.schaltung s where Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' AND c.Arbeitsmuster like '%{schicht}%' AND s.Abteilung = m.Abteilung) IS NULL THEN 0 ELSE NULL END From pep_too.mitarbeiter_static m left join pep_tool.mitarbeiter_change [c] ON m.PersNr = c.mitarbeiter_static_PersNr WHERE c.Arbeitsmuster like '%{schicht}%' AND c.Datum = '{Convert.ToDateTime(buttonDatum).ToString("yyyy-MM-dd")}' group by m.Abteilung order by Abteilung"); MAView = Helper.DataTableToGewerk(MACombo); } if ((sender as Xceed.Wpf.Toolkit.DateTimePicker).Value.HasValue) { dGMAView.IsEnabled = true; arrow6MAView.Visibility = Visibility.Visible; arrow5Bis.Visibility = Visibility.Collapsed; } else { dGMAView.IsEnabled = false; arrow6MAView.Visibility = Visibility.Collapsed; arrow5Bis.Visibility = Visibility.Visible; } } private void cBsWork_SelectionChanged(object sender, SelectionChangedEventArgs e) { var x = sender as ComboBox; tbGrund.Text = (x.SelectedItem as sWork).Work != "" ? (x.SelectedItem as sWork).Work : (x.SelectedItem as sWork).Title; cbSchaltzustand.SelectedIndex = Helper.returnIndexForString((x.SelectedItem as sWork).Schaltzustand); arrow7sWork.Visibility = Visibility.Collapsed; arrow8Grund.Visibility = Visibility.Collapsed; arrow9Schaltzustand.Visibility = cbSchaltzustand.SelectedIndex != -1 ? Visibility.Collapsed : Visibility.Visible; arrow10MA.Visibility= cbSchaltzustand.SelectedIndex != -1 ? Visibility.Visible : Visibility.Collapsed; cBAnzahlMA.IsEnabled = cbSchaltzustand.SelectedIndex != -1 ? true : false; } private async void FillComboAndView(string date, string arbeitsmuster, string starttime, string endtime) { var s = $"SELECT Abteilung, count(*) - max(IFNULL((SELECT SUM(AnzahlMA) from pep_tool.schaltung `s` where Datum = '{date}' AND (((CAST('{starttime}' AS DATETIME) BETWEEN StartEx AND EndEx) OR (CAST('{endtime}' AS DATETIME) BETWEEN StartEx AND EndEx)) OR ((StartEx BETWEEN CAST('{starttime}' AS DATETIME) AND CAST('{endtime}' AS DATETIME)) OR (EndEx BETWEEN CAST('{starttime}' AS DATETIME) AND CAST('{endtime}' AS DATETIME)))) AND c.Arbeitsmuster like '%{arbeitsmuster}%' AND s.Abteilung = m.Abteilung),0)) as verfügbar, count(*) as anwesend, max(IFNULL((SELECT SUM(AnzahlMA) from pep_tool.schaltung `s` where Datum = '{date}' AND (((CAST('{starttime}' AS DATETIME) BETWEEN StartEx AND EndEx) OR (CAST('{endtime}' AS DATETIME) BETWEEN StartEx AND EndEx)) OR ((StartEx BETWEEN CAST('{starttime}' AS DATETIME) AND CAST('{endtime}' AS DATETIME)) OR (EndEx BETWEEN CAST('{starttime}' AS DATETIME) AND CAST('{endtime}' AS DATETIME)))) AND c.Arbeitsmuster like '%{arbeitsmuster}%' AND s.Abteilung = m.Abteilung),0)) as verplant From pep_tool.mitarbeiter_static `m` left join pep_tool.mitarbeiter_change `c` ON m.PersNr = c.mitarbeiter_static_PersNr WHERE c.Arbeitsmuster like '%{arbeitsmuster}%' AND c.Datum = '{date}' group by m.Abteilung order by Abteilung"; if (arbeitsmuster == "$$") MACombo = await SQL.ReadSQL($"SELECT Abteilung, count(*) - max(IFNULL((SELECT SUM(AnzahlMA) from pep_tool.schaltung `s` where Datum = '{date}' AND (((CAST('{starttime}' AS DATETIME) BETWEEN StartEx AND EndEx) OR (CAST('{endtime}' AS DATETIME) BETWEEN StartEx AND EndEx)) OR ((StartEx BETWEEN CAST('{starttime}' AS DATETIME) AND CAST('{endtime}' AS DATETIME)) OR (EndEx BETWEEN CAST('{starttime}' AS DATETIME) AND CAST('{endtime}' AS DATETIME)))) AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung),0)) as verfügbar, count(*) as anwesend, max(IFNULL((SELECT SUM(AnzahlMA) from pep_tool.schaltung `s` where Datum = '{date}' AND (((CAST('{starttime}' AS DATETIME) BETWEEN StartEx AND EndEx) OR (CAST('{endtime}' AS DATETIME) BETWEEN StartEx AND EndEx)) OR ((StartEx BETWEEN CAST('{starttime}' AS DATETIME) AND CAST('{endtime}' AS DATETIME)) OR (EndEx BETWEEN CAST('{starttime}' AS DATETIME) AND CAST('{endtime}' AS DATETIME)))) AND (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND s.Abteilung = m.Abteilung),0)) as verplant From pep_tool.mitarbeiter_static `m` left join pep_tool.mitarbeiter_change `c` ON m.PersNr = c.mitarbeiter_static_PersNr WHERE (c.Arbeitsmuster like '%MF%' OR c.Arbeitsmuster like '%MT%') AND c.Datum = '{date}' group by m.Abteilung order by Abteilung"); else MACombo = await SQL.ReadSQL($"SELECT Abteilung, count(*) - max(IFNULL((SELECT SUM(AnzahlMA) from pep_tool.schaltung `s` where Datum = '{date}' AND (((CAST('{starttime}' AS DATETIME) BETWEEN StartEx AND EndEx) OR (CAST('{endtime}' AS DATETIME) BETWEEN StartEx AND EndEx)) OR ((StartEx BETWEEN CAST('{starttime}' AS DATETIME) AND CAST('{endtime}' AS DATETIME)) OR (EndEx BETWEEN CAST('{starttime}' AS DATETIME) AND CAST('{endtime}' AS DATETIME)))) AND c.Arbeitsmuster like '%{arbeitsmuster}%' AND s.Abteilung = m.Abteilung),0)) as verfügbar, count(*) as anwesend, max(IFNULL((SELECT SUM(AnzahlMA) from pep_tool.schaltung `s` where Datum = '{date}' AND (((CAST('{starttime}' AS DATETIME) BETWEEN StartEx AND EndEx) OR (CAST('{endtime}' AS DATETIME) BETWEEN StartEx AND EndEx)) OR ((StartEx BETWEEN CAST('{starttime}' AS DATETIME) AND CAST('{endtime}' AS DATETIME)) OR (EndEx BETWEEN CAST('{starttime}' AS DATETIME) AND CAST('{endtime}' AS DATETIME)))) AND c.Arbeitsmuster like '%{arbeitsmuster}%' AND s.Abteilung = m.Abteilung),0)) as verplant From pep_tool.mitarbeiter_static `m` left join pep_tool.mitarbeiter_change `c` ON m.PersNr = c.mitarbeiter_static_PersNr WHERE c.Arbeitsmuster like '%{arbeitsmuster}%' AND c.Datum = '{date}' group by m.Abteilung order by Abteilung"); MAView = Helper.DataTableToGewerk(MACombo); var dgGewerk = Helper.GetDataGridRows(dGSchaltListGewerk) != null && Helper.GetDataGridRows(dGSchaltListGewerk).Count() != 0 ? Helper.GetDataGridRows(dGSchaltListGewerk) : Enumerable.Empty(); var dgTag = Helper.GetDataGridRows(dGSchaltListTag) != null && Helper.GetDataGridRows(dGSchaltListTag).Count() != 0 ? Helper.GetDataGridRows(dGSchaltListTag) : Enumerable.Empty(); var start = Convert.ToDateTime(starttime); var end = Convert.ToDateTime(endtime); SolidColorBrush w = new SolidColorBrush(Colors.White); SolidColorBrush r = new SolidColorBrush(Colors.LightSalmon); foreach(DataGridRow DGrow in dgGewerk) { var rView = DGrow.DataContext as DataRowView; var row = rView.Row; var von = DateTime.ParseExact(row.ItemArray[3].ToString(), "dd.MM. HH:mm", null); var bis = DateTime.ParseExact(row.ItemArray[4].ToString(), "dd.MM. HH:mm", null); if (((start >= von && start <= bis) || (end >= von && end <= bis)) || ((von >= start && von <= end) || (bis >= start && bis <= end))) { DGrow.Background = r; } else DGrow.Background = w; } foreach (DataGridRow DGrow in dgTag) { var rView = DGrow.DataContext as DataRowView; var row = rView.Row; var von = DateTime.ParseExact(row.ItemArray[3].ToString(), "dd.MM. HH:mm", null); var bis = DateTime.ParseExact(row.ItemArray[4].ToString(), "dd.MM. HH:mm", null); if (((start >= von && start <= bis) || (end >= von && end <= bis)) || ((von >= start && von <= end) || (bis >= start && bis <= end))) { DGrow.Background = r; } else DGrow.Background = w; } } private void tbGrund_TextChanged(object sender, TextChangedEventArgs e) { arrow8Grund.Visibility = Visibility.Collapsed; arrow7sWork.Visibility = Visibility.Collapsed; arrow10MA.Visibility = cbSchaltzustand.SelectedIndex != -1 ? Visibility.Visible : Visibility.Collapsed; cBAnzahlMA.IsEnabled = cbSchaltzustand.SelectedIndex != -1 ? true : false; } private void cbSchaltzustand_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (cbSchaltzustand.SelectedIndex != -1) { arrow9Schaltzustand.Visibility = Visibility.Collapsed; arrow7sWork.Visibility = Visibility.Collapsed; arrow10MA.Visibility = Visibility.Visible; cBAnzahlMA.IsEnabled = true; } else { arrow9Schaltzustand.Visibility = Visibility.Visible; arrow7sWork.Visibility = Visibility.Visible; arrow10MA.Visibility = Visibility.Collapsed; cBAnzahlMA.IsEnabled = false; } } private void cBAnzahlMA_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (cBAnzahlMA.SelectedIndex != -1) { arrow10MA.Visibility = Visibility.Collapsed; arrow11Add.Visibility = Visibility.Visible; btnAdd.IsEnabled = true; } else { arrow10MA.Visibility = Visibility.Visible; arrow11Add.Visibility = Visibility.Collapsed; btnAdd.IsEnabled = false; } } private void dPSchaltVon_PreviewTextInput(object sender, TextCompositionEventArgs e) { arrow4Von.Visibility = Visibility.Collapsed; dPSchaltBis.IsEnabled = true; arrow5Bis.Visibility = Visibility.Visible; } private void dPSchaltBis_PreviewTextInput(object sender, TextCompositionEventArgs e) { arrow5Bis.Visibility = Visibility.Collapsed; dGMAView.IsEnabled = true; arrow6MAView.Visibility = Visibility.Visible; } } public class SearchFilterConverter : IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return $"{values[0].ToString()} {values[1].ToString()}"; } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } } public class Gewerk { public string Abteilung { get; set; } public string MAAnwesend { get; set; } public string MAVerplant { get; set; } public string MAVerfuegbar { get; set; } } public class sWork { public string Title { get; set; } public string Work { get; set; } public string Schaltzustand { get; set; } public string Display { get { return Schaltzustand != "" ? $"'{Title}' bei '{Schaltzustand}'" : Title; } } } }