Auf SSL umgestellt Bug behoben der es ermöglicht hat mehere Besucher ohne Namen einzutragen
322 lines
16 KiB
C#
322 lines
16 KiB
C#
using MahApps.Metro.Controls;
|
|
using MySql.Data.MySqlClient;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Security.RightsManagement;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Data;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Shapes;
|
|
|
|
namespace ZKuP
|
|
{
|
|
/// <summary>
|
|
/// Interaktionslogik für AddVisitorsList.xaml
|
|
/// </summary>
|
|
public partial class AddVisitorsList : MetroWindow
|
|
{
|
|
public int GroupID { get; private set; }
|
|
int width = 0;
|
|
bool _isEdit = false;
|
|
int _idBesucher = 0;
|
|
|
|
public AddVisitorsList(int VisitorCount, bool isEdit = false, int idBesucher = 0)
|
|
{
|
|
InitializeComponent();
|
|
|
|
BuildWindow(VisitorCount);
|
|
|
|
if (isEdit)
|
|
{
|
|
_isEdit = isEdit;
|
|
_idBesucher = idBesucher;
|
|
btnAdd.Visibility = Visibility.Visible;
|
|
|
|
var list = SQL.ReadSingleValue($"SELECT besucherList FROM {MainWindow.table}.besucherGroups WHERE idbesucher = '{idBesucher}'").Split(';');
|
|
|
|
if (list.Length > 0)
|
|
{
|
|
var boxes = Helper.FindVisualChildren<TextBox>(spGroup).ToList();
|
|
|
|
for (var i = 0; i < Helper.FindVisualChildren<TextBox>(spGroup).Count(); i++)
|
|
{
|
|
if (list.Length > i && !string.IsNullOrWhiteSpace(list[i]))
|
|
boxes[i].Text = list[i];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void BuildWindow(int besucherAnzahl)
|
|
{
|
|
int maxProSpalte = 10; // Maximale Anzahl an Textfeldern pro Spalte
|
|
|
|
// PanelsContainer soll die WrapPanels halten
|
|
spGroup.Children.Clear(); // Vorherige Panels entfernen (falls schon welche existieren)
|
|
|
|
// Erstelle die WrapPanels und füge sie dem StackPanel hinzu
|
|
int columnCount = (int)Math.Ceiling((double)besucherAnzahl / maxProSpalte);
|
|
|
|
for (int i = 0; i < columnCount; i++)
|
|
{
|
|
WrapPanel wrapPanel = new WrapPanel
|
|
{
|
|
Orientation = Orientation.Vertical, // Jedes WrapPanel wird vertikal sein
|
|
Margin = new Thickness(10),
|
|
Width = 300
|
|
};
|
|
|
|
// Für jedes WrapPanel Textfelder hinzufügen
|
|
for (int j = 0; j < maxProSpalte && (i * maxProSpalte + j) < besucherAnzahl; j++)
|
|
{
|
|
var sp = new StackPanel();
|
|
var lbl = new TextBlock() { Text = $"Begleitperson Nr. {i * maxProSpalte + j + 1}:", Margin = new Thickness(5), Height = 20 };
|
|
lbl.SetResourceReference(Control.ForegroundProperty, SystemColors.ControlTextBrushKey);
|
|
sp.Children.Add(lbl);
|
|
var tb = new TextBox() { Margin = new Thickness(10, 0, 10, 0), Height = 30, Width = 280, ToolTip = "Um eine Person zu entfernen, Feld leer lassen" };
|
|
ToolTipService.SetInitialShowDelay(tb, 200);
|
|
MahApps.Metro.Controls.TextBoxHelper.SetWatermark(tb, "Vorname Nachname");
|
|
sp.Children.Add(tb);
|
|
|
|
|
|
wrapPanel.Children.Add(sp);
|
|
}
|
|
|
|
// Das WrapPanel zum StackPanel hinzufügen
|
|
spGroup.Children.Add(wrapPanel);
|
|
}
|
|
|
|
width = (columnCount * 320) + 10;
|
|
}
|
|
|
|
private void Window_Loaded(object sender, RoutedEventArgs e)
|
|
{
|
|
this.Height = spGroup.DesiredSize.Height + 40;
|
|
this.Width = width;
|
|
|
|
Helper.CheckWindowIsInScreenSpace(this);
|
|
}
|
|
|
|
private async void btnSend_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
var legit = await SendIt();
|
|
if(legit) this.Close();
|
|
}
|
|
|
|
private async Task<bool> SendIt()
|
|
{
|
|
var visitors = "";
|
|
|
|
foreach (var t in this.FindChildren<TextBox>())
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(t.Text))
|
|
{
|
|
if (t.Text.ToList<char>().Distinct().Count() < 4)
|
|
{
|
|
MessageBox.Show("Personen müssen qualifiziert angegeben werden!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
|
return false;
|
|
}
|
|
else
|
|
visitors += t.Text + ";";
|
|
|
|
//MessageBox.Show("Alle Besucher müssen eingetragen werden!", "Unzureichende Eingabe", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
//return;
|
|
}
|
|
}
|
|
|
|
try
|
|
{
|
|
var count = visitors.Split(';').Count() - 1;
|
|
|
|
if (count > 0)
|
|
{
|
|
if (_isEdit)
|
|
{
|
|
if (Helper.FindVisualChildren<TextBox>(spGroup).Count() > count)
|
|
if (MessageBoxResult.OK == MessageBox.Show("Es müssen alle Besucher namentlich angegeben werden\n\nEs wird nur die Anzahl der ausgefüllten Felder als 'Anzahl Begleitpersonen' hinterlegt", "Unzureichende Angaben", MessageBoxButton.OKCancel, MessageBoxImage.Warning))
|
|
{
|
|
if (SQL.RowExists(MainWindow.table.ToString() + ".besucherGroups", "idbesucher", _idBesucher.ToString()).Result)
|
|
{
|
|
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucherGroups SET besucherList = '{visitors}' WHERE idbesucher = '{_idBesucher}'");
|
|
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.besucherGroups SET besucherList = @visitors WHERE idbesucher = @idbesucher", new List<MySqlParameter>()
|
|
{
|
|
new MySqlParameter("@visitors", visitors),
|
|
new MySqlParameter("@idbesucher", _idBesucher)
|
|
});
|
|
|
|
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucher SET Anzahl_Begleitpersonen = '{count}' WHERE idbesucher = '{_idBesucher}'");
|
|
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.besucher SET Anzahl_Begleitpersonen = @count WHERE idbesucher = @idbesucher", new List<MySqlParameter>()
|
|
{
|
|
new MySqlParameter("@count", count),
|
|
new MySqlParameter("@idbesucher", _idBesucher)
|
|
});
|
|
}
|
|
else
|
|
{
|
|
//await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.besucherGroups (besucherList, idbesucher) VALUES ('{visitors}','{_idBesucher}')");
|
|
GroupID = await SQL.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.besucherGroups (besucherList, idbesucher) VALUES (@visitors,@idbesucher)", new List<MySqlParameter>()
|
|
{
|
|
new MySqlParameter("@visitors", visitors),
|
|
new MySqlParameter("@idbesucher", _idBesucher)
|
|
});
|
|
|
|
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucher SET Anzahl_Begleitpersonen = '{count}' WHERE idbesucher = '{_idBesucher}'");
|
|
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.besucher SET Anzahl_Begleitpersonen = @count WHERE idbesucher = @idbesucher", new List<MySqlParameter>()
|
|
{
|
|
new MySqlParameter("@count", count),
|
|
new MySqlParameter("@idbesucher", _idBesucher)
|
|
});
|
|
}
|
|
}
|
|
else return false;
|
|
else
|
|
{
|
|
if (SQL.RowExists(MainWindow.table.ToString() + ".besucherGroups", "idbesucher", _idBesucher.ToString()).Result)
|
|
{
|
|
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucherGroups SET besucherList = '{visitors}' WHERE idbesucher = '{_idBesucher}'");
|
|
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.besucherGroups SET besucherList = @visitors WHERE idbesucher = @idbesucher", new List<MySqlParameter>()
|
|
{
|
|
new MySqlParameter("@visitors", visitors),
|
|
new MySqlParameter("@idbesucher", _idBesucher)
|
|
});
|
|
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucher SET Anzahl_Begleitpersonen = '{count}' WHERE idbesucher = '{_idBesucher}'");
|
|
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.besucher SET Anzahl_Begleitpersonen = @count WHERE idbesucher = @idbesucher", new List<MySqlParameter>()
|
|
{
|
|
new MySqlParameter("@count", count),
|
|
new MySqlParameter("@idbesucher", _idBesucher)
|
|
});
|
|
}
|
|
else
|
|
{
|
|
//await SQL.WriteSQL($"INSERT INTO {MainWindow.table}.besucherGroups (besucherList, idbesucher) VALUES ('{visitors}','{_idBesucher}')");
|
|
GroupID = await SQL.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.besucherGroups (besucherList, idbesucher) VALUES (@visitors,@idbesucher)", new List<MySqlParameter>()
|
|
{
|
|
new MySqlParameter("@visitors", visitors),
|
|
new MySqlParameter("@idbesucher", _idBesucher)
|
|
});
|
|
|
|
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucher SET Anzahl_Begleitpersonen = '{count}' WHERE idbesucher = '{_idBesucher}'");
|
|
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.besucher SET Anzahl_Begleitpersonen = @count WHERE idbesucher = @idbesucher", new List<MySqlParameter>()
|
|
{
|
|
new MySqlParameter("@count", count),
|
|
new MySqlParameter("@idbesucher", _idBesucher)
|
|
});
|
|
}
|
|
}
|
|
}
|
|
else
|
|
//await SQL.WriteSQL($"Insert INTO {MainWindow.table}.besucherGroups (besucherList) VALUES ('{visitors}')");
|
|
GroupID = await SQL.CreateAndWriteSQL($"INSERT INTO {MainWindow.table}.besucherGroups (besucherList, idbesucher) VALUES (@visitors,@idbesucher)", new List<MySqlParameter>()
|
|
{
|
|
new MySqlParameter("@visitors", visitors),
|
|
new MySqlParameter("@idbesucher", _idBesucher)
|
|
});
|
|
}
|
|
else
|
|
{
|
|
var msgResult = MessageBox.Show("Es wurden keine Personen angegeben!\nDie Anzahl der Personen wird somit auf 0 gesetzt\nEs wird dann nur die Person die bei 'Name des Besuchers' eingetragen wurde eingelassen!", "Keine Angaben", MessageBoxButton.OKCancel, MessageBoxImage.Error);
|
|
|
|
if (MessageBoxResult.OK == msgResult)
|
|
{
|
|
if (SQL.RowExists(MainWindow.table.ToString() + ".besucherGroups", "idbesucher", _idBesucher.ToString()).Result)
|
|
{
|
|
await SQL.WriteSQL($"DELETE FROM {MainWindow.table}.besucherGroups WHERE idbesucher = '{_idBesucher}'");
|
|
//await SQL.WriteSQL($"UPDATE {MainWindow.table}.besucher SET Anzahl_Begleitpersonen = '0' WHERE idbesucher = '{_idBesucher}'");
|
|
await SQL.CreateAndWriteSQL($"UPDATE {MainWindow.table}.besucher SET Anzahl_Begleitpersonen = 0 WHERE idbesucher = @_idBesucher", new List<MySqlParameter>()
|
|
{
|
|
new MySqlParameter("@_idBesucher", _idBesucher)
|
|
});
|
|
}
|
|
}
|
|
else if (MessageBoxResult.Cancel == msgResult)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
//GroupID = Convert.ToInt32(SQL.ReadSingleValue($"SELECT LAST_INSERT_ID()"));
|
|
|
|
this.DialogResult = true;
|
|
return true;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Log.WriteLog(ex.ToString());
|
|
MessageBox.Show("Es ist ein Fehler beim hinzufügen der Besucher aufgetreten, bitte erneut versuchen", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
private void btnAdd_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
bool zeroPanels = false;
|
|
WrapPanel wrapPanel = new WrapPanel
|
|
{
|
|
Orientation = Orientation.Vertical, // Jedes WrapPanel wird vertikal sein
|
|
Margin = new Thickness(10),
|
|
Width = 300
|
|
};
|
|
|
|
if (Helper.FindVisualChildren<WrapPanel>(spGroup).Count() > 0)
|
|
{
|
|
wrapPanel = Helper.FindVisualChildren<WrapPanel>(spGroup).Last();
|
|
}
|
|
else
|
|
zeroPanels = true;
|
|
|
|
var nr = Helper.FindVisualChildren<TextBox>(spGroup).Count();
|
|
|
|
var sp = new StackPanel();
|
|
var lbl = new TextBlock() { Text = $"Begleitperson Nr. {nr + 1}:", Margin = new Thickness(5), Height = 20 };
|
|
lbl.SetResourceReference(Control.ForegroundProperty, SystemColors.ControlTextBrushKey);
|
|
sp.Children.Add(lbl);
|
|
var tb = new TextBox() { Margin = new Thickness(10, 0, 10, 0), Height = 30, Width = 280, ToolTip = "Um eine Person zu entfernen, Feld leer lassen" };
|
|
ToolTipService.SetInitialShowDelay(tb, 200);
|
|
MahApps.Metro.Controls.TextBoxHelper.SetWatermark(tb, "Vorname Nachname");
|
|
sp.Children.Add(tb);
|
|
|
|
|
|
wrapPanel.Children.Add(sp);
|
|
this.Height = this.Height + 60;
|
|
// Das WrapPanel zum StackPanel hinzufügen
|
|
|
|
if (zeroPanels)
|
|
{
|
|
spGroup.Children.Add(wrapPanel);
|
|
this.Height = this.Height + 20;
|
|
zeroPanels = false;
|
|
}
|
|
|
|
//width = (columnCount * 320) + 10;
|
|
}
|
|
|
|
private void btnRemove_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
if ((spGroup.Children[0] as WrapPanel).Children.Count > 0)
|
|
{
|
|
(spGroup.Children[0] as WrapPanel).Children.RemoveAt((spGroup.Children[0] as WrapPanel).Children.Count - 1);
|
|
this.Height = this.Height - 60;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void Window_LocationChanged(object sender, EventArgs e)
|
|
{
|
|
Helper.CheckWindowIsInScreenSpace(this);
|
|
}
|
|
|
|
private async void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
|
|
{
|
|
var legit = await SendIt();
|
|
if (!legit) e.Cancel = true;
|
|
}
|
|
}
|
|
}
|