2243 lines
127 KiB
C#
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;
|
|
// }
|
|
//}
|
|
}
|