ZKuP/ZKuP/CreateFirma.xaml.cs
Marcus b8f7c7bf6e Umstellung auf SSL
Neue Icons für Konnektivität
Warnings beseitigt
PreUpgrade von BouncyCastle
2025-07-29 11:57:02 +02:00

2243 lines
127 KiB
C#

using FuzzySharp;
using MahApps.Metro.Controls;
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Runtime.Remoting.Channels;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
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 System.Windows.Threading;
using Windows.UI.Popups;
//using Windows.UI.Xaml.Controls.Primitives;
using static System.Net.Mime.MediaTypeNames;
namespace ZKuP
{
/// <summary>
/// Interaktionslogik für CreateFirma.xaml
/// </summary>
public partial class CreateFirma : MetroWindow, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
//private List<Firma> myVar;
//public List<Firma> FirmaView
//{
// get { return myVar; }
// set { myVar = value; }
//}
DataTable firmen = new DataTable("Firmen");
private Dictionary<string, List<string>> firmenSearchList = new Dictionary<string, List<string>>();
public object dg_cbBE_Tooltip { get; private set; }
private List<string> aspVar;
public List<string> asp
{
get { return aspVar; }
set { aspVar = value; OnPropertyChanged(); }
}
private List<string> BEitems;
public List<string> BEItems
{
get { return BEitems; }
set { BEitems = value; OnPropertyChanged(); }
}
private bool beColumnIsEnabled = false;
public bool BEColumnIsEnabled
{
get { return beColumnIsEnabled; }
set { beColumnIsEnabled = value; OnPropertyChanged(); }
}
public string Personen { get; set; }
public string TelNr { get; set; }
System.Windows.Threading.DispatcherTimer searchTimer = new System.Windows.Threading.DispatcherTimer();
DispatcherTimer existingFirmenTimer = new DispatcherTimer();
DispatcherTimer popCloseTimer = new DispatcherTimer();
Popup BEPopup = new Popup();
public CreateFirma()
{
this.DataContext = this;
InitializeComponent();
updateList();
Dispatcher.Invoke(() => dgFirmen.Columns.FirstOrDefault(c => c.Header.ToString() == "Name").SortDirection = ListSortDirection.Ascending);
asp = SQL.ReadListString($"SELECT Name FROM {MainWindow.table}.ansprechpartner").Result;
asp = asp.OrderBy(p => p).ToList();
searchTimer.Interval = TimeSpan.FromSeconds(0.0005);
searchTimer.Tick += SearchTimer_Tick;
existingFirmenTimer.Tick += ExistingFirmenTimer_Tick;
existingFirmenTimer.Interval = TimeSpan.FromMilliseconds(500);
popCloseTimer.Interval = TimeSpan.FromSeconds(5);
popCloseTimer.Tick += (s, arg) =>
{
dgFirmen.FindChild<Grid>("grid_dgBE").MouseEnter -= cbBE_MouseEnter;
ccBE.MouseEnter -= cbBE_MouseEnter;
M2WithoutGebuchterBETooltipPopup.IsOpen = false;
M2WithGebuchterBETooltipPopup.IsOpen = false;
NotM2TooltipPopup.IsOpen = false;
dgFirmen.FindChild<Grid>("grid_dgBE").MouseEnter += cbBE_MouseEnter;
ccBE.MouseEnter += cbBE_MouseEnter;
};
cbAnsprechpartner_Intern.ItemsSource = asp;
StackPanel sp = new StackPanel();
sp.Children.Add(new TextBlock() { Text = "Die Begleitpersonen müssen nur augefüllt werden wenn die selbe Firma für die gleiche Aufgabe, aber an verschiedenen Orten eingeplant ist" });
sp.Children.Add(new TextBlock());
sp.Children.Add(new TextBlock());
sp.Children.Add(new TextBlock() { Text = "Beispiel:" });
sp.Children.Add(new TextBlock());
sp.Children.Add(new TextBlock() { Text = "3 Mitarbeiter von Siemens sind für 3 verschiedene Loks vor Ort." });
sp.Children.Add(new TextBlock() { Text = "Die MA von Siemens kommen zb. zu unterschiedlichen Zeiten" });
ToolTip tt = new ToolTip();
tt.Content = sp;
tt.PlacementTarget = btnBegleiter;
tt.Placement = PlacementMode.Right;
//tt.IsOpen = true;
btnBegleiter.ToolTip = tt;
ToolTipService.SetInitialShowDelay(btnBegleiter, 10);
//var desc = Helper.GetBEDescription();
//var numbers = Helper.GetBENumbers();
//var be = new List<string>();
//be.Add("");
//for (int i = 0; i < numbers.Count; i++)
//{
// be.Add($"BE-Fläche {numbers[i]} ({desc[i]})");
//}
if (MainWindow.LoggedInRole == Roles.M2 || MainWindow.LoggedInRole == Roles.M2_AM || MainWindow.LoggedInRole == Roles.Admin)
{
LoadBEs();
}
else
{
cbBE.IsEnabled = false;
cbBE.ToolTip = "BE-Flächen können nur von M2 gebucht werden";
dg_cbBE_Tooltip = "BE-Flächen können nur von M2 gebucht werden";
ToolTipService.SetInitialShowDelay(cbBE, 100);
ToolTipService.SetShowOnDisabled(cbBE, true);
}
dpEinweisung_Bis.DisplayDateEnd = DateTime.Now + TimeSpan.FromDays(365);
}
private void LoadBEs()
{
var be = new List<string>();
if (MainWindow.LoggedInRole == Roles.Admin)
be = SQL.ReadListString($"SELECT beFlaeche FROM {MainWindow.table}.beBelegung WHERE Projektleiter = '{Environment.UserName}' AND bis > now()").Result.Distinct().ToList(); //FillBEList();
else
be = SQL.ReadListString($"SELECT beFlaeche FROM {MainWindow.table}.beBelegung WHERE Projektleiter = '{Environment.UserName}' AND bis > now()").Result.Distinct().ToList();
if (be.Count > 0)
{
cbBE.ItemsSource = be;
BEItems = be;
BEColumnIsEnabled = true;
}
else
{
cbBE.IsEnabled = false;
BEColumnIsEnabled = false;
ToolTipService.SetInitialShowDelay(cbBE, 100);
ToolTipService.SetShowOnDisabled(cbBE, true);
}
}
private void ShowTooltip(object sender, MouseEventArgs e)
{
//BEPopup.IsOpen = false;
//BEPopup.IsOpen = true;
}
private void UnShowTooltip(object sender, RoutedEventArgs e)
{
//BEPopup.IsOpen = false;
}
private void GoToBEBuchung_Click(object sender, RoutedEventArgs e)
{
Belegung bel = new Belegung();
bel.Owner = this;
bel.ShowDialog();
LoadBEs();
}
private void updateList()
{
if (MainWindow.LoggedInRole == Roles.Admin || MainWindow.LoggedInRole == Roles.M2_AM || MainWindow.LoggedInRole == Roles.Pförtner)
{
requestListAdmin();
}
else
{
requestList();
}
}
private void requestList()
{
firmen = SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.firmen WHERE Ersteller = '{Environment.UserName}' " +
$"OR Ersteller = '{Environment.UserDomainName}{Environment.UserName}' " +
$"OR Ersteller = '{SQL.ReadSingleValue($"SELECT Vertreter FROM {MainWindow.table}.ansprechpartner WHERE Name = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
$"OR Ersteller = '{Environment.UserDomainName}{SQL.ReadSingleValue($"SELECT Vertreter FROM {MainWindow.table}.ansprechpartner WHERE Name = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
$"OR Ersteller = '{SQL.ReadSingleValue($"SELECT Name FROM {MainWindow.table}.ansprechpartner WHERE Vertreter = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
$"OR Ersteller = '{Environment.UserDomainName}{SQL.ReadSingleValue($"SELECT Name FROM {MainWindow.table}.ansprechpartner WHERE Vertreter = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
$"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}' ORDER BY Name ASC"
, firmen).Result;
//FirmaView = Firma.DataTableToFirma(firmen);
dgFirmen.DataContext = firmen;
firmenSearchList.Clear();
foreach (var firma in firmen.AsEnumerable().Select(p => p.Field<string>("Name").Trim()).ToList().Distinct())
{
if (firma.Contains(' '))
{
firmenSearchList.Add(firma, new List<string>());
for (var i = 0; i < firma.Split(' ').Count(); i++)
firmenSearchList[firma].Add(firma.Split(' ')[i]);
}
else firmenSearchList.Add(firma, new List<string>());
}
}
private void requestListAdmin()
{
firmen = SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.firmen ORDER BY Name ASC", firmen).Result;
//FirmaView = Firma.DataTableToFirma(firmen);
dgFirmen.DataContext = firmen;
firmenSearchList.Clear();
foreach (var firma in firmen.AsEnumerable().Select(p => p.Field<string>("Name").Trim()).ToList().Distinct())
{
if (firma.Contains(' '))
{
firmenSearchList.Add(firma, new List<string>());
for (var i = 0; i < firma.Split(' ').Count(); i++)
firmenSearchList[firma].Add(firma.Split(' ')[i]);
}
else firmenSearchList.Add(firma, new List<string>());
}
}
private List<string> FillBEList()
{
List<string> BEs = new List<string>();
var numbers = Helper.GetBENumbers();
var desc = Helper.GetBEDescription();
var files = Helper.GetBEFileNames();
BEs.Add("");
for (int i = 0; i < numbers.Count; i++)
{
BEs.Add($"BE-Fläche {numbers[i]} ({desc[i]})");
}
return BEs;
}
private void BtnClose_Click(object sender, RoutedEventArgs e)
{
dpArbeitsbeginn.IsDropDownOpen = false;
dpArbeitsende.IsDropDownOpen = false;
dpEinweisung_Bis.IsDropDownOpen = false;
this.Close();
}
bool added = false;
private async void btnAdd_Click(object sender, RoutedEventArgs e)
{
tt.IsOpen = false;
this.Cursor = Cursors.Wait;
try
{
if (firmenSearchList.Keys.Select(p => p.ToLower()).Contains(tbName.Text.Trim().ToLower()))
{
if (MessageBox.Show($"Die Firma {tbName.Text} ist bereits angelegt.\n" +
$"Firmen dürfen nur mehrfach angelegt werden, wenn diese an mehreren Projekten gleichzeitig im Werk arbeiten!\n\n" +
$"Ist dies nicht der Fall, bitte die Firma in der Liste bearbeiten.\n" +
$"Hierfür einfach die zu ändernden Felder anklicken und bearbeiten.\n\n" +
$"Sollte es sich um eine andere Firma handeln, kann diese Meldung ignoriert werden\n" +
$"Möchten Sie diese Firma sicher nochmals hinzufügen?", "Doppelter Eintrag", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.No)
{
return;
}
}
else
{
List<string> similarities = new List<string>();
foreach (var item in firmenSearchList)
{
if (item.Value.Count > 0)
{
foreach (var val in item.Value)
if (Fuzz.Ratio(tbName.Text.ToLower(), val.ToLower()) > 80)
similarities.Add(item.Key);
}
else if (Fuzz.Ratio(tbName.Text.ToLower(), item.Key.ToLower()) > 80)
similarities.Add(item.Key);
}
if (similarities.Count > 0)
{
similarities.Sort();
if (MessageBox.Show($"Die Firma {tbName.Text} ist sehr ähnlich zu der Firma {Helper.FirstCharToUpperCase(similarities.First())}.\n" +
$"Firmen dürfen nur mehrfach angelegt werden, wenn diese an mehreren Projekten gleichzeitig im Werk arbeiten!\n\n" +
$"Ist dies nicht der Fall, bitte die Firma in der Liste bearbeiten.\n" +
$"Hierfür einfach die zu ändernden Felder anklicken und bearbeiten.\n\n" +
$"Sollte es sich um eine andere Firma handeln, kann diese Meldung ignoriert werden\n" +
$"Möchten Sie diese Firma sicher hinzufügen?", "Doppelter Eintrag?", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.No)
{
return;
}
}
}
if (string.IsNullOrWhiteSpace(tbName.Text))
{
MessageBox.Show("Namen eintragen!", "Fehler");
return;
}
else if (string.IsNullOrWhiteSpace(tbVerantwortlicher_MA.Text))
{
MessageBox.Show("Verantwortlichen MA eintragen!", "Fehler");
return;
}
else if (tbVerantwortlicher_MA.Text.ToList<char>().Distinct().Count() < 5)
{
MessageBox.Show("Verantwortlicher MA der Firma muss qualifiziert angegeben werden!\nFalls kein Verantwortlicher der Firma bekannt ist, den Namen des Erstellers eintragen", "Fehler");
return;
}
else if (string.IsNullOrWhiteSpace(tbTel_Firma.Text))
{
MessageBox.Show("Telefonnummer der Firma eintragen!", "Fehler");
return;
}
else if (tbTel_Firma.Text.ToList<char>().Distinct().Count() < 5)
{
MessageBox.Show("Telefonnummer der Firma muss qualifiziert angegeben werden!\nFalls keine Nummer des MA der Firma bekannt, die Nummer des Erstellers eintragen", "Fehler");
return;
}
else if (!System.Text.RegularExpressions.Regex.IsMatch(tbTel_Firma.Text, "^[0-9()+\\-/ ]*$"))
{
MessageBox.Show("Telefonnummer der Firma muss qualifiziert angegeben werden!\nFalls keine Nummer des MA der Firma bekannt, die Nummer des Erstellers eintragen", "Fehler");
return;
}
else if (!dpArbeitsbeginn.SelectedDate.HasValue)
{
MessageBox.Show("Arbeitsbeginn eintragen!", "Fehler");
return;
}
else if (!dpArbeitsende.SelectedDate.HasValue)
{
MessageBox.Show("Arbeitsende eintragen!", "Fehler");
return;
}
else if (string.IsNullOrWhiteSpace(tbAnzahl_Fzg.Text))
{
MessageBox.Show("Anzahl Fahrzeuge eintragen!", "Fehler");
return;
}
else if (string.IsNullOrWhiteSpace(tbBeauftragte_Leistung.Text))
{
MessageBox.Show("Beauftragte Leistung eintragen!", "Fehler");
return;
}
else if (tbBeauftragte_Leistung.Text.ToList<char>().Distinct().Count() < 3)
{
MessageBox.Show("Beauftragte Leistung muss qualifiziert angegeben werden!", "Fehler");
return;
}
else if (!dpEinweisung_Bis.SelectedDate.HasValue && (GetDPText() != "...Einweisung folgt..." && GetDPText() != "...Nur in Begleitung..."))
{
MessageBox.Show("'Einweisung bis' eintragen", "Fehler");
return;
}
else if (cbAnsprechpartner_Intern.SelectedIndex == -1)
{
MessageBox.Show("'Ansprechpartner intern' auswählen!", "Fehler");
return;
}
else if (!dpEinweisung_Bis.SelectedDate.HasValue && GetDPText() == "...Einweisung folgt...")
{
if (dpArbeitsende.SelectedDate.Value < dpArbeitsbeginn.SelectedDate.Value)
{
MessageBox.Show(this, "Arbeitsende darf nicht kleiner als Arbeitsbeginn sein", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
else if (dpArbeitsbeginn.SelectedDate.Value > dpArbeitsende.SelectedDate.Value)
{
MessageBox.Show(this, "Arbeitsbeginn darf nicht größer als Arbeitsende sein", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
else
{
if (MessageBox.Show(this, "Einweisung muss durchgeführt und manuell nachgetragen werden!!\n\nMit dem Hinzufügen fortfahren?", "Achtung!", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
{
if (!System.Text.RegularExpressions.Regex.IsMatch(tbAnzahl_Begleiter.Text, "^[0-9]*$"))
{
MessageBox.Show(this, "Anzahl Begleiter darf nur Zahlen enthalten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
else if (!System.Text.RegularExpressions.Regex.IsMatch(tbAnzahl_Fzg.Text, "^[0-9]*$"))
{
MessageBox.Show(this, "Anzahl Fzg. darf nur Zahlen enthalten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
else
{
if (Convert.ToInt16(tbAnzahl_Fzg.Text) > 1)
{
//var res = MessageBox.Show(fzgMessage, "Fahrzeuganzahl > 1", MessageBoxButton.YesNoCancel, MessageBoxImage.Exclamation);
XMessageBoxFahrzeugAnzahl msg = new XMessageBoxFahrzeugAnzahl();
msg.ShowDialog();
var res = msg.ResultButton;
var mail = msg.ResultText;
var wunsch = "";
if (MessageBoxResult.Yes == res)
{
wunsch = tbAnzahl_Fzg.Text;
tbAnzahl_Fzg.Text = "1"; // Vorerst auf 1 setzen und nach Genehmigung auf gewünschte Anzahl
}
else if (MessageBoxResult.No == res)
{
tbAnzahl_Fzg.Text = "1";
}
else return;
//await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.firmen (Name,Verantwortlicher_MA_Firma,Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleiter,Anzahl_Fzg,Beauftragte_Leistung,Arbeitsbeginn,Arbeitsende,Örtliche_Einweisung_bis,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Ersteller) VALUES " +
// $"('{tbName.Text}','{tbVerantwortlicher_MA.Text}','{tbTel_Firma.Text}','{tbAnzahl_Begleiter.Text}','{tbAnzahl_Fzg.Text}','{tbBeauftragte_Leistung.Text}','{dpArbeitsbeginn.SelectedDate.Value.ToString("yyyy-MM-dd")}','{dpArbeitsende.SelectedDate.Value.ToString("yyyy-MM-dd")}','1902-01-01','{cbAnsprechpartner_Intern.Text}','{tbTel_Nr_Ansprechpartner_Intern.Text}','{Environment.UserName}')");
var lastID = await SQL.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.firmen (Name,Verantwortlicher_MA_Firma,Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleiter,Anzahl_Fzg,Beauftragte_Leistung,Arbeitsbeginn,Arbeitsende,Örtliche_Einweisung_bis,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Ersteller) VALUES " +
$"(@Name,@Verantwortlicher_MA_Firma,@Tel_Firma,@Anzahl_Begleiter,@Anzahl_Fzg,@Beauftragte_Leistung,@Arbeitsbeginn,@Arbeitsende,@Einweisung_bis,@Asp_intern,@Tel_Nr_Asp,@Ersteller)", new List<MySqlParameter>()
{
new MySqlParameter("@Name", tbName.Text),
new MySqlParameter("@Verantwortlicher_MA_Firma", tbVerantwortlicher_MA.Text),
new MySqlParameter("@Tel_Firma", tbTel_Firma.Text),
new MySqlParameter("@Anzahl_Begleiter", tbAnzahl_Begleiter.Text),
new MySqlParameter("@Anzahl_Fzg", tbAnzahl_Fzg.Text),
new MySqlParameter("@Beauftragte_Leistung", tbBeauftragte_Leistung.Text),
new MySqlParameter("@Arbeitsbeginn", dpArbeitsbeginn.SelectedDate.Value.ToString("yyyy-MM-dd")),
new MySqlParameter("@Arbeitsende", dpArbeitsende.SelectedDate.Value.ToString("yyyy-MM-dd")),
new MySqlParameter("@Einweisung_bis","1902-01-01"),
new MySqlParameter("@Asp_intern", cbAnsprechpartner_Intern.Text),
new MySqlParameter("@Tel_Nr_Asp", tbTel_Nr_Ansprechpartner_Intern.Text),
new MySqlParameter("@Ersteller", Environment.UserName)
});
if (!string.IsNullOrWhiteSpace(wunsch) && Convert.ToInt16(wunsch) > 1)
{
//await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.fzgAnmeldung (idFirmen,AnzahlFzg,User) VALUES (LAST_INSERT_ID(),'{wunsch}','{Environment.UserName}')");
await SQL.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.fzgAnmeldung (idFirmen,AnzahlFzg,User,Email) VALUES (@lastID,@wunsch,@user,@mail)", new List<MySqlParameter>()
{
new MySqlParameter("@lastID", lastID),
new MySqlParameter("@wunsch", wunsch),
new MySqlParameter("@user", Environment.UserName),
new MySqlParameter("@mail", mail)
});
}
await SQL.CreateAndWriteSQL($"REPLACE INTO {MainWindow.table}.firmenPeople (idFirmen, Personen, TelNr) VALUES (@idFirmen, @personen, @telnr)", new List<MySqlParameter>()
{
new MySqlParameter("@idFirmen", lastID),
new MySqlParameter("@personen", $"{Personen}"),
new MySqlParameter("@telnr", $"{TelNr}")
});
updateList();
dgFirmen.ScrollIntoView(dgFirmen.Items[dgFirmen.Items.Count - 1]); //scroll to last
dgFirmen.UpdateLayout();
ResetInput();
}
else
{
//await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.firmen (Name,Verantwortlicher_MA_Firma,Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleiter,Anzahl_Fzg,Beauftragte_Leistung,Arbeitsbeginn,Arbeitsende,Örtliche_Einweisung_bis,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Ersteller) VALUES " +
// $"('{tbName.Text}','{tbVerantwortlicher_MA.Text}','{tbTel_Firma.Text}','{tbAnzahl_Begleiter.Text}','{tbAnzahl_Fzg.Text}','{tbBeauftragte_Leistung.Text}','{dpArbeitsbeginn.SelectedDate.Value.ToString("yyyy-MM-dd")}','{dpArbeitsende.SelectedDate.Value.ToString("yyyy-MM-dd")}','1902-01-01','{cbAnsprechpartner_Intern.Text}','{tbTel_Nr_Ansprechpartner_Intern.Text}','{Environment.UserName}')");
var lastID = await SQL.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.firmen (Name,Verantwortlicher_MA_Firma,Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleiter,Anzahl_Fzg,Beauftragte_Leistung,Arbeitsbeginn,Arbeitsende,Örtliche_Einweisung_bis,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Ersteller) VALUES " +
$"(@Name,@Verantwortlicher_MA_Firma,@Tel_Firma,@Anzahl_Begleiter,@Anzahl_Fzg,@Beauftragte_Leistung,@Arbeitsbeginn,@Arbeitsende,@Einweisung_bis,@Asp_intern,@Tel_Nr_Asp,@Ersteller)", new List<MySqlParameter>()
{
new MySqlParameter("@Name", tbName.Text),
new MySqlParameter("@Verantwortlicher_MA_Firma", tbVerantwortlicher_MA.Text),
new MySqlParameter("@Tel_Firma", tbTel_Firma.Text),
new MySqlParameter("@Anzahl_Begleiter", tbAnzahl_Begleiter.Text),
new MySqlParameter("@Anzahl_Fzg", tbAnzahl_Fzg.Text),
new MySqlParameter("@Beauftragte_Leistung", tbBeauftragte_Leistung.Text),
new MySqlParameter("@Arbeitsbeginn", dpArbeitsbeginn.SelectedDate.Value.ToString("yyyy-MM-dd")),
new MySqlParameter("@Arbeitsende", dpArbeitsende.SelectedDate.Value.ToString("yyyy-MM-dd")),
new MySqlParameter("@Einweisung_bis","1902-01-01"),
new MySqlParameter("@Asp_intern", cbAnsprechpartner_Intern.Text),
new MySqlParameter("@Tel_Nr_Asp", tbTel_Nr_Ansprechpartner_Intern.Text),
new MySqlParameter("@Ersteller", Environment.UserName)
});
await SQL.CreateAndWriteSQL($"REPLACE INTO {MainWindow.table}.firmenPeople (idFirmen, Personen, TelNr) VALUES (@lastID, @personen, @telnr)", new List<MySqlParameter>()
{
new MySqlParameter("@lastID", lastID),
new MySqlParameter("@personen", $"{Personen}"),
new MySqlParameter("@telnr", $"{TelNr}")
});
//if (!string.IsNullOrWhiteSpace(tbAnzahl_Fzg.Text)) await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.fzgAnmeldung (idFirmen,AnzahlFzg,User) VALUES (LAST_INSERT_ID(),'{tbAnzahl_Fzg.Text}','{Environment.UserName}')");
updateList();
dgFirmen.ScrollIntoView(dgFirmen.Items[dgFirmen.Items.Count - 1]); //scroll to last
dgFirmen.UpdateLayout();
ResetInput();
}
}
}
}
}
else if (!dpEinweisung_Bis.SelectedDate.HasValue && GetDPText() == "...Nur in Begleitung...")
{
if (dpArbeitsende.SelectedDate.Value < dpArbeitsbeginn.SelectedDate.Value)
{
MessageBox.Show(this, "Arbeitsende darf nicht kleiner als Arbeitsbeginn sein", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
else if (dpArbeitsbeginn.SelectedDate.Value > dpArbeitsende.SelectedDate.Value)
{
MessageBox.Show(this, "Arbeitsbeginn darf nicht größer als Arbeitsende sein", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
else
{
if (MessageBox.Show(this, "Firmen dürfen sich nur in Begleitung auf dem Gelände bewegen!!\n\nMit dem Hinzufügen fortfahren?", "Achtung!", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
{
if (!System.Text.RegularExpressions.Regex.IsMatch(tbAnzahl_Begleiter.Text, "^[0-9]*$"))
{
MessageBox.Show(this, "Anzahl Begleiter darf nur Zahlen enthalten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
else if (!System.Text.RegularExpressions.Regex.IsMatch(tbAnzahl_Fzg.Text, "^[0-9]*$"))
{
MessageBox.Show(this, "Anzahl Fzg. darf nur Zahlen enthalten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
else
{
if (Convert.ToInt16(tbAnzahl_Fzg.Text) > 1)
{
//var res = MessageBox.Show(fzgMessage, "Fahrzeuganzahl > 1", MessageBoxButton.YesNoCancel, MessageBoxImage.Exclamation);
XMessageBoxFahrzeugAnzahl msg = new XMessageBoxFahrzeugAnzahl();
msg.ShowDialog();
var res = msg.ResultButton;
var mail = msg.ResultText;
var wunsch = "";
if (MessageBoxResult.Yes == res)
{
wunsch = tbAnzahl_Fzg.Text;
tbAnzahl_Fzg.Text = "1"; // Vorerst auf 1 setzen und nach Genehmigung auf gewünschte Anzahl
}
else if (MessageBoxResult.No == res)
{
tbAnzahl_Fzg.Text = "1";
}
else return;
//await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.firmen (Name,Verantwortlicher_MA_Firma,Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleiter,Anzahl_Fzg,Beauftragte_Leistung,Arbeitsbeginn,Arbeitsende,Örtliche_Einweisung_bis,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Ersteller) VALUES " +
// $"('{tbName.Text}','{tbVerantwortlicher_MA.Text}','{tbTel_Firma.Text}','{tbAnzahl_Begleiter.Text}','{tbAnzahl_Fzg.Text}','{tbBeauftragte_Leistung.Text}','{dpArbeitsbeginn.SelectedDate.Value.ToString("yyyy-MM-dd")}','{dpArbeitsende.SelectedDate.Value.ToString("yyyy-MM-dd")}','1903-01-01','{cbAnsprechpartner_Intern.Text}','{tbTel_Nr_Ansprechpartner_Intern.Text}','{Environment.UserName}')");
var lastID = await SQL.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.firmen (Name,Verantwortlicher_MA_Firma,Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleiter,Anzahl_Fzg,Beauftragte_Leistung,Arbeitsbeginn,Arbeitsende,Örtliche_Einweisung_bis,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Ersteller) VALUES " +
$"(@name,@verantwortlich,@telFirma,@AnzBegleiter,@Anzahl_Fzg,@Beauftragte_Leistung,@Arbeitsbeginn,@Arbeitsende,'1903-01-01',@Ansprechpartner_Intern,@Tel_Nr_Ansprechpartner_Intern,@Ersteller)", new List<MySqlParameter>()
{
new MySqlParameter("@name", tbName.Text),
new MySqlParameter("@verantwortlich",tbVerantwortlicher_MA.Text),
new MySqlParameter("@telFirma",tbTel_Firma.Text),
new MySqlParameter("@AnzBegleiter", tbAnzahl_Begleiter.Text),
new MySqlParameter("@Anzahl_Fzg",tbAnzahl_Fzg.Text),
new MySqlParameter("@Beauftragte_Leistung",tbBeauftragte_Leistung.Text),
new MySqlParameter("@Arbeitsbeginn", dpArbeitsbeginn.SelectedDate.Value.ToString("yyyy-MM-dd")),
new MySqlParameter("@Arbeitsende",dpArbeitsende.SelectedDate.Value.ToString("yyyy-MM-dd")),
new MySqlParameter("@Ansprechpartner_Intern", cbAnsprechpartner_Intern.Text),
new MySqlParameter("@Tel_Nr_Ansprechpartner_Intern", tbTel_Nr_Ansprechpartner_Intern.Text),
new MySqlParameter("@Ersteller", Environment.UserName)
});
await SQL.CreateAndWriteSQL($"REPLACE INTO {MainWindow.table}.firmenPeople (idFirmen, Personen, TelNr) VALUES (@idFirmen, @personen, @telnr)", new List<MySqlParameter>()
{
new MySqlParameter("@idFirmen", lastID),
new MySqlParameter("@personen", $"{Personen}"),
new MySqlParameter("@telnr", $"{TelNr}")
});
//if (!string.IsNullOrWhiteSpace(wunsch) && Convert.ToInt16(wunsch) > 1)
// await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.fzgAnmeldung (idfirmen,AnzahlFzg,User) VALUES (LAST_INSERT_ID(),'{wunsch}','{Environment.UserName}')");
if (!string.IsNullOrWhiteSpace(wunsch) && Convert.ToInt16(wunsch) > 1)
{
//await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.fzgAnmeldung (idFirmen,AnzahlFzg,User) VALUES (LAST_INSERT_ID(),'{wunsch}','{Environment.UserName}')");
await SQL.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.fzgAnmeldung (idFirmen,AnzahlFzg,User,Email) VALUES (@lastID,@wunsch,@user,@mail)", new List<MySqlParameter>()
{
new MySqlParameter("@lastID", lastID),
new MySqlParameter("@wunsch", wunsch),
new MySqlParameter("@user", Environment.UserName),
new MySqlParameter("@mail", mail)
});
}
updateList();
dgFirmen.ScrollIntoView(dgFirmen.Items[dgFirmen.Items.Count - 1]); //scroll to last
dgFirmen.UpdateLayout();
ResetInput();
}
else
{
//await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.firmen (Name,Verantwortlicher_MA_Firma,Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleiter,Anzahl_Fzg,Beauftragte_Leistung,Arbeitsbeginn,Arbeitsende,Örtliche_Einweisung_bis,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Ersteller) VALUES " +
// $"('{tbName.Text}','{tbVerantwortlicher_MA.Text}','{tbTel_Firma.Text}','{tbAnzahl_Begleiter.Text}','{tbAnzahl_Fzg.Text}','{tbBeauftragte_Leistung.Text}','{dpArbeitsbeginn.SelectedDate.Value.ToString("yyyy-MM-dd")}','{dpArbeitsende.SelectedDate.Value.ToString("yyyy-MM-dd")}','1903-01-01','{cbAnsprechpartner_Intern.Text}','{tbTel_Nr_Ansprechpartner_Intern.Text}','{Environment.UserName}')");
var lastID = await SQL.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.firmen (Name,Verantwortlicher_MA_Firma,Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleiter,Anzahl_Fzg,Beauftragte_Leistung,Arbeitsbeginn,Arbeitsende,Örtliche_Einweisung_bis,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Ersteller) VALUES " +
$"(@name,@verantwortlich,@telFirma,@AnzBegleiter,@Anzahl_Fzg,@Beauftragte_Leistung,@Arbeitsbeginn,@Arbeitsende,'1903-01-01',@Ansprechpartner_Intern,@Tel_Nr_Ansprechpartner_Intern,@Ersteller)", new List<MySqlParameter>()
{
new MySqlParameter("@name", tbName.Text),
new MySqlParameter("@verantwortlich",tbVerantwortlicher_MA.Text),
new MySqlParameter("@telFirma",tbTel_Firma.Text),
new MySqlParameter("@AnzBegleiter", tbAnzahl_Begleiter.Text),
new MySqlParameter("@Anzahl_Fzg",tbAnzahl_Fzg.Text),
new MySqlParameter("@Beauftragte_Leistung",tbBeauftragte_Leistung.Text),
new MySqlParameter("@Arbeitsbeginn", dpArbeitsbeginn.SelectedDate.Value.ToString("yyyy-MM-dd")),
new MySqlParameter("@Arbeitsende",dpArbeitsende.SelectedDate.Value.ToString("yyyy-MM-dd")),
new MySqlParameter("@Ansprechpartner_Intern", cbAnsprechpartner_Intern.Text),
new MySqlParameter("@Tel_Nr_Ansprechpartner_Intern", tbTel_Nr_Ansprechpartner_Intern.Text),
new MySqlParameter("@Ersteller", Environment.UserName)
});
await SQL.CreateAndWriteSQL($"REPLACE INTO {MainWindow.table}.firmenPeople (idFirmen, Personen, TelNr) VALUES (@lastID, @personen, @telnr)", new List<MySqlParameter>()
{
new MySqlParameter("@lastID", lastID),
new MySqlParameter("@personen", $"{Personen}"),
new MySqlParameter("@telnr", $"{TelNr}")
});
//if (!string.IsNullOrWhiteSpace(tbAnzahl_Fzg.Text)) await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.fzgAnmeldung (idfirmen,AnzahlFzg,User) VALUES (LAST_INSERT_ID(),'{tbAnzahl_Fzg.Text}','{Environment.UserName}')");
updateList();
dgFirmen.ScrollIntoView(dgFirmen.Items[dgFirmen.Items.Count - 1]); //scroll to last
dgFirmen.UpdateLayout();
ResetInput();
}
}
}
}
}
else
{
if (!System.Text.RegularExpressions.Regex.IsMatch(tbAnzahl_Begleiter.Text, "^[0-9]*$"))
{
MessageBox.Show(this, "Anzahl Begleiter darf nur Zahlen enthalten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
else if (!System.Text.RegularExpressions.Regex.IsMatch(tbAnzahl_Fzg.Text, "^[0-9]*$"))
{
MessageBox.Show(this, "Anzahl Fzg. darf nur Zahlen enthalten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
else if (dpArbeitsende.SelectedDate.Value < dpArbeitsbeginn.SelectedDate.Value)
{
MessageBox.Show(this, "Arbeitsende darf nicht kleiner als Arbeitsbeginn sein", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
else if (dpArbeitsbeginn.SelectedDate.Value > dpArbeitsende.SelectedDate.Value)
{
MessageBox.Show(this, "Arbeitsbeginn darf nicht größer als Arbeitsende sein", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
else
{
if (Convert.ToInt16(tbAnzahl_Fzg.Text) > 1)
{
//var res = MessageBox.Show(fzgMessage, "Fahrzeuganzahl > 1", MessageBoxButton.YesNoCancel, MessageBoxImage.Exclamation);
XMessageBoxFahrzeugAnzahl msg = new XMessageBoxFahrzeugAnzahl();
msg.ShowDialog();
var res = msg.ResultButton;
var mail = msg.ResultText;
var wunsch = "";
if (MessageBoxResult.Yes == res)
{
wunsch = tbAnzahl_Fzg.Text;
tbAnzahl_Fzg.Text = "1"; // Vorerst auf 1 setzen und nach Genehmigung auf gewünschte Anzahl
}
else if (MessageBoxResult.No == res)
{
tbAnzahl_Fzg.Text = "1";
}
else return;
//await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.firmen (Name,Verantwortlicher_MA_Firma,Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleiter,Anzahl_Fzg,Beauftragte_Leistung,Arbeitsbeginn,Arbeitsende,Örtliche_Einweisung_bis,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,BE,BEint,Ersteller) VALUES " +
// $"('{tbName.Text}','{tbVerantwortlicher_MA.Text}','{tbTel_Firma.Text}','{tbAnzahl_Begleiter.Text}','{tbAnzahl_Fzg.Text}','{tbBeauftragte_Leistung.Text}','{dpArbeitsbeginn.SelectedDate.Value.ToString("yyyy-MM-dd")}','{dpArbeitsende.SelectedDate.Value.ToString("yyyy-MM-dd")}','{dpEinweisung_Bis.SelectedDate.Value.ToString("yyyy-MM-dd")}','{cbAnsprechpartner_Intern.Text}','{tbTel_Nr_Ansprechpartner_Intern.Text}','{cbBE.Text}','{cbBE.SelectedIndex}','{Environment.UserName}')");
var lastID = await SQL.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.firmen (Name,Verantwortlicher_MA_Firma,Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleiter,Anzahl_Fzg,Beauftragte_Leistung,Arbeitsbeginn,Arbeitsende,Örtliche_Einweisung_bis,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Ersteller) VALUES " +
$"(@name,@verantwortlich,@telFirma,@AnzBegleiter,@Anzahl_Fzg,@Beauftragte_Leistung,@Arbeitsbeginn,@Arbeitsende,'1903-01-01',@Ansprechpartner_Intern,@Tel_Nr_Ansprechpartner_Intern,@Ersteller)", new List<MySqlParameter>()
{
new MySqlParameter("@name", tbName.Text),
new MySqlParameter("@verantwortlich",tbVerantwortlicher_MA.Text),
new MySqlParameter("@telFirma",tbTel_Firma.Text),
new MySqlParameter("@AnzBegleiter", tbAnzahl_Begleiter.Text),
new MySqlParameter("@Anzahl_Fzg",tbAnzahl_Fzg.Text),
new MySqlParameter("@Beauftragte_Leistung",tbBeauftragte_Leistung.Text),
new MySqlParameter("@Arbeitsbeginn", dpArbeitsbeginn.SelectedDate.Value.ToString("yyyy-MM-dd")),
new MySqlParameter("@Arbeitsende",dpArbeitsende.SelectedDate.Value.ToString("yyyy-MM-dd")),
new MySqlParameter("@Ansprechpartner_Intern", cbAnsprechpartner_Intern.Text),
new MySqlParameter("@Tel_Nr_Ansprechpartner_Intern", tbTel_Nr_Ansprechpartner_Intern.Text),
new MySqlParameter("@Ersteller", Environment.UserName)
});
await SQL.CreateAndWriteSQL($"REPLACE INTO {MainWindow.table}.firmenPeople (idFirmen, Personen, TelNr) VALUES (@idFirmen, @personen, @telnr)", new List<MySqlParameter>()
{
new MySqlParameter("@idFirmen", lastID),
new MySqlParameter("@personen", $"{Personen}"),
new MySqlParameter("@telnr", $"{TelNr}")
});
//if (!string.IsNullOrWhiteSpace(wunsch) && Convert.ToInt16(wunsch) > 1) await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.fzgAnmeldung (idfirmen,AnzahlFzg,User) VALUES (LAST_INSERT_ID(),'{wunsch}','{Environment.UserName}')");
if (!string.IsNullOrWhiteSpace(wunsch) && Convert.ToInt16(wunsch) > 1)
{
//await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.fzgAnmeldung (idFirmen,AnzahlFzg,User) VALUES (LAST_INSERT_ID(),'{wunsch}','{Environment.UserName}')");
await SQL.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.fzgAnmeldung (idFirmen,AnzahlFzg,User,Email) VALUES (@lastID,@wunsch,@user,@mail)", new List<MySqlParameter>()
{
new MySqlParameter("@lastID", lastID),
new MySqlParameter("@wunsch", wunsch),
new MySqlParameter("@user", Environment.UserName),
new MySqlParameter("@mail", mail)
});
}
updateList();
dgFirmen.ScrollIntoView(dgFirmen.Items[dgFirmen.Items.Count - 1]); //scroll to last
dgFirmen.UpdateLayout();
ResetInput();
}
else
{
//await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.firmen (Name,Verantwortlicher_MA_Firma,Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleiter,Anzahl_Fzg,Beauftragte_Leistung,Arbeitsbeginn,Arbeitsende,Örtliche_Einweisung_bis,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,BE,BEint,Ersteller) VALUES " +
// $"('{tbName.Text}','{tbVerantwortlicher_MA.Text}','{tbTel_Firma.Text}','{tbAnzahl_Begleiter.Text}','{tbAnzahl_Fzg.Text}','{tbBeauftragte_Leistung.Text}','{dpArbeitsbeginn.SelectedDate.Value.ToString("yyyy-MM-dd")}','{dpArbeitsende.SelectedDate.Value.ToString("yyyy-MM-dd")}','{dpEinweisung_Bis.SelectedDate.Value.ToString("yyyy-MM-dd")}','{cbAnsprechpartner_Intern.Text}','{tbTel_Nr_Ansprechpartner_Intern.Text}','{cbBE.Text}','{cbBE.SelectedIndex}','{Environment.UserName}')");
var lastID = await SQL.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.firmen (Name,Verantwortlicher_MA_Firma,Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleiter,Anzahl_Fzg,Beauftragte_Leistung,Arbeitsbeginn,Arbeitsende,Örtliche_Einweisung_bis,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Ersteller) VALUES " +
$"(@name,@verantwortlich,@telFirma,@AnzBegleiter,@Anzahl_Fzg,@Beauftragte_Leistung,@Arbeitsbeginn,@Arbeitsende,'1903-01-01',@Ansprechpartner_Intern,@Tel_Nr_Ansprechpartner_Intern,@Ersteller)", new List<MySqlParameter>()
{
new MySqlParameter("@name", tbName.Text),
new MySqlParameter("@verantwortlich",tbVerantwortlicher_MA.Text),
new MySqlParameter("@telFirma",tbTel_Firma.Text),
new MySqlParameter("@AnzBegleiter", tbAnzahl_Begleiter.Text),
new MySqlParameter("@Anzahl_Fzg",tbAnzahl_Fzg.Text),
new MySqlParameter("@Beauftragte_Leistung",tbBeauftragte_Leistung.Text),
new MySqlParameter("@Arbeitsbeginn", dpArbeitsbeginn.SelectedDate.Value.ToString("yyyy-MM-dd")),
new MySqlParameter("@Arbeitsende",dpArbeitsende.SelectedDate.Value.ToString("yyyy-MM-dd")),
new MySqlParameter("@Ansprechpartner_Intern", cbAnsprechpartner_Intern.Text),
new MySqlParameter("@Tel_Nr_Ansprechpartner_Intern", tbTel_Nr_Ansprechpartner_Intern.Text),
new MySqlParameter("@Ersteller", Environment.UserName)
});
//SQL.ReadSingleValue("SELECT LAST_INSERT_ID()");
await SQL.CreateAndWriteSQL($"REPLACE INTO {MainWindow.table}.firmenPeople (idFirmen, Personen, TelNr) VALUES (@lastID, @personen, @telnr)", new List<MySqlParameter>()
{
new MySqlParameter("@lastID", lastID),
new MySqlParameter("@personen", $"{Personen}"),
new MySqlParameter("@telnr", $"{TelNr}")
});
//if (!string.IsNullOrWhiteSpace(tbAnzahl_Fzg.Text)) await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.fzgAnmeldung (idfirmen,AnzahlFzg,User) VALUES (LAST_INSERT_ID(),'{tbAnzahl_Fzg.Text}','{Environment.UserName}')");
updateList();
dgFirmen.ScrollIntoView(dgFirmen.Items[dgFirmen.Items.Count - 1]); //scroll to last
dgFirmen.UpdateLayout();
ResetInput();
}
}
}
added = true;
}
catch (Exception)
{
}
finally
{
timer.Interval = TimeSpan.FromMilliseconds(50);
timer.Tick += Timer_Tick;
timer.Start();
this.Cursor = Cursors.Arrow;
}
}
private void ResetInput()
{
tbName.Text = "";
tbVerantwortlicher_MA.Text = "";
tbTel_Firma.Text = "";
tbAnzahl_Begleiter.Text = "";
tbAnzahl_Fzg.Text = "";
tbBeauftragte_Leistung.Text = "";
dpArbeitsbeginn.Text = "";
dpArbeitsende.Text = "";
dpEinweisung_Bis.Text = "";
cbBE.SelectedIndex = -1;
cbAnsprechpartner_Intern.SelectedIndex = -1;
tbTel_Nr_Ansprechpartner_Intern.Text = "";
}
private void CbAnsprechpartner_Intern_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string test = SQL.ReadSingleValue($"SELECT Tel_Nr FROM {MainWindow.table}.ansprechpartner WHERE Name='{cbAnsprechpartner_Intern.SelectedValue}'");
tbTel_Nr_Ansprechpartner_Intern.Text = test;
}
private void dgFirmen_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
{
dgFirmen.PreviewKeyDown -= DgFirmen_PreviewKeyDown;
}
private async void DgFirmen_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)
{
deleteRow(arr);
}
}
private async void DgFirmen_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
try
{
string newValue = "";
var header = e.Column.Header;
if (e.EditingElement.GetType() == typeof(TextBox))
{
newValue = (e.EditingElement as TextBox).Text;
}
else
{
e.Cancel = true;
return;
}
var id = (e.Row.Item as DataRowView).Row.ItemArray[0];
DateTime date = DateTime.Now;
if (DateTime.TryParse(newValue, out date))
if (date <= DateTime.Now + TimeSpan.FromDays(365)) newValue = date.ToString("yyyy-MM-dd");
else
{
MessageBox.Show(this, "Daten dürfen maximal 365 Tage in der Zukunft liegen", "Fehler!", MessageBoxButton.OK, MessageBoxImage.Exclamation);
newValue = (DateTime.Now + TimeSpan.FromDays(365)).ToString("yyyy-MM-dd");
}
var MessageValue = newValue;
var MessageDate = DateTime.Now;
if (DateTime.TryParse(newValue, out MessageDate))
MessageValue = MessageDate.ToString("dd.MM.yyyy");
if (string.IsNullOrWhiteSpace(newValue.ToString()))
{
MessageBox.Show(this, "Eintrag darf nicht leer sein!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
e.Cancel = true;
return;
}
else
{
if (oldValue != MessageValue)
{
if (MessageBox.Show(this, $"Möchten Sie den Eintrag '{oldValue}' in der Spalte '{header}' sicher zu '{MessageValue}' ändern?", "Sicher ändern?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
switch (header)
{
case "Name":
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET Name = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET Name = @newValue, Bearbeiter = @UserName WHERE idFirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@newValue", newValue),
new MySqlParameter("@UserName", Environment.UserName),
new MySqlParameter("@id", id)
});
break;
case "Verantw. MA":
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET Verantwortlicher_MA_Firma = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET Verantwortlicher_MA_Firma = @newValue, Bearbeiter = @UserName WHERE idFirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@newValue", newValue),
new MySqlParameter("@UserName", Environment.UserName),
new MySqlParameter("@id", id)
});
break;
case "Tel. Firma":
if (!System.Text.RegularExpressions.Regex.IsMatch(newValue, "^[0-9()+\\-/ ]*$"))
{
MessageBox.Show("Telefonnummer der Firma muss qualifiziert angegeben werden!\nFalls keine Nummer des MA der Firma bekannt, die Nummer des Erstellers eintragen", "Fehler");
break;
//new Popup() { Child = new TextBlock() { Text = $"'{tbTel_Firma.Text.Last()}' ist kein gültiges Zeichen\nTelefonnummer muss qualifiziert eingetragen werden!", Foreground = new SolidColorBrush(Colors.White), Margin = new Thickness(5) }, IsOpen = true, StaysOpen = false, Placement = PlacementMode.Mouse };
//break;
}
if (newValue.ToList<char>().Distinct().Count() < 5)
{
MessageBox.Show("Telefonnummer der Firma muss qualifiziert angegeben werden!\nFalls keine Nummer des MA der Firma bekannt, die Nummer des Erstellers eintragen", "Fehler");
break;
}
else
{
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET Tel_Nr_Verantwortlicher_Firma = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET Tel_Nr_Verantwortlicher_Firma = @newValue, Bearbeiter = @UserName WHERE idFirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@newValue", newValue),
new MySqlParameter("@UserName", Environment.UserName),
new MySqlParameter("@id", id)
});
break;
}
case "Anz. Begleitp.":
if (!System.Text.RegularExpressions.Regex.IsMatch(newValue, "^[0-9]*$"))
MessageBox.Show(this, "Anzahl Begleiter darf nur Zahlen enthalten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
else
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET Anzahl_Begleiter = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET Anzahl_Begleiter = @newValue, Bearbeiter = @UserName WHERE idFirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@newValue", newValue),
new MySqlParameter("@UserName", Environment.UserName),
new MySqlParameter("@id", id)
});
break;
case "Anz. Fzg.":
if (!System.Text.RegularExpressions.Regex.IsMatch(newValue, "^[0-9]*$"))
MessageBox.Show(this, "Anzahl Fzg. darf nur Zahlen enthalten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
else
{
if (Convert.ToInt16(newValue) > 1 && Convert.ToInt16(newValue) > Convert.ToInt16(System.Text.RegularExpressions.Regex.IsMatch(oldValue, "^[0-9]*$") ? oldValue : oldValue = "0"))
{
//var res = MessageBox.Show(fzgMessage, "Fahrzeuganzahl > 1", MessageBoxButton.YesNoCancel, MessageBoxImage.Exclamation);
XMessageBoxFahrzeugAnzahl msg = new XMessageBoxFahrzeugAnzahl(Convert.ToInt16(oldValue), Convert.ToInt32(id));
msg.ShowDialog();
var res = msg.ResultButton;
var mail = msg.ResultText;
var wunsch = "";
if (MessageBoxResult.Yes == res)
{
wunsch = newValue;
e.Cancel = true;
}
else if (MessageBoxResult.No == res)
{
e.Cancel = true;
}
else
{
e.Cancel = true;
return;
}
if (!string.IsNullOrWhiteSpace(wunsch) && Convert.ToInt16(wunsch) > 1) await SQL.WriteSQL($"REPLACE INTO {MainWindow.table}.fzgAnmeldung (idfirmen,AnzahlFzg,User,Email) VALUES ({id},'{wunsch}','{Environment.UserName}','{(string.IsNullOrWhiteSpace(mail) ? "" : mail)}')");
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET Anzahl_Fzg = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET Anzahl_Fzg = @newValue, Bearbeiter = @UserName WHERE idFirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@newValue", newValue),
new MySqlParameter("@UserName", Environment.UserName),
new MySqlParameter("@id", id)
});
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.fzgAnmeldung SET NotificationSent = '0' WHERE idFirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.fzgAnmeldung SET NotificationSent = '0' WHERE idFirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@id", id)
});
}
else if (Convert.ToInt16(newValue) <= 1)
{
await SQL.WriteSQL($"DELETE FROM {MainWindow.table}.fzgAnmeldung WHERE idFirmen = {id}");
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET Anzahl_Fzg = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET Anzahl_Fzg = @newValue, Bearbeiter = @UserName WHERE idFirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@newValue", newValue),
new MySqlParameter("@UserName", Environment.UserName),
new MySqlParameter("@id", id)
});
}
else
{
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET Anzahl_Fzg = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET Anzahl_Fzg = @newValue, Bearbeiter = @UserName WHERE idFirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@newValue", newValue),
new MySqlParameter("@UserName", Environment.UserName),
new MySqlParameter("@id", id)
});
}
}
break;
case "Beauftragte Leistung":
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET Beauftragte_Leistung = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET Beauftragte_Leistung = @newValue, Bearbeiter = @UserName WHERE idFirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@newValue", newValue),
new MySqlParameter("@UserName", Environment.UserName),
new MySqlParameter("@id", id)
});
break;
case "Arbeitsbeginn":
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET Arbeitsbeginn = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET Arbeitsbeginn = @newValue, Bearbeiter = @UserName WHERE idFirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@newValue", newValue),
new MySqlParameter("@UserName", Environment.UserName),
new MySqlParameter("@id", id)
});
if (Convert.ToDateTime(SQL.ReadSingleValue($"SELECT Arbeitsende FROM {MainWindow.table}.firmen WHERE idFirmen = '{id}'")) < MessageDate)
{
MessageBox.Show(this, "Arbeitsende darf nicht kleiner als Arbeitsbeginn sein\nDatum wird automatisch angepasst", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET Arbeitsende = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET Arbeitsende = @newValue, Bearbeiter = @UserName WHERE idFirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@newValue", newValue),
new MySqlParameter("@UserName", Environment.UserName),
new MySqlParameter("@id", id)
});
}
break;
case "Arbeitsende":
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET Arbeitsende = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET Arbeitsende = @newValue, Bearbeiter = @UserName WHERE idFirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@newValue", newValue),
new MySqlParameter("@UserName", Environment.UserName),
new MySqlParameter("@id", id)
});
if (Convert.ToDateTime(SQL.ReadSingleValue($"SELECT Arbeitsbeginn FROM {MainWindow.table}.firmen WHERE idFirmen = '{id}'")) > MessageDate)
{
MessageBox.Show(this, "Arbeitbeginn darf nicht größer als Arbeitsende sein\nDatum wird automatisch angepasst", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET Arbeitsbeginn = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET Arbeitsbeginn = @newValue, Bearbeiter = @UserName WHERE idFirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@newValue", newValue),
new MySqlParameter("@UserName", Environment.UserName),
new MySqlParameter("@id", id)
});
}
break;
case "Unterwiesen bis":
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET Örtliche_Einweisung_bis = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET Örtliche_Einweisung_bis = @newValue, Bearbeiter = @UserName WHERE idFirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@newValue", newValue),
new MySqlParameter("@UserName", Environment.UserName),
new MySqlParameter("@id", id)
});
break;
case "Anspr. intern":
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET Ansprechpartner_Intern = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET Ansprechpartner_Intern = @newValue, Bearbeiter = @UserName WHERE idFirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@newValue", newValue),
new MySqlParameter("@UserName", Environment.UserName),
new MySqlParameter("@id", id)
});
break;
case "Tel. Ansprechp.":
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET Tel_Nr_Ansprechpartner_Intern = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET Tel_Nr_Ansprechpartner_Intern = @newValue, Bearbeiter = @UserName WHERE idFirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@newValue", newValue),
new MySqlParameter("@UserName", Environment.UserName),
new MySqlParameter("@id", id)
});
break;
}
}
}
}
index = e.Row.GetIndex();
dgFirmen.PreviewKeyDown += DgFirmen_PreviewKeyDown;
dgFirmen.RowValidationErrorTemplate = new ControlTemplate();
updateList();
dgFirmen.SelectedIndex = (index);
dgFirmen.ScrollIntoView(dgFirmen.Items[index]);
}
catch (Exception ex)
{
Log.WriteLog(ex.ToString());
MessageBox.Show($"Es ist ein Fehler aufgetreten\n\n{ex.Message}", "Schwerer Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
}
finally
{
timer.Interval = TimeSpan.FromMilliseconds(50);
timer.Tick += Timer_Tick;
timer.Start();
}
}
System.Windows.Threading.DispatcherTimer timer = new System.Windows.Threading.DispatcherTimer();
private async void Timer_Tick(object sender, EventArgs e)
{
await ScrollTo();
timer.Stop();
}
int index = 0;
private async Task ScrollTo()
{
try
{
if (added)
{
var max = 0;
for (var i = 0; i < dgFirmen.Items.Count; i++)
{
var j = (int)(dgFirmen.Items[i] as System.Data.DataRowView).Row.ItemArray[0];
if (max < j)
{
max = j;
index = i;
}
}
dgFirmen.SelectedIndex = index;
dgFirmen.ScrollIntoView(dgFirmen.Items[index], dgFirmen.Columns[0]);
added = false;
}
else
{
if (index > 0 && dgFirmen.Items.Count >= index)
{
dgFirmen.SelectedIndex = index;
dgFirmen.ScrollIntoView(dgFirmen.Items[index], dgFirmen.Columns[0]);
}
}
}
catch (Exception ex)
{
Log.WriteLog(ex.ToString());
MessageBox.Show($"Es ist ein Fehler aufgetreten\n\n{ex.Message}", "Schwerer Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
private void BtnEinweisung_PreValues_Click(object sender, RoutedEventArgs e)
{
string Value = (sender as Button).Content.ToString();
if (Value.EndsWith("Jahr"))
dpEinweisung_Bis.SelectedDate = DateTime.Now.AddYears(1);
else if (Value.EndsWith("Monat"))
dpEinweisung_Bis.SelectedDate = DateTime.Now.AddMonths(1);
else if (Value.EndsWith("Woche"))
dpEinweisung_Bis.SelectedDate = DateTime.Now.AddDays(7);
else if (Value.EndsWith("folgt"))
{
SetDPText("...Einweisung folgt...");
}
else if (Value.EndsWith("Begleitung"))
{
SetDPText("...Nur in Begleitung...");
}
//Debug.WriteLine(x.ToString());
}
private void SetDPText(string Text)
{
dpEinweisung_Bis.Text = "";
System.Reflection.FieldInfo fiTextBox = typeof(DatePicker).GetField("_textBox", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
if (fiTextBox != null)
{
DatePickerTextBox dateTextBox =
(DatePickerTextBox)fiTextBox.GetValue(dpEinweisung_Bis);
if (dateTextBox != null)
{
System.Reflection.PropertyInfo piWatermark = dateTextBox.GetType()
.GetProperty("Watermark", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
if (piWatermark != null)
{
piWatermark.SetValue(dateTextBox, Text, null);
}
}
}
}
private string GetDPText()
{
System.Reflection.FieldInfo fiTextBox = typeof(DatePicker).GetField("_textBox", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
if (fiTextBox != null)
{
DatePickerTextBox dateTextBox =
(DatePickerTextBox)fiTextBox.GetValue(dpEinweisung_Bis);
if (dateTextBox != null)
{
System.Reflection.PropertyInfo piWatermark = dateTextBox.GetType()
.GetProperty("Watermark", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
if (piWatermark != null)
{
return (string)piWatermark.GetValue(dateTextBox, null);
}
}
}
return "";
}
private void TbBeauftragte_Leistung_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab)
{
dpArbeitsbeginn.Focus();
dpArbeitsbeginn.IsDropDownOpen = true;
}
if (e.Key != Key.OemComma)
{
e.Handled = false;
return;
}
else
{
MessageBox.Show(this, "Komma (',') ist ein nicht erlaubtes Zeichen", "Achtung", MessageBoxButton.OK, MessageBoxImage.Information);
e.Handled = true;
}
return;
}
private void DpArbeitsbeginn_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab)
{
dpArbeitsbeginn.IsDropDownOpen = false;
dpArbeitsende.Focus();
dpArbeitsende.IsDropDownOpen = true;
}
}
private void DpArbeitsende_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab)
{
dpArbeitsende.IsDropDownOpen = false;
dpEinweisung_Bis.Focus();
dpEinweisung_Bis.IsDropDownOpen = true;
}
}
private void DpEinweisung_Bis_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab)
{
dpEinweisung_Bis.IsDropDownOpen = false;
dpEinweisung_Bis.Focus();
}
}
private void dgFirmen_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (dgFirmen.SelectedIndex != -1) btnDelete.IsEnabled = true;
else btnDelete.IsEnabled = false;
//ScrollTo();
}
private async void btnDelete_Click(object sender, RoutedEventArgs e)
{
var dg = dgFirmen;
var row = dg.SelectedItem as DataRowView;
var arr = row.Row.ItemArray;
if (MessageBox.Show(this, $"Markierte Firma '{arr[1]}' wirklich entfernen?", "Firma entfernen?", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes)
{
deleteRow(arr);
}
}
private async void deleteRow(object[] arr)
{
//await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.firmenLog (idfirmen,Name,Verantwortlicher_MA_Firma,Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleiter,Anzahl_Fzg,Beauftragte_Leistung,Arbeitsbeginn,Arbeitsende,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Geloescht_Von) VALUES " +
// $"('{arr[0]}','{arr[1].ToString()}','{arr[2].ToString()}','{arr[3].ToString()}','{arr[4].ToString()}','{arr[5].ToString()}','{arr[6].ToString()}','{Convert.ToDateTime(arr[7].ToString()).ToString("yyyy-MM-dd")}','{Convert.ToDateTime(arr[8].ToString()).ToString("yyyy-MM-dd")}','{arr[10].ToString()}','{arr[11].ToString()}','{Environment.UserName}')");
await SQL.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.firmenLog (idfirmen,Name,Verantwortlicher_MA_Firma,Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleiter,Anzahl_Fzg,Beauftragte_Leistung,Arbeitsbeginn,Arbeitsende,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Geloescht_Von) VALUES " +
$"(@idfirmen,@Name,@Verantwortlicher_MA_Firma,@Tel_Nr_Verantwortlicher_Firma,@Anzahl_Begleiter,@Anzahl_Fzg,@Beauftragte_Leistung,@Arbeitsbeginn,@Arbeitsende,@Ansprechpartner_Intern,@Tel_Nr_Ansprechpartner_Intern,@Geloescht_Von)", new List<MySqlParameter>()
{
new MySqlParameter("@idfirmen",arr[0]),
new MySqlParameter("@Name",arr[1].ToString()),
new MySqlParameter("@Verantwortlicher_MA_Firma",arr[2].ToString()),
new MySqlParameter("@Tel_Nr_Verantwortlicher_Firma",arr[3].ToString()),
new MySqlParameter("@Anzahl_Begleiter",arr[4].ToString()),
new MySqlParameter("@Anzahl_Fzg",arr[5].ToString()),
new MySqlParameter("@Beauftragte_Leistung", arr[6].ToString()),
new MySqlParameter("@Arbeitsbeginn", Convert.ToDateTime(arr[7].ToString()).ToString("yyyy-MM-dd")),
new MySqlParameter("@Arbeitsende", Convert.ToDateTime(arr[8].ToString()).ToString("yyyy-MM-dd")),
new MySqlParameter("@Ansprechpartner_Intern", arr[10].ToString()),
new MySqlParameter("@Tel_Nr_Ansprechpartner_Intern", arr[11].ToString()),
new MySqlParameter("@Geloescht_Von", Environment.UserName)
});
await SQL.WriteSQL($"DELETE FROM {MainWindow.table}.firmen WHERE `idFirmen` = '{arr[0]}'");
await SQL.WriteSQL($"DELETE FROM {MainWindow.table}.fzgAnmeldung WHERE `idFirmen` = '{arr[0]}'");
updateList();
}
private void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
System.Diagnostics.Debug.WriteLine("PropertyChanged " + propertyName);
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
private void TextBoxes_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key != Key.OemComma)
{
e.Handled = false;
return;
}
else
{
MessageBox.Show(this, "Komma (',') ist ein nicht erlaubtes Zeichen", "Achtung", MessageBoxButton.OK, MessageBoxImage.Information);
e.Handled = true;
}
return;
}
string oldValue = "";
private void dgFirmen_PreparingCellForEdit(object sender, DataGridPreparingCellForEditEventArgs e)
{
if (e.Column.Header.ToString() == "Anspr. intern")
oldValue = (e.EditingElement as ComboBox) != null ? (e.EditingElement as ComboBox).Text : "";
else
oldValue = (e.EditingElement as TextBox) != null ? (e.EditingElement as TextBox).Text : "";
}
private void dg_cbASP_DropDownOpened(object sender, EventArgs e)
{
oldValue = (sender as ComboBox) != null ? (sender as ComboBox).Text : "";
}
private async void dg_cbAsp_DropDownClosed(object sender, EventArgs e)
{
var box = sender as ComboBox;
DataGridRow dataGridRow = Helper.FindParent<DataGridRow>(box);
int index = dataGridRow.GetIndex();
var id = ((System.Data.DataRowView)dataGridRow.DataContext).Row.ItemArray[0];
if ((sender as ComboBox).SelectedIndex != -1 && (sender as ComboBox).SelectedItem.ToString() != "")
{
if (oldValue != box.Text)
{
if (MessageBox.Show(this, $"Möchten Sie den Eintrag '{oldValue}' in der Spalte 'Anspr. intern' sicher zu '{box.Text}' ändern?", "Sicher ändern?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET Ansprechpartner_Intern = '{box.Text}',Tel_Nr_Ansprechpartner_Intern = '{SQL.ReadSingleValue($"SELECT Tel_Nr FROM {MainWindow.table}.ansprechpartner WHERE Name = '{(sender as ComboBox).Text}'")}', Bearbeiter = '{Environment.UserName}' WHERE idfirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET Ansprechpartner_Intern = @box,Tel_Nr_Ansprechpartner_Intern = {SQL.ReadSingleValue($"SELECT Tel_Nr FROM {MainWindow.table}.ansprechpartner WHERE Name = '{(sender as ComboBox).Text}'")}, Bearbeiter = @UserName WHERE idfirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@box", box.Text),
new MySqlParameter("@UserName", Environment.UserName),
new MySqlParameter("@id", id)
});
updateList();
dgFirmen.RowValidationErrorTemplate = new ControlTemplate();
dgFirmen.SelectedIndex = (index);
dgFirmen.ScrollIntoView(dgFirmen.Items[index]);
}
}
}
else
{
//tbAnsprechp_Intern.Text = "";
//tbTel_Ansprechp.Text = "";
}
}
private void dg_cbBE_DropDownOpened(object sender, EventArgs e)
{
oldValue = (sender as ComboBox) != null ? (sender as ComboBox).Text : "";
}
private async void dg_cbBE_DropDownClosed(object sender, EventArgs e)
{
var box = sender as ComboBox;
DataGridRow dataGridRow = Helper.FindParent<DataGridRow>(box);
int index = dataGridRow.GetIndex();
var id = ((System.Data.DataRowView)dataGridRow.DataContext).Row.ItemArray[0];
if ((sender as ComboBox).SelectedIndex != -1 && (sender as ComboBox).SelectedItem.ToString() != "")
{
if (oldValue != box.Text)
{
if (MessageBox.Show(this, $"Möchten Sie den Eintrag '{oldValue}' in der Spalte 'BE-Fläche' sicher zu '{box.Text}' ändern?", "Sicher ändern?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET BE = '{box.Text}',BEint = '{box.SelectedIndex}', Bearbeiter = '{Environment.UserName}' WHERE idfirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET BE = @box,BEint = @box_SelectedIndex, Bearbeiter = @UserName WHERE idfirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@box", box.Text),
new MySqlParameter("@box_SelectedIndex", box.Text.Split(' ')[1]),
new MySqlParameter("@UserName", Environment.UserName),
new MySqlParameter("@id", id)
});
updateList();
dgFirmen.RowValidationErrorTemplate = new ControlTemplate();
dgFirmen.SelectedIndex = (index);
dgFirmen.ScrollIntoView(dgFirmen.Items[index]);
}
}
}
else if ((sender as ComboBox).SelectedIndex != -1 && (sender as ComboBox).SelectedItem.ToString() == "")
{
if (oldValue != box.Text)
{
if (MessageBox.Show(this, $"Möchten Sie den Eintrag '{oldValue}' in der Spalte 'BE-Fläche' sicher leeren?", "Sicher ändern?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET BE = '{box.Text}',BEint = '{box.SelectedIndex}', Bearbeiter = '{Environment.UserName}' WHERE idfirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET BE = @box,BEint = @box_SelectedBE, Bearbeiter = @UserName WHERE idfirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@box", box.Text),
new MySqlParameter("@box_SelectedBE", box.Text.Split(' ')[1]),
new MySqlParameter("@UserName", Environment.UserName),
new MySqlParameter("@id", id)
});
updateList();
dgFirmen.RowValidationErrorTemplate = new ControlTemplate();
dgFirmen.SelectedIndex = (index);
dgFirmen.ScrollIntoView(dgFirmen.Items[index]);
}
}
}
}
private void btnHelp_Click(object sender, RoutedEventArgs e)
{
canvasHelp.Visibility = Visibility.Visible;
}
private void btnCloseHelp_Click(object sender, RoutedEventArgs e)
{
canvasHelp.Visibility = Visibility.Collapsed;
}
private void tbAnzahl_Fzg_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
if ((sender as TextBox).Text.Length >= 2) e.Handled = true;
if (!System.Text.RegularExpressions.Regex.IsMatch(e.Text, "^[0-9]*$")) e.Handled = true;
}
private void tbAnzahl_Begleiter_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
if ((sender as TextBox).Text.Length >= 2) e.Handled = true;
if (!System.Text.RegularExpressions.Regex.IsMatch(e.Text, "^[0-9]*$")) e.Handled = true;
}
private void Textboxes_PreviewExecuted(object sender, ExecutedRoutedEventArgs e)
{
if (e.Command == ApplicationCommands.Paste)
{
e.Handled = true;
}
}
private void tbTel_Nr_Ansprechpartner_Intern_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
if (Helper.OverMaxLength((sender as TextBox).Text, 45))
{
e.Handled = true;
MessageBox.Show("Maximal 45 Zeichen!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
private void dpArbeitsbeginn_DateValidationError(object sender, DatePickerDateValidationErrorEventArgs e)
{
MessageBox.Show("Kein gültiges Datumsformat in Feld 'Arbeitsbeginn'", "Fehler", MessageBoxButton.OK, MessageBoxImage.Warning);
}
private void dpEinweisung_Bis_DateValidationError(object sender, DatePickerDateValidationErrorEventArgs e)
{
MessageBox.Show("Kein gültiges Datumsformat in Feld 'Einweisung bis'", "Fehler", MessageBoxButton.OK, MessageBoxImage.Warning);
}
private void dpArbeitsende_DateValidationError(object sender, DatePickerDateValidationErrorEventArgs e)
{
MessageBox.Show("Kein gültiges Datumsformat in Feld 'Arbeitsende'", "Fehler", MessageBoxButton.OK, MessageBoxImage.Warning);
}
private void TextBox_GotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
oldValue = (sender as TextBox).Text;
}
private async void TextBox_LostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
var textBoxes = Helper.FindVisualChildren<TextBox>(dgFirmen).Where(tb => tb.Name == "tbdgAnzBegleit");
foreach (var textBox in textBoxes)
{
textBox.LostKeyboardFocus -= TextBox_LostKeyboardFocus;
textBox.GotKeyboardFocus -= TextBox_GotKeyboardFocus;
}
if (oldValue != (sender as TextBox).Text && !string.IsNullOrWhiteSpace((sender as TextBox).Text))
{
if (MessageBox.Show(this, $"Möchten Sie den Eintrag '{oldValue}' in der Spalte 'Anz. Begleitp.' sicher zu '{(sender as TextBox).Text}' ändern?", "Sicher ändern?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
var tb = sender as TextBox;
DataGridRow dataGridRow = Helper.FindParent<DataGridRow>(tb);
int index = dataGridRow.GetIndex();
var id = (DataGridRow.GetRowContainingElement((sender as TextBox)).Item as DataRowView).Row.ItemArray[0];
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET Arbeitsbeginn = '{(sender as DatePicker).SelectedDate.Value.ToString("yyyy-MM-dd")}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET Anzahl_Begleiter = @AnzBegleit, Bearbeiter = @UserName WHERE idFirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@AnzBegleit", (sender as TextBox).Text),
new MySqlParameter("@UserName", Environment.UserName),
new MySqlParameter("@id", id)
});
}
}
foreach (var textBox in textBoxes)
{
textBox.LostKeyboardFocus += TextBox_LostKeyboardFocus;
textBox.GotKeyboardFocus += TextBox_GotKeyboardFocus;
}
}
private void dpDataGridArbeitsbeginn_CalendarOpened(object sender, RoutedEventArgs e)
{
oldValue = (sender as DatePicker).Text;
}
private async void dpDataGridArbeitsbeginn_CalendarClosed(object sender, RoutedEventArgs e)
{
try
{
if (oldValue != (sender as DatePicker).Text && (sender as DatePicker).SelectedDate.HasValue)
{
if (MessageBox.Show(this, $"Möchten Sie den Eintrag '{oldValue}' in der Spalte 'Arbeitsbeginn' sicher zu '{(sender as DatePicker).Text}' ändern?", "Sicher ändern?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
var dp = sender as DatePicker;
DataGridRow dataGridRow = Helper.FindParent<DataGridRow>(dp);
int index = dataGridRow.GetIndex();
var id = (DataGridRow.GetRowContainingElement((sender as DatePicker)).Item as DataRowView).Row.ItemArray[0];
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET Arbeitsbeginn = '{(sender as DatePicker).SelectedDate.Value.ToString("yyyy-MM-dd")}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET Arbeitsbeginn = @Date, Bearbeiter = @UserName WHERE idFirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@Date", (sender as DatePicker).SelectedDate.Value.ToString("yyyy-MM-dd")),
new MySqlParameter("@UserName", Environment.UserName),
new MySqlParameter("@id", id)
});
if (Convert.ToDateTime(SQL.ReadSingleValue($"SELECT Arbeitsende FROM {MainWindow.table}.firmen WHERE idFirmen = '{id}'")) < (sender as DatePicker).SelectedDate.Value)
{
MessageBox.Show(this, "Arbeitsende darf nicht kleiner als Arbeitsbeginn sein\nDatum wird automatisch angepasst", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET Arbeitsende = '{(sender as DatePicker).SelectedDate.Value.ToString("yyyy-MM-dd")}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET Arbeitsende = @Date, Bearbeiter = @UserName WHERE idFirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@Date", (sender as DatePicker).SelectedDate.Value.ToString("yyyy-MM-dd")),
new MySqlParameter("@UserName", Environment.UserName),
new MySqlParameter("@id", id)
});
}
updateList();
dgFirmen.SelectedIndex = (index);
dgFirmen.ScrollIntoView(dgFirmen.Items[index]);
}
else (sender as DatePicker).SelectedDate = Convert.ToDateTime(oldValue);
}
}
catch (Exception ex)
{
Log.WriteLog(ex.ToString());
}
}
private void dpDataGridArbeitsende_CalendarOpened(object sender, RoutedEventArgs e)
{
oldValue = (sender as DatePicker).Text;
}
private async void dpDataGridArbeitsende_CalendarClosed(object sender, RoutedEventArgs e)
{
try
{
if (oldValue != (sender as DatePicker).Text && (sender as DatePicker).SelectedDate.HasValue)
{
if (MessageBox.Show(this, $"Möchten Sie den Eintrag '{oldValue}' in der Spalte 'Arbeitsende' sicher zu '{(sender as DatePicker).Text}' ändern?", "Sicher ändern?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
var dp = sender as DatePicker;
DataGridRow dataGridRow = Helper.FindParent<DataGridRow>(dp);
int index = dataGridRow.GetIndex();
var id = (DataGridRow.GetRowContainingElement((sender as DatePicker)).Item as DataRowView).Row.ItemArray[0];
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET Arbeitsende = '{(sender as DatePicker).SelectedDate.Value.ToString("yyyy-MM-dd")}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET Arbeitsende = @Date, Bearbeiter = @UserName WHERE idFirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@Date", (sender as DatePicker).SelectedDate.Value.ToString("yyyy-MM-dd")),
new MySqlParameter("@UserName", Environment.UserName),
new MySqlParameter("@id", id)
});
if (Convert.ToDateTime(SQL.ReadSingleValue($"SELECT Arbeitsbeginn FROM {MainWindow.table}.firmen WHERE idFirmen = '{id}'")) > (sender as DatePicker).SelectedDate.Value)
{
MessageBox.Show(this, "Arbeitsbeginn darf nicht größer als Arbeitsende sein\nDatum wird automatisch angepasst", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET Arbeitsbeginn = '{(sender as DatePicker).SelectedDate.Value.ToString("yyyy-MM-dd")}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET Arbeitsbeginn = @Date, Bearbeiter = @UserName WHERE idFirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@Date", (sender as DatePicker).SelectedDate.Value.ToString("yyyy-MM-dd")),
new MySqlParameter("@UserName", Environment.UserName),
new MySqlParameter("@id", id)
});
}
updateList();
dgFirmen.SelectedIndex = (index);
dgFirmen.ScrollIntoView(dgFirmen.Items[index]);
}
else
{
DateTime result = DateTime.Now;
var date = DateTime.TryParse(oldValue, out result);
if (date)
(sender as DatePicker).SelectedDate = result;
else MessageBox.Show("Fehlerhaftes Datum gewählt", "Fehlerhaftes Datum", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
}
catch (Exception ex)
{
Log.WriteLog(ex.ToString());
}
}
private void dpDataGridEinweisung_CalendarOpened(object sender, RoutedEventArgs e)
{
oldValue = (sender as DatePicker).Text;
}
private async void dpDataGridEinweisung_CalendarClosed(object sender, RoutedEventArgs e)
{
if (oldValue != (sender as DatePicker).Text)
{
var newValue = (sender as DatePicker).Text;
switch ((sender as DatePicker).Text)
{
case "01.01.1902":
newValue = "Einweisung folgt";
break;
case "01.01.1903":
newValue = "Nur in Begleitung";
break;
}
if (MessageBox.Show(this, $"Möchten Sie den Eintrag '{oldValue}' in der Spalte 'Einweisung bis' sicher zu '{newValue}' ändern?", "Sicher ändern?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
var dp = sender as DatePicker;
DataGridRow dataGridRow = Helper.FindParent<DataGridRow>(dp);
int index = dataGridRow.GetIndex();
var id = (DataGridRow.GetRowContainingElement((sender as DatePicker)).Item as DataRowView).Row.ItemArray[0];
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET Örtliche_Einweisung_bis = '{(sender as DatePicker).SelectedDate.Value.ToString("yyyy-MM-dd")}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.firmen SET Örtliche_Einweisung_bis = @Date, Bearbeiter = @UserName WHERE idFirmen = @id", new List<MySqlParameter>()
{
new MySqlParameter("@Date", (sender as DatePicker).SelectedDate.Value.ToString("yyyy-MM-dd")),
new MySqlParameter("@UserName", Environment.UserName),
new MySqlParameter("@id", id)
});
updateList();
dgFirmen.SelectedIndex = (index);
dgFirmen.ScrollIntoView(dgFirmen.Items[index]);
}
else (sender as DatePicker).SelectedDate = Convert.ToDateTime(oldValue);
}
}
//private async void TelNrVerantwortlicher_LostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
//{
// if (oldValue != (sender as TextBox).Text)
// {
// if (MessageBox.Show(this, $"Möchten Sie den Eintrag '{oldValue}' in der Spalte 'Tel. Firma' sicher zu '{(sender as TextBox).Text}' ändern?", "Sicher ändern?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question) == MessageBoxResult.Yes)
// {
// var dp = sender as TextBox;
// DataGridRow dataGridRow = Helper.FindParent<DataGridRow>(dp);
// int index = dataGridRow.GetIndex();
// var id = (DataGridRow.GetRowContainingElement((sender as TextBox)).Item as DataRowView).Row.ItemArray[0];
// await SQL.WriteSQL($"UPDATE {MainWindow.table}.firmen SET Tel_Nr_Verantwortlicher_Firma = '{(sender as TextBox).Text}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
// updateList();
// dgFirmen.SelectedIndex = (index);
// dgFirmen.ScrollIntoView(dgFirmen.Items[index]);
// }
// else (sender as TextBox).Text = oldValue;
// }
//}
private void btnDpDgEinweisung_ToolTipOpening(object sender, ToolTipEventArgs e)
{
string unit = "";
string date = "";
switch ((sender as Button).Name)
{
case "btnDpDgEinweisungWoche":
unit = "Woche";
date = DateTime.Now.Date.AddDays(7).ToShortDateString();
break;
case "btnDpDgEinweisungMonat":
unit = "Monat";
date = DateTime.Now.Date.AddMonths(1).ToShortDateString();
break;
case "btnDpDgEinweisungJahr":
unit = "Jahr";
date = DateTime.Now.Date.AddYears(1).ToShortDateString();
break;
default:
unit = "Woche";
date = DateTime.Now.Date.AddDays(7).ToShortDateString();
break;
}
(sender as Button).ToolTip = $"Setzt das Einweisungsdatum auf Heute + 1 {unit} ({date})";
}
private void btnDpDgEinweisung_Click(object sender, RoutedEventArgs e)
{
var btn = sender as Button;
DataGridRow dataGridRow = Helper.FindParent<DataGridRow>(btn);
var dp = (dgFirmen.Columns[8].GetCellContent(dataGridRow) as ContentPresenter).ContentTemplate.FindName("dpDataGridEinweisung", (dgFirmen.Columns[8].GetCellContent(dataGridRow) as ContentPresenter)) as DatePicker;
oldValue = dp.Text;
switch (btn.Name)
{
case "btnDpDgEinweisungWoche":
dp.SelectedDate = DateTime.Now.Date.AddDays(7);
break;
case "btnDpDgEinweisungMonat":
dp.SelectedDate = DateTime.Now.Date.AddMonths(1);
break;
case "btnDpDgEinweisungJahr":
dp.SelectedDate = DateTime.Now.Date.AddYears(1);
break;
case "btnDpDgEinweisungFolgt":
dp.SelectedDate = DateTime.Parse("01.01.1902");
break;
case "btnDpDgEinweisungBegleitung":
dp.SelectedDate = DateTime.Parse("01.01.1903");
break;
default:
dp.SelectedDate = DateTime.Now.Date.AddDays(7);
break;
}
dpDataGridEinweisung_CalendarClosed(dp, null);
}
string searchTerm = "";
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
if (searchTerm == "")
{
lblSearch.Visibility = Visibility.Visible;
searchProgress.Visibility = Visibility.Visible;
}
else
{
lblSearch.Visibility = Visibility.Collapsed;
searchProgress.Visibility = Visibility.Visible;
}
searchTerm = (sender as TextBox).Text;
searchTimer.Start();
//SearchTimer_Tick(null, null);
}
private void SearchTimer_Tick(object sender, EventArgs e)
{
if (searchTerm == "")
{
firmen.DefaultView.RowFilter = $"";
//Task.Run(() => FirmaView = Firma.DataTableToFirma(firmen));
//dgFirmen.DataContext = firmen;
}
else if (searchTerm.Length < 6)
{
firmen.DefaultView.RowFilter = $"Name LIKE '%{searchTerm}%' OR Verantwortlicher_MA_Firma LIKE '%{searchTerm}%'";
//dgFirmen.DataContext = firmen;
}
else
{
List<string> similarities = new List<string>();
foreach (var item in firmen.Rows)
{
var ratio = Fuzz.Ratio(tbSearch.Text.ToLower(), (item as DataRow).ItemArray[1].ToString().ToLower());
if (ratio > 70) Debug.WriteLine(ratio, (item as DataRow).ItemArray[1].ToString().ToLower());
if (ratio > 70)
similarities.Add((item as DataRow).ItemArray[1].ToString());
ratio = Fuzz.Ratio(tbSearch.Text.ToLower(), (item as DataRow).ItemArray[2].ToString().ToLower());
if (ratio > 70)
similarities.Add((item as DataRow).ItemArray[2].ToString());
ratio = Fuzz.Ratio(tbSearch.Text.ToLower(), (item as DataRow).ItemArray[6].ToString().ToLower());
if (ratio > 70)
similarities.Add((item as DataRow).ItemArray[6].ToString());
}
StringBuilder str = new StringBuilder();
str.Append($"Name LIKE '%");
if (similarities.Count > 0)
{
foreach (var s in similarities)
str.Append($"{s}%' OR Name LIKE '%");
str.Remove(str.Length - 16, 16);
str.Append(" OR Verantwortlicher_MA_Firma LIKE '%");
foreach (var s in similarities)
str.Append($"{s}%' OR Ansprechpartner_Intern LIKE '%");
str.Remove(str.Length - 34, 34);
str.Append(" OR Beauftragte_Leistung LIKE '%");
foreach (var s in similarities)
str.Append($"{s}%' OR Beauftragte_Leistung LIKE '%");
str.Remove(str.Length - 31, 31);
firmen.DefaultView.RowFilter = str.ToString();
//dgFirmen.DataContext = firmen;
}
else
{
firmen.DefaultView.RowFilter = $"Name LIKE '%{searchTerm}%' OR Verantwortlicher_MA_Firma LIKE '%{searchTerm}%'";
//dgFirmen.DataContext = new DataTable();
}
}
searchProgress.Visibility = Visibility.Collapsed;
searchTimer.Stop();
}
private void tbTel_Firma_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
if (!System.Text.RegularExpressions.Regex.IsMatch(e.Text, "^[0-9()+\\-/ ]*$"))
{
e.Handled = true;
new Popup() { Child = new TextBlock() { Text = $"'{e.Text}' ist kein gültiges Zeichen\nTelefonnummer muss qualifiziert eingetragen werden!", Foreground = new SolidColorBrush(Colors.White), Margin = new Thickness(5) }, IsOpen = true, StaysOpen = false, Placement = PlacementMode.Mouse };
}
}
private async void btnBegleiter_Click(object sender, RoutedEventArgs e)
{
AddFirmenList aFl = new AddFirmenList(false, 0, !string.IsNullOrWhiteSpace(tbAnzahl_Begleiter.Text) ? Convert.ToInt32(tbAnzahl_Begleiter.Text) : 0);
aFl.ShowDialog();
if (aFl.DialogResult.Value)
{
Personen = aFl.Personen;
TelNr = aFl.TelNr;
}
}
ToolTip tt = new ToolTip();
private void tbName_TextChanged(object sender, TextChangedEventArgs e)
{
existingFirmenTimer.Stop();
existingFirmenTimer.Start();
}
private void ExistingFirmenTimer_Tick(object sender, EventArgs e)
{
ShowExistingFirmen();
existingFirmenTimer.Stop();
}
private void ShowExistingFirmen()
{
if (tbName.Text.ToLower().StartsWith("fa") || tbName.Text.ToLower().StartsWith("firma"))
{
tt.Placement = PlacementMode.RelativePoint;
tt.PlacementTarget = tbName;
tt.HorizontalOffset = tbName.Width * .75;
//tt.VerticalOffset = -(tbName.Height + tt.ActualHeight);
tt.Width = tbName.Width * 1.5;
tt.Background = new SolidColorBrush(Colors.Red);
//tt.StaysOpen = false;
tt.Content = new Grid();
(tt.Content as Grid).Background = new SolidColorBrush(Colors.DarkBlue);
(tt.Content as Grid).Children.Add(new StackPanel());
((tt.Content as Grid).Children[0] as StackPanel).Children.Add(new TextBlock()
{
Text = "Firmen bitte nicht mit Firma oder Fa. oder ähnlichem Präfix eintragen\n" +
"Dies dient der Übersichtlichkeit, va. für den Pförtner\n" +
"Beispiele:\n\n" +
"DB Fernverkehr\n" +
"DB Fernverkehr AG\n" +
"Maler Müller\n\n" +
"Schlechte Eintragung:\n" +
"Fa. Maler Müller\n" +
"Firma DB Fernverkehr"
});
tt.IsOpen = true;
return;
}
List<Tuple<int, string>> similarities = new List<Tuple<int, string>>();
foreach (var item in firmenSearchList)
{
if (item.Value.Count > 0)
{
foreach (var val in item.Value)
{
var ratio = Fuzz.Ratio(tbName.Text.ToLower(), val.ToLower());
if (ratio > 80)
similarities.Add(new Tuple<int, string>(ratio, item.Key));
else if (!string.IsNullOrWhiteSpace(tbName.Text) && val.ToLower().StartsWith(tbName.Text.ToLower()))
similarities.Add(new Tuple<int, string>(50, val));
}
}
else if (Fuzz.Ratio(tbName.Text.ToLower(), item.Key.ToLower()) > 80)
similarities.Add(new Tuple<int, string>(100, item.Key));
else if (!string.IsNullOrWhiteSpace(tbName.Text) && item.Key.ToLower().StartsWith(tbName.Text.ToLower()))
similarities.Add(new Tuple<int, string>(65, item.Key));
}
similarities = similarities.OrderByDescending(p => p.Item1).ToList();
if (similarities.Count > 0)
{
tt.Placement = PlacementMode.RelativePoint;
tt.PlacementTarget = tbName;
tt.HorizontalOffset = tbName.Width * .75;
//tt.VerticalOffset = -(tbName.Height + tt.ActualHeight);
tt.Width = tbName.Width * 1.5;
tt.Background = new SolidColorBrush(Colors.Red);
//tt.StaysOpen = false;
tt.Content = new Grid();
(tt.Content as Grid).Background = new SolidColorBrush(Colors.Red);
(tt.Content as Grid).Children.Add(new StackPanel());
((tt.Content as Grid).Children[0] as StackPanel).Children.Add(new TextBlock()
{
Text = "Firmen nicht doppelt anlegen!\n\n" +
"Firma schon vorhanden und nicht für mehrere verschiedene Maßnahmen gleichzeitig vor Ort?\n" +
"-> Bitte den vorhandenen Eintrag anpassen\n\nMeinen Sie:\n"
});
foreach (var item in similarities.Select(p => p.Item2).Distinct())
((tt.Content as Grid).Children[0] as StackPanel).Children.Add(new TextBlock() { Text = Helper.FirstCharToUpperCase(item) });
tt.IsOpen = true;
tbName.ToolTip = tt;
}
else
{
tt.IsOpen = false;
tbName.ToolTip = tt;
}
}
private void Window_Closing(object sender, CancelEventArgs e)
{
tt.IsOpen = false;
}
private void tbName_LostFocus(object sender, RoutedEventArgs e)
{
tt.IsOpen = false;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
dgFirmen.SelectionChanged += dgFirmen_SelectionChanged;
this.LocationChanged -= Window_LocationChanged;
Helper.CheckWindowIsInScreenSpace(this);
this.LocationChanged += Window_LocationChanged;
}
private void Window_LocationChanged(object sender, EventArgs e)
{
this.LocationChanged -= Window_LocationChanged;
Helper.CheckWindowIsInScreenSpace(this);
this.LocationChanged += Window_LocationChanged;
}
private async void btnEdit_Click(object sender, RoutedEventArgs e)
{
var row = ((Helper.FindParent<ContentPresenter>((sender as Button).Parent as StackPanel)).Content as DataRowView).Row.ItemArray;
AddFirmenList aFl = new AddFirmenList(true, (int)row[0], Convert.ToInt32(row[4]));
aFl.ShowDialog();
updateList();
}
private void cbBE_MouseEnter(object sender, MouseEventArgs e)
{
if (MainWindow.LoggedInRole == Roles.M2 || MainWindow.LoggedInRole == Roles.M2_AM || MainWindow.LoggedInRole == Roles.Admin)
{
if ((cbBE.Items).Count > 0)
{
M2WithGebuchterBETooltipPopup.PlacementTarget = sender as Grid;
M2WithGebuchterBETooltipPopup.Placement = PlacementMode.Mouse;
//M2WithGebuchterBETooltipPopup.IsOpen = true;
// Popup-Zustand komplett zurücksetzen
M2WithGebuchterBETooltipPopup.IsOpen = false;
M2WithGebuchterBETooltipPopup.UpdateLayout();
// Nach dem nächsten Layout-Zyklus öffnen
Dispatcher.BeginInvoke(new Action(() =>
{
if (IsMouseOver) // Prüfen ob Maus noch da ist
{
M2WithGebuchterBETooltipPopup.IsOpen = true;
popCloseTimer.Start();
}
}), DispatcherPriority.Input);
}
else
{
M2WithoutGebuchterBETooltipPopup.PlacementTarget = sender as Grid;
M2WithoutGebuchterBETooltipPopup.Placement = PlacementMode.Mouse;
//M2WithoutGebuchterBETooltipPopup.IsOpen = true;
// Popup-Zustand komplett zurücksetzen
M2WithoutGebuchterBETooltipPopup.IsOpen = false;
M2WithoutGebuchterBETooltipPopup.UpdateLayout();
// Nach dem nächsten Layout-Zyklus öffnen
Dispatcher.BeginInvoke(new Action(() =>
{
if (IsMouseOver) // Prüfen ob Maus noch da ist
{
M2WithoutGebuchterBETooltipPopup.IsOpen = true;
popCloseTimer.Start();
}
}), DispatcherPriority.Input);
}
}
else
{
NotM2TooltipPopup.PlacementTarget = sender as Grid;
NotM2TooltipPopup.Placement = PlacementMode.Mouse;
NotM2TooltipPopup.IsOpen = true;
}
}
private void TooltipPopup_Closed(object sender, EventArgs e)
{
popCloseTimer.Stop();
}
}
//public class Firma
//{
// public string Name;
// string Verantwortlicher_MA_Firma;
// string Tel_Nr_Verantwortlicher_Firma;
// string Anzahl_Begleiter;
// string Anzahl_Fzg;
// string Beauftragte_Leistung;
// string Arbeitsbeginn;
// string Arbeitsende;
// string Örtliche_Einweisung_bis;
// string Ansprechpartner_Intern;
// string Tel_Nr_Ansprechpartner_Intern;
// public static List<Firma> DataTableToFirma(System.Data.DataTable dataTable)
// {
// List<Firma> x = new List<Firma>();
// foreach (DataRow dr in dataTable.Rows)
// {
// x.Add(new Firma()
// {
// Name = dr[1].ToString(),
// Verantwortlicher_MA_Firma = dr[2].ToString(),
// Tel_Nr_Verantwortlicher_Firma = dr[3].ToString(),
// Anzahl_Begleiter = dr[4].ToString(),
// Anzahl_Fzg = dr[5].ToString(),
// Beauftragte_Leistung = dr[6].ToString(),
// Arbeitsbeginn = dr[7].ToString(),
// Arbeitsende = dr[8].ToString(),
// Örtliche_Einweisung_bis = dr[9].ToString(),
// Ansprechpartner_Intern = dr[10].ToString(),
// Tel_Nr_Ansprechpartner_Intern = dr[11].ToString()
// });
// }
// return x;
// }
//}
}