PEPTool/AV-ToolV3/Zugzuweisung.xaml.cs
2025-10-08 10:11:18 +02:00

835 lines
57 KiB
C#

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
{
/// <summary>
/// Interaktionslogik für Zugzuweisung.xaml
/// </summary>
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<Gewerk> mAView = new List<Gewerk>();
public List<Gewerk> 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<sWork> sworks = new List<sWork>();
public List<sWork> 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<int>();
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<object> 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<object> 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<DataGridRow>();
var dgTag = Helper.GetDataGridRows(dGSchaltListTag) != null && Helper.GetDataGridRows(dGSchaltListTag).Count() != 0 ? Helper.GetDataGridRows(dGSchaltListTag) : Enumerable.Empty<DataGridRow>();
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; } }
}
}