Offline detection and acting refactored

Resolved Bug with CardReader only working once
Resolved Bug with Message "Card does not exist", even if it exists
This commit is contained in:
Marcus 2025-09-19 10:33:07 +02:00
parent cca69b619d
commit 71952c9f11
16 changed files with 1933 additions and 1459 deletions

View File

@ -17,8 +17,13 @@
<RowDefinition Height="0.3*"/>
<RowDefinition Height="0.7*"/>
</Grid.RowDefinitions>
<Border x:Name="borderKartenleser" BorderBrush="Red" BorderThickness="1" CornerRadius="5" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10,37,15,5" Panel.ZIndex="100">
<TextBlock Text="Karte jetzt auf den Kartenleser legen!" Margin="5,1,5,1"/>
</Border>
<TextBlock Margin="10,10,10,0" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" TextWrapping="Wrap" Text="Kartennummer*" VerticalAlignment="Top"/>
<TextBox x:Name="tbNummer" Margin="10,0,10,10" TextWrapping="Wrap" Height="23" VerticalAlignment="Bottom"/>
<TextBox x:Name="tbNummer" Margin="10,0,10,10" TextWrapping="Wrap" Height="23" VerticalAlignment="Bottom" TextChanged="tbNummer_TextChanged"/>
<TextBlock Margin="10,10,10,0" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Grid.Row="1" TextWrapping="Wrap" Text="Farbe*" VerticalAlignment="Top"/>
<ComboBox x:Name="cbColor" Margin="10,0,10,10" Grid.Row="1" Height="22" VerticalAlignment="Bottom" SelectedIndex="0"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,10,0,0" Grid.Row="2" TextWrapping="Wrap" Text="Person*" VerticalAlignment="Top" Width="226"/>

View File

@ -13,6 +13,7 @@ using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Windows.Threading;
namespace ZKuP
{
@ -34,6 +35,8 @@ namespace ZKuP
string _ap = "";
bool _needTel = true;
DispatcherTimer blinkTimer = new DispatcherTimer();
public AddCardUser(string user = "", bool isBesucher = false, string count = "", string ap = "", bool needTel = true, bool hasEinweisung = false, string firma = "", string telnr = "", string idFirma = "")
{
_user = user;
@ -46,6 +49,10 @@ namespace ZKuP
Helper.InitSerial();
Helper.DataReceived += Helper_DataReceived;
blinkTimer.Interval = TimeSpan.FromMilliseconds(50);
blinkTimer.Tick += BlinkTimer_Tick;
blinkTimer.Start();
this.Title = "Karten ausgeben - " + count;
lblFirma.Text = isBesucher ? "Firma" : "Firma*";
@ -96,10 +103,36 @@ namespace ZKuP
}
}
bool up = false;
private void BlinkTimer_Tick(object sender, EventArgs e)
{
if (up)
{
if (borderKartenleser.Opacity < 1)
borderKartenleser.Opacity += 0.05;
else
up = !up;
}
else
{
if (borderKartenleser.Opacity > 0)
borderKartenleser.Opacity -= 0.05;
else
up = !up;
}
}
private void Helper_DataReceived(object sender, string e)
{
var text = "";
Dispatcher.Invoke(() => text = tbNummer.Text = e.Split('=')[0]);
Dispatcher.Invoke(() =>
{
text = tbNummer.Text = e.Split('=')[0];
borderKartenleser.Visibility = Visibility.Collapsed;
blinkTimer.Stop();
if (!string.IsNullOrWhiteSpace(text))
{
@ -118,12 +151,35 @@ namespace ZKuP
}
});
}
});
}
private void tbNummer_TextChanged(object sender, TextChangedEventArgs e)
{
if (tbNummer.Text.Length <= 0)
{
borderKartenleser.Visibility = Visibility.Visible;
blinkTimer.Start();
}
else
{
borderKartenleser.Visibility = Visibility.Collapsed;
blinkTimer.Stop();
}
}
private async void btnAdd_Click(object sender, RoutedEventArgs e)
{
bool cardExists = (await SQL.RowExists($"{MainWindow.table}.kartennummern", "Kartennummer", tbNummer.Text));
if (string.IsNullOrWhiteSpace(tbNummer.Text))
MessageBox.Show(this, "Kartennummer angeben!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
else if (!cardExists)
{
MessageBox.Show("Die eingegebene Kartennummer existiert nicht!\nBitte den Kartenleser verwenden oder die Nummer auf der Rückseite des Ausweises eingeben", "Fehlerhafte Kartennummer", MessageBoxButton.OK, MessageBoxImage.Error);
}
else if (cbColor.SelectedIndex == -1)
MessageBox.Show(this, "Kartenfarbe auswählen!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
else if (string.IsNullOrWhiteSpace(tbUser.Text))
@ -181,6 +237,5 @@ namespace ZKuP
{
Helper.CheckWindowIsInScreenSpace(this);
}
}
}

View File

@ -64,6 +64,8 @@ namespace ZKuP
&& !e.Exception.ToString().Contains("System.OperationCanceledException")
&& !e.Exception.ToString().Contains("System.ObjectDisposedException")
&& !e.Exception.ToString().Contains("System.IO.IOException")
&& !e.Exception.ToString().Contains("MySql.Data.MySqlClient.MySqlException")
&& !e.Exception.ToString().Contains("System.Net")
&& !e.Exception.ToString().Contains("signotec.STPadLibNet.STPadException: Zu dem ausgewählten Signierpad wurde keine Verbindung geöffnet.")
&& !e.Exception.ToString().Contains("Derzeit ist kein Layout"))
Log.WriteLog("2: " + e.Exception.ToString() + "\n" + e.ToString() + "\n" + (sender.GetType().ToString()));

View File

@ -955,7 +955,7 @@ namespace ZKuP
string time = "";
private async void ParkSetPreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (MainWindow.LoggedInRole == Roles.Pförtner || MainWindow.LoggedInRole == Roles.Admin)
if (RoleManager.LoggedInRole == Roles.Pförtner || RoleManager.LoggedInRole == Roles.Admin)
{
if (time == "") time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

View File

@ -146,7 +146,7 @@ namespace ZKuP
// be.Add($"BE-Fläche {numbers[i]} ({desc[i]})");
//}
if (MainWindow.LoggedInRole == Roles.M2 || MainWindow.LoggedInRole == Roles.M2_AM || MainWindow.LoggedInRole == Roles.Admin)
if (RoleManager.LoggedInRole == Roles.M2 || RoleManager.LoggedInRole == Roles.M2_AM || RoleManager.LoggedInRole == Roles.Admin)
{
LoadBEs();
@ -167,7 +167,7 @@ namespace ZKuP
private void LoadBEs()
{
var be = new List<string>();
if (MainWindow.LoggedInRole == Roles.Admin)
if (RoleManager.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();
@ -213,7 +213,7 @@ namespace ZKuP
private void updateList()
{
if (MainWindow.LoggedInRole == Roles.Admin || MainWindow.LoggedInRole == Roles.M2_AM || MainWindow.LoggedInRole == Roles.Pförtner)
if (RoleManager.LoggedInRole == Roles.Admin || RoleManager.LoggedInRole == Roles.M2_AM || RoleManager.LoggedInRole == Roles.Pförtner)
{
requestListAdmin();
}
@ -225,13 +225,27 @@ namespace ZKuP
private void requestList()
{
var FK = "";
var persons = SQL.ReadListStringTwoColumns($"SELECT Name,Vertreter FROM {MainWindow.table}.ansprechpartner WHERE Vorgesetzter = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName.ReplaceMiddleInitialWithSpace()).ReplaceUmlaute()}'").Result;
if (persons.Count > 0)
{
foreach (var p in persons)
{
FK += $" OR Ersteller = '{p.Split(';')[0].Replace(" ", "")}' OR Ansprechpartner_Intern = '{p.Split(';')[0].Replace(" ", "")}'";
FK += $" OR Ersteller = '{p.Split(';')[1].Replace(" ", "")}' OR Ansprechpartner_Intern = '{p.Split(';')[1].Replace(" ", "")}'";
}
}
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"
$"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'" +
$"{FK} ORDER BY Name ASC"
, firmen).Result;
//FirmaView = Firma.DataTableToFirma(firmen);
dgFirmen.DataContext = firmen;
@ -2139,7 +2153,7 @@ namespace ZKuP
private void cbBE_MouseEnter(object sender, MouseEventArgs e)
{
if (MainWindow.LoggedInRole == Roles.M2 || MainWindow.LoggedInRole == Roles.M2_AM || MainWindow.LoggedInRole == Roles.Admin)
if (RoleManager.LoggedInRole == Roles.M2 || RoleManager.LoggedInRole == Roles.M2_AM || RoleManager.LoggedInRole == Roles.Admin)
{
if ((cbBE.Items).Count > 0)
{

View File

@ -16,15 +16,25 @@
<StackPanel Grid.Row="0">
<TextBlock Text="Zurückgegebene Rote Karte:" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<ComboBox x:Name="cbRot" SelectionChanged="cbRot_SelectionChanged"/>
<ComboBox x:Name="cbRot" SelectionChanged="cbRot_SelectionChanged" PreviewTextInput="cbRot_PreviewTextInput"/>
<TextBlock x:Name="lblRotInfo" Text="" Margin="0,5,0,0" TextAlignment="Center" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
</StackPanel>
<Border x:Name="borderKartenleserRot" BorderBrush="Red" BorderThickness="1" CornerRadius="5" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="10,40,10,0" Panel.ZIndex="100">
<TextBlock Text="Karte jetzt auf den Kartenleser legen!" Margin="5,1,5,1"/>
</Border>
<StackPanel Grid.Row="1">
<TextBlock Text="Ausgegebene Grün Karte:" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<TextBox x:Name="tbGruen"/>
<TextBox x:Name="tbGruen" TextChanged="tbGruen_TextChanged"/>
</StackPanel>
<Border x:Name="borderKartenleserGruen" Grid.Row="1" Visibility="Collapsed" BorderBrush="Red" BorderThickness="1" CornerRadius="5" VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="10,0,10,-15" Panel.ZIndex="100">
<TextBlock Text="Karte jetzt auf den Kartenleser legen!" Margin="5,1,5,1"/>
</Border>
<Button x:Name="btnClose" Content="Bestätigen" Grid.Row="2" Height="30" HorizontalAlignment="Right" VerticalAlignment="Bottom" Click="btnClose_Click"/>
</Grid>
</mah:MetroWindow>

View File

@ -13,6 +13,7 @@ using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Windows.Threading;
namespace ZKuP
{
@ -21,6 +22,7 @@ namespace ZKuP
/// </summary>
public partial class KartenTausch : MetroWindow
{
DispatcherTimer blinkTimer = new DispatcherTimer();
public KartenTausch()
{
@ -30,6 +32,10 @@ namespace ZKuP
Helper.InitSerial();
Helper.DataReceived += Helper_DataReceived;
blinkTimer.Interval = TimeSpan.FromMilliseconds(50);
blinkTimer.Tick += BlinkTimer_Tick;
blinkTimer.Start();
}
private void cbRot_SelectionChanged(object sender, SelectionChangedEventArgs e)
@ -39,11 +45,38 @@ namespace ZKuP
if (split.Length > 1)
lblRotInfo.Text = $"Benutzer: {split[0]} Telefon: {split[1]}";
if (cbRot.SelectedValue.ToString().Length <= 0)
{
borderKartenleserRot.Visibility = Visibility.Visible;
blinkTimer.Start();
}
else if (cbRot.SelectedValue.ToString().Length == 19)
{
borderKartenleserRot.Visibility = Visibility.Collapsed;
borderKartenleserGruen.Visibility = Visibility.Visible;
}
else
{
borderKartenleserRot.Visibility = Visibility.Collapsed;
}
if (tbGruen.Text.Length == 19)
{
borderKartenleserGruen.Visibility = Visibility.Collapsed;
blinkTimer.Stop();
}
}
private void Helper_DataReceived(object sender, string e)
{
borderKartenleserRot.Visibility = Visibility.Collapsed;
blinkTimer.Stop();
Dispatcher.Invoke(() =>
{
if (cbRot.ItemsSource.Cast<string>().ToList().Contains(e.Split('=')[0].ToString()))
@ -54,6 +87,63 @@ namespace ZKuP
});
}
bool up = false;
private void BlinkTimer_Tick(object sender, EventArgs e)
{
if (up)
{
if (borderKartenleserRot.Opacity < 1)
{
borderKartenleserRot.Opacity += 0.05;
borderKartenleserGruen.Opacity += 0.05;
}
else
up = !up;
}
else
{
if (borderKartenleserRot.Opacity > 0)
{
borderKartenleserRot.Opacity -= 0.05;
borderKartenleserGruen.Opacity -= 0.05;
}
else
up = !up;
}
}
private void tbGruen_TextChanged(object sender, TextChangedEventArgs e)
{
if (tbGruen.Text.Length == 19)
{
borderKartenleserGruen.Visibility = Visibility.Collapsed;
blinkTimer.Stop();
}
}
private void cbRot_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
if (cbRot.SelectedValue.ToString().Length <= 0)
{
borderKartenleserRot.Visibility = Visibility.Visible;
blinkTimer.Start();
}
else if (cbRot.SelectedValue.ToString().Length == 19)
{
borderKartenleserRot.Visibility = Visibility.Collapsed;
borderKartenleserGruen.Visibility = Visibility.Visible;
}
else
{
borderKartenleserRot.Visibility = Visibility.Collapsed;
}
if (tbGruen.Text.Length == 19)
{
borderKartenleserGruen.Visibility = Visibility.Collapsed;
blinkTimer.Stop();
}
}
private async void btnClose_Click(object sender, RoutedEventArgs e)
@ -106,5 +196,6 @@ namespace ZKuP
{
Helper.CheckWindowIsInScreenSpace(this);
}
}
}

View File

@ -41,6 +41,30 @@
<local:SystemIconConverter x:Key="SystemIcon"></local:SystemIconConverter>
<Storyboard x:Key="popNetwork" RepeatBehavior="1x" Completed="Storyboard_Completed_1">
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="popNetwork" Storyboard.TargetProperty="(UIElement.Opacity)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
<EasingDoubleKeyFrame KeyTime="00:00:03" Value="0"/>
<EasingDoubleKeyFrame KeyTime="00:00:04" Value="1"/>
<EasingDoubleKeyFrame KeyTime="00:00:06" Value="1"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="popNetworkHide" RepeatBehavior="1x" Completed="Storyboard_Completed">
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="popNetwork" Storyboard.TargetProperty="(UIElement.Opacity)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="1"/>
<EasingDoubleKeyFrame KeyTime="00:00:03" Value="1"/>
<EasingDoubleKeyFrame KeyTime="00:00:04" Value="0"/>
<EasingDoubleKeyFrame KeyTime="00:00:06" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="popNetworkBlink" RepeatBehavior="Forever">
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="tbNetwork" Storyboard.TargetProperty="(UIElement.Opacity)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="1"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.5000000" Value="0"/>
<EasingDoubleKeyFrame KeyTime="00:00:01" Value="1"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="sbConnection" RepeatBehavior="Forever">
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="imgConnection" Storyboard.TargetProperty="(UIElement.Opacity)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="1"/>
@ -1174,6 +1198,23 @@
<Button x:Name="btnCloseHelp" Content="Schließen" Margin="10,10" VerticalAlignment="Bottom" Click="BtnCloseHelp_Click"/>
</Grid>
<Border x:Name="popNetwork" Grid.RowSpan="5" Visibility="Collapsed" CornerRadius="10" VerticalAlignment="Bottom" Margin="10" Background="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}" Height="40">
<TextBlock x:Name="tbNetwork" VerticalAlignment="Center" FontSize="16" Foreground="Salmon" FontWeight="Bold" Text="!! Netzwerkverbindung ist unterbrochen, keine Änderung möglich !!" TextAlignment="Center"/>
</Border>
<Border x:Name="canvasSettings" Margin="0" BorderThickness="1" BorderBrush="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}" CornerRadius="10" Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" Visibility="Collapsed" Width="430" Height="400" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.RowSpan="3">
<Grid>
<!--<Border BorderBrush="Gray" BorderThickness="2" Width="400" Height="364"/>-->

File diff suppressed because it is too large Load Diff

View File

@ -48,7 +48,7 @@ namespace ZKuP
private void Query()
{
if (MainWindow.LoggedInRole == Roles.Admin)
if (RoleManager.LoggedInRole == Roles.Admin)
{
asp = SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.ansprechpartner ORDER BY Name ASC", asp).Result;
}
@ -159,7 +159,7 @@ namespace ZKuP
var arr = (btn.DataContext as DataRowView).Row.ItemArray;
var user = arr[0].ToString();
if (MainWindow.LoggedInRole != Roles.Admin)
if (RoleManager.LoggedInRole != Roles.Admin)
{
if (arr[0].ToString() == Helper.InsertSpaceBeforeUpperCase(Environment.UserName) || arr[6].ToString() == UserID)
{

View File

@ -78,7 +78,7 @@ namespace ZKuP
private void updateList()
{
if (MainWindow.LoggedInRole == Roles.Admin || MainWindow.LoggedInRole == Roles.M2_AM || MainWindow.LoggedInRole == Roles.Pförtner)
if (RoleManager.LoggedInRole == Roles.Admin || RoleManager.LoggedInRole == Roles.M2_AM || RoleManager.LoggedInRole == Roles.Pförtner)
{
requestListAdmin();
}
@ -90,10 +90,23 @@ namespace ZKuP
private void requestList()
{
var FK = "";
var persons = SQL.ReadListStringTwoColumns($"SELECT Name,Vertreter FROM {MainWindow.table}.ansprechpartner WHERE Vorgesetzter = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName.ReplaceMiddleInitialWithSpace()).ReplaceUmlaute()}'").Result;
if (persons.Count > 0)
{
foreach (var p in persons)
{
FK += $" OR Ersteller = '{p.Split(';')[0].Replace(" ", "")}' OR Ansprechpartner_Intern = '{p.Split(';')[0].Replace(" ", "")}'";
FK += $" OR Ersteller = '{p.Split(';')[1].Replace(" ", "")}' OR Ansprechpartner_Intern = '{p.Split(';')[1].Replace(" ", "")}'";
}
}
visitors = SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.besucher 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)}'")}' " +
$"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}' ORDER BY Name ASC"
$"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'" +
$"{FK} ORDER BY Name ASC"
, visitors).Result;
//VisitorView = Visitor.DataTableToVisitor(visitors);

View File

@ -3,7 +3,9 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Threading;
namespace ZKuP
{
@ -16,30 +18,22 @@ namespace ZKuP
public TimeSpan ResponseTime { get; set; }
public Exception Exception { get; set; }
}
/// <summary>
/// Überprüft die Verbindung zu einem MySQL Server asynchron
/// </summary>
/// <param name="connectionString">MySQL Connection String</param>
/// <param name="timeoutSeconds">Timeout in Sekunden (Standard: 10)</param>
/// <returns>Task mit ConnectionResult</returns>
public static async Task<ConnectionResult> CheckConnectionAsync()
{
var result = new ConnectionResult();
var startTime = DateTime.Now;
using (var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5)))
{
try
{
using (var connection = new MySqlConnection(SQL.GetConnstr(true)))
using (var connection = new MySqlConnection(SQL.GetConnstr(true, 1)))
{
await connection.OpenAsync();
await connection.OpenAsync(cts.Token);
// Teste mit einer einfachen Abfrage
using (var command = new MySqlCommand("SELECT 1", connection))
{
var testResult = await command.ExecuteScalarAsync();
var testResult = await command.ExecuteScalarAsync(cts.Token);
if (testResult != null && testResult.ToString() == "1")
{
result.IsConnected = true;
@ -53,6 +47,11 @@ namespace ZKuP
}
}
}
catch (OperationCanceledException) when (cts.Token.IsCancellationRequested)
{
result.IsConnected = false;
result.Message = "Verbindungstest nach 1 Sekunde abgebrochen (Timeout)";
}
catch (MySqlException ex)
{
result.IsConnected = false;
@ -65,6 +64,7 @@ namespace ZKuP
result.Exception = ex;
result.Message = $"Unerwarteter Fehler: {ex.Message}";
}
}
result.ResponseTime = DateTime.Now - startTime;
return result;

566
ZKuP/RoleManager.cs Normal file
View File

@ -0,0 +1,566 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows;
using System.Windows.Input;
namespace ZKuP
{
internal class RoleManager
{
public static Roles LoggedInRole { get; private set; } = Roles.None;
MainWindow main = MainWindow.main;
internal async void AdminStart()
{
LoggedInRole = Roles.Admin;
//CheckVersion();
main.tabAdmin.Visibility = Visibility.Visible;
main.tabFirmBesAsp.Visibility = Visibility.Visible;
main.tabPark.Visibility = Visibility.Visible;
main.tabPfoertner.Visibility = Visibility.Visible;
main.tabSonstiges.Visibility = Visibility.Visible;
main.Main.Visibility = Visibility.Visible;
main.gridToday.Visibility = Visibility.Visible;
main.gridArrived.Visibility = Visibility.Visible;
main.gridBike.Visibility = Visibility.Visible;
main.gridLieferanten.Visibility = Visibility.Visible;
//lblSearch.Visibility = Visibility.Visible;
main.tbSearch.Visibility = Visibility.Visible;
main.lblSearchArrived.Visibility = Visibility.Visible;
main.tbSearchArrived.Visibility = Visibility.Visible;
main.btnClearSearch.Visibility = Visibility.Visible;
main.btnClearSearchArrived.Visibility = Visibility.Visible;
main.btnManageUsers.Visibility = Visibility.Visible;
main.btnCreateVisitor.Visibility = Visibility.Visible;
main.btnCreateFirma.Visibility = Visibility.Visible;
main.btnManageAsp.Visibility = Visibility.Visible;
main.btnKarten.Visibility = Visibility.Visible;
main.btnSignatures.Visibility = Visibility.Visible;
main.btnDelivery.Visibility = Visibility.Visible;
//btnNew.Visibility = Visibility.Visible;
main.btnCreateDeliveries.Visibility = Visibility.Visible;
main.btnEmergency.Visibility = Visibility.Visible;
main.btnBelegung.Visibility = Visibility.Visible;
main.btnKartenTausch.Visibility = Visibility.Visible;
main.btnBE.Visibility = Visibility.Visible;
main.btnApproveFzg.Visibility = Visibility.Visible;
main.btnCheckParkausweis.Visibility = Visibility.Visible;
main.btnCreateParkausweis.Visibility = Visibility.Visible;
//btnCreateSpecialParkausweis.Visibility = Visibility.Visible;
main.btnGrantParkausweis.Visibility = Visibility.Visible;
main.btnListParkausweis.Visibility = Visibility.Visible;
main.btnPrintParkausweis.Visibility = Visibility.Visible;
main.btnCheckKennzeichen.Visibility = Visibility.Visible;
main.btnSettings.Visibility = Visibility.Visible;
main.btnArrivalsOverview.Visibility = Visibility.Visible;
//btnSetHinweis.Visibility = Visibility.Visible;
main.gridSplitter.Visibility = Visibility.Visible;
main.gridSplitterArrows.Visibility = Visibility.Visible;
main.gridSplitterLine.Visibility = Visibility.Visible;
main.columnFzg.Visibility = Visibility.Visible;
main.columnBeginn.Visibility = Visibility.Visible;
main.columnEnde.Visibility = Visibility.Visible;
main.btnMcFitSign.Visibility = Visibility.Visible;
main.btnNotifications.Visibility = Visibility.Visible;
//MessageBox.Show("Sie sind Admin");
// something that only an admin user should be able to do
if (Environment.UserName == "RainerGaertner")
{
main.btnIvoBackground.Visibility = Visibility.Visible;
main.canvasIvo.Visibility = Visibility.Visible;
}
main.tcMainMenu.SelectedIndex = 4;
}
internal async void FFKSasseStart()
{
LoggedInRole = Roles.FFK_Sasse;
//CheckVersion();
main.tabAdmin.Visibility = Visibility.Collapsed;
main.tabFirmBesAsp.Visibility = Visibility.Visible;
main.tabPark.Visibility = Visibility.Visible;
main.tabPfoertner.Visibility = Visibility.Collapsed;
main.tabSonstiges.Visibility = Visibility.Visible;
main.Main.Visibility = Visibility.Visible;
main.gridToday.Visibility = Visibility.Visible;
main.gridArrived.Visibility = Visibility.Visible;
main.gridBike.Visibility = Visibility.Collapsed;
main.gridLieferanten.Visibility = Visibility.Collapsed;
//lblSearch.Visibility = Visibility.Visible;
main.tbSearch.Visibility = Visibility.Visible;
main.lblSearchArrived.Visibility = Visibility.Visible;
main.tbSearchArrived.Visibility = Visibility.Visible;
main.btnClearSearch.Visibility = Visibility.Visible;
main.btnClearSearchArrived.Visibility = Visibility.Visible;
main.btnCreateVisitor.Visibility = Visibility.Visible;
main.btnCreateFirma.Visibility = Visibility.Visible;
main.btnManageAsp.Visibility = Visibility.Visible;
main.btnManageUsers.Visibility = Visibility.Collapsed;
main.btnBelegung.Visibility = Visibility.Collapsed;
main.btnBE.Visibility = Visibility.Visible;
main.btnKartenTausch.Visibility = Visibility.Collapsed;
main.btnApproveFzg.Visibility = Visibility.Collapsed;
main.btnCreateParkausweis.Visibility = Visibility.Visible;
main.btnSettings.Visibility = Visibility.Collapsed;
main.btnArrivalsOverview.Visibility = Visibility.Visible;
main.gridSplitter.Visibility = Visibility.Visible;
main.gridSplitterArrows.Visibility = Visibility.Visible;
main.gridSplitterLine.Visibility = Visibility.Visible;
//MessageBox.Show("Sie sind Editor");
// something that only an editor user should be able to do
main.btnMcFitSign.Visibility = Visibility.Visible;
//btnNotification.Visibility = Visibility.Visible;
main.tcMainMenu.SelectedIndex = 1;
}
internal void FFKStart()
{
LoggedInRole = Roles.FFK;
//CheckVersion();
main.tabAdmin.Visibility = Visibility.Collapsed;
main.tabFirmBesAsp.Visibility = Visibility.Visible;
main.tabPark.Visibility = Visibility.Visible;
main.tabPfoertner.Visibility = Visibility.Collapsed;
main.tabSonstiges.Visibility = Visibility.Visible;
main.Main.Visibility = Visibility.Visible;
main.gridToday.Visibility = Visibility.Visible;
main.gridArrived.Visibility = Visibility.Visible;
main.gridBike.Visibility = Visibility.Collapsed;
main.gridLieferanten.Visibility = Visibility.Collapsed;
//lblSearch.Visibility = Visibility.Visible;
main.tbSearch.Visibility = Visibility.Visible;
main.lblSearchArrived.Visibility = Visibility.Visible;
main.tbSearchArrived.Visibility = Visibility.Visible;
main.btnClearSearch.Visibility = Visibility.Visible;
main.btnClearSearchArrived.Visibility = Visibility.Visible;
main.btnCreateVisitor.Visibility = Visibility.Visible;
main.btnCreateFirma.Visibility = Visibility.Visible;
main.btnManageAsp.Visibility = Visibility.Visible;
main.btnManageUsers.Visibility = Visibility.Collapsed;
main.btnBelegung.Visibility = Visibility.Collapsed;
main.btnBE.Visibility = Visibility.Visible;
main.btnKartenTausch.Visibility = Visibility.Collapsed;
main.btnApproveFzg.Visibility = Visibility.Collapsed;
main.btnCreateParkausweis.Visibility = Visibility.Visible;
main.btnSettings.Visibility = Visibility.Collapsed;
main.btnArrivalsOverview.Visibility = Visibility.Visible;
main.gridSplitter.Visibility = Visibility.Visible;
main.gridSplitterArrows.Visibility = Visibility.Visible;
main.gridSplitterLine.Visibility = Visibility.Visible;
//MessageBox.Show("Sie sind Editor");
// something that only an editor user should be able to do
main.btnMcFitSign.Visibility = Visibility.Visible;
//btnNotification.Visibility = Visibility.Visible;
main.tcMainMenu.SelectedIndex = 1;
}
internal void M2Start()
{
LoggedInRole = Roles.M2;
//CheckVersion();
main.tabAdmin.Visibility = Visibility.Collapsed;
main.tabFirmBesAsp.Visibility = Visibility.Visible;
main.tabPark.Visibility = Visibility.Visible;
main.tabPfoertner.Visibility = Visibility.Collapsed;
main.tabSonstiges.Visibility = Visibility.Visible;
main.Main.Visibility = Visibility.Visible;
main.gridToday.Visibility = Visibility.Visible;
main.gridArrived.Visibility = Visibility.Visible;
main.gridBike.Visibility = Visibility.Collapsed;
main.gridLieferanten.Visibility = Visibility.Collapsed;
//lblSearch.Visibility = Visibility.Visible;
main.tbSearch.Visibility = Visibility.Visible;
main.lblSearchArrived.Visibility = Visibility.Visible;
main.tbSearchArrived.Visibility = Visibility.Visible;
main.btnClearSearch.Visibility = Visibility.Visible;
main.btnClearSearchArrived.Visibility = Visibility.Visible;
main.btnCreateVisitor.Visibility = Visibility.Visible;
main.btnCreateFirma.Visibility = Visibility.Visible;
main.btnManageAsp.Visibility = Visibility.Visible;
main.btnManageUsers.Visibility = Visibility.Collapsed;
main.btnBelegung.Visibility = Visibility.Visible;
main.btnBE.Visibility = Visibility.Visible;
main.btnKartenTausch.Visibility = Visibility.Collapsed;
main.btnApproveFzg.Visibility = Visibility.Collapsed;
main.btnCreateParkausweis.Visibility = Visibility.Visible;
main.btnCheckParkausweis.Visibility = Visibility.Visible;
//btnCreateSpecialParkausweis.Visibility = Visibility.Visible;
main.btnGrantParkausweis.Visibility = Visibility.Visible;
main.btnListParkausweis.Visibility = Visibility.Visible;
main.btnPrintParkausweis.Visibility = Visibility.Visible;
main.btnSettings.Visibility = Visibility.Collapsed;
main.btnArrivalsOverview.Visibility = Visibility.Visible;
main.gridSplitter.Visibility = Visibility.Visible;
main.gridSplitterArrows.Visibility = Visibility.Visible;
main.gridSplitterLine.Visibility = Visibility.Visible;
//MessageBox.Show("Sie sind Editor");
// something that only an editor user should be able to do
main.btnMcFitSign.Visibility = Visibility.Visible;
//btnNotification.Visibility = Visibility.Visible;
main.tcMainMenu.SelectedIndex = 1;
}
internal void M2_AMStart()
{
LoggedInRole = Roles.M2_AM;
//CheckVersion();
main.tabAdmin.Visibility = Visibility.Collapsed;
main.tabFirmBesAsp.Visibility = Visibility.Visible;
main.tabPark.Visibility = Visibility.Visible;
main.tabPfoertner.Visibility = Visibility.Collapsed;
main.tabSonstiges.Visibility = Visibility.Visible;
main.Main.Visibility = Visibility.Visible;
main.gridToday.Visibility = Visibility.Visible;
main.gridArrived.Visibility = Visibility.Visible;
main.gridBike.Visibility = Visibility.Collapsed;
main.gridLieferanten.Visibility = Visibility.Collapsed;
//lblSearch.Visibility = Visibility.Visible;
main.tbSearch.Visibility = Visibility.Visible;
main.lblSearchArrived.Visibility = Visibility.Visible;
main.tbSearchArrived.Visibility = Visibility.Visible;
main.btnClearSearch.Visibility = Visibility.Visible;
main.btnClearSearchArrived.Visibility = Visibility.Visible;
main.btnCreateVisitor.Visibility = Visibility.Visible;
main.btnCreateFirma.Visibility = Visibility.Visible;
main.btnManageAsp.Visibility = Visibility.Visible;
main.btnManageUsers.Visibility = Visibility.Collapsed;
main.btnBelegung.Visibility = Visibility.Visible;
main.btnBE.Visibility = Visibility.Visible;
main.btnKartenTausch.Visibility = Visibility.Collapsed;
main.btnApproveFzg.Visibility = Visibility.Collapsed;
main.btnCreateParkausweis.Visibility = Visibility.Visible;
main.btnCheckParkausweis.Visibility = Visibility.Visible;
//btnCreateSpecialParkausweis.Visibility = Visibility.Visible;
main.btnGrantParkausweis.Visibility = Visibility.Visible;
main.btnListParkausweis.Visibility = Visibility.Visible;
main.btnPrintParkausweis.Visibility = Visibility.Visible;
main.btnSettings.Visibility = Visibility.Collapsed;
main.btnArrivalsOverview.Visibility = Visibility.Visible;
main.gridSplitter.Visibility = Visibility.Visible;
main.gridSplitterArrows.Visibility = Visibility.Visible;
main.gridSplitterLine.Visibility = Visibility.Visible;
//MessageBox.Show("Sie sind Editor");
// something that only an editor user should be able to do
main.btnMcFitSign.Visibility = Visibility.Visible;
//btnNotification.Visibility = Visibility.Visible;
main.tcMainMenu.SelectedIndex = 1;
}
internal void PfoertnerStart()
{
LoggedInRole = Roles.Pförtner;
//CheckVersion();
main.tabAdmin.Visibility = Visibility.Collapsed;
main.tabFirmBesAsp.Visibility = Visibility.Visible;
main.tabPark.Visibility = Visibility.Visible;
main.tabPfoertner.Visibility = Visibility.Visible;
main.tabSonstiges.Visibility = Visibility.Visible;
main.Main.Visibility = Visibility.Visible;
main.gridToday.Visibility = Visibility.Visible;
main.gridArrived.Visibility = Visibility.Visible;
main.gridBike.Visibility = Visibility.Visible;
main.gridLieferanten.Visibility = Visibility.Visible;
//lblSearch.Visibility = Visibility.Visible;
main.tbSearch.Visibility = Visibility.Visible;
main.lblSearchArrived.Visibility = Visibility.Visible;
main.tbSearchArrived.Visibility = Visibility.Visible;
main.btnClearSearch.Visibility = Visibility.Visible;
main.btnClearSearchArrived.Visibility = Visibility.Visible;
main.btnCreateVisitor.Visibility = Visibility.Visible;
main.btnManageUsers.Visibility = Visibility.Collapsed;
main.btnCreateFirma.Visibility = Visibility.Collapsed;
main.btnManageAsp.Visibility = Visibility.Collapsed;
main.btnKarten.Visibility = Visibility.Visible;
//btnNew.Visibility = Visibility.Visible;
main.btnDelivery.Visibility = Visibility.Visible;
main.btnCreateDeliveries.Visibility = Visibility.Visible;
main.btnEmergency.Visibility = Visibility.Visible;
main.btnBE.Visibility = Visibility.Visible;
main.btnKartenTausch.Visibility = Visibility.Visible;
main.btnApproveFzg.Visibility = Visibility.Collapsed;
main.btnCheckParkausweis.Visibility = Visibility.Visible;
//btnPrintParkausweis.Visibility = Visibility.Visible;
main.btnSettings.Visibility = Visibility.Collapsed;
main.btnArrivalsOverview.Visibility = Visibility.Visible;
main.gridSplitter.Visibility = Visibility.Visible;
main.gridSplitterArrows.Visibility = Visibility.Visible;
main.gridSplitterLine.Visibility = Visibility.Visible;
//MessageBox.Show("Sie sind Pförtner");
// something that only an pförtner user should be able to do
main.btnMcFitSign.Visibility = Visibility.Collapsed;
//btnNotification.Visibility = Visibility.Collapsed;
main.tcMainMenu.SelectedIndex = 2;
}
internal void OrganisatorStart()
{
LoggedInRole = Roles.Organisator;
main.tabAdmin.Visibility = Visibility.Collapsed;
main.tabFirmBesAsp.Visibility = Visibility.Visible;
main.tabPark.Visibility = Visibility.Visible;
main.tabPfoertner.Visibility = Visibility.Collapsed;
main.tabSonstiges.Visibility = Visibility.Visible;
main.dgToday.Visibility = Visibility.Collapsed;
main.lblAnkunftHeuteFirmen.Visibility = Visibility.Collapsed;
Grid.SetColumn(main.lblAnkunftHeuteBesucher, 0);
Grid.SetColumn(main.dgTodayBesucher, 0);
Grid.SetColumnSpan(main.dgTodayBesucher, 3);
main.gridSplitterVertical.Visibility = Visibility.Collapsed;
main.gridSplitterArrowsVertical.Visibility = Visibility.Collapsed;
main.BesuchP.Visibility = Visibility.Collapsed;
main.BE.Visibility = Visibility.Collapsed;
main.Main.Visibility = Visibility.Visible;
main.gridToday.Visibility = Visibility.Visible;
main.gridArrived.Visibility = Visibility.Collapsed;
main.gridBike.Visibility = Visibility.Collapsed;
main.gridLieferanten.Visibility = Visibility.Collapsed;
//lblSearch.Visibility = Visibility.Visible;
main.tbSearch.Visibility = Visibility.Visible;
main.lblSearchArrived.Visibility = Visibility.Collapsed;
main.tbSearchArrived.Visibility = Visibility.Collapsed;
main.btnClearSearch.Visibility = Visibility.Visible;
main.btnClearSearchArrived.Visibility = Visibility.Collapsed;
main.btnCreateVisitor.Visibility = Visibility.Visible;
main.btnManageUsers.Visibility = Visibility.Collapsed;
main.btnCreateFirma.Visibility = Visibility.Collapsed;
main.btnManageAsp.Visibility = Visibility.Visible;
main.btnKarten.Visibility = Visibility.Collapsed;
//btnNew.Visibility = Visibility.Visible;
main.btnDelivery.Visibility = Visibility.Collapsed;
main.btnCreateDeliveries.Visibility = Visibility.Collapsed;
main.btnEmergency.Visibility = Visibility.Collapsed;
main.btnBE.Visibility = Visibility.Collapsed;
main.btnKartenTausch.Visibility = Visibility.Collapsed;
main.btnApproveFzg.Visibility = Visibility.Collapsed;
main.btnCheckParkausweis.Visibility = Visibility.Collapsed;
main.btnCreateParkausweis.Visibility = Visibility.Visible;
main.btnSettings.Visibility = Visibility.Collapsed;
main.btnArrivalsOverview.Visibility = Visibility.Visible;
main.gridSplitter.Visibility = Visibility.Collapsed;
main.gridSplitterArrows.Visibility = Visibility.Collapsed;
main.gridSplitterLine.Visibility = Visibility.Collapsed;
//MessageBox.Show("Sie sind Pförtner");
// something that only an pförtner user should be able to do
main.btnMcFitSign.Visibility = Visibility.Visible;
//btnNotification.Visibility = Visibility.Collapsed;
main.tcMainMenu.SelectedIndex = 1;
}
internal void OrganisatorInfraGOStart()
{
LoggedInRole = Roles.None;
main.tabAdmin.Visibility = Visibility.Collapsed;
main.tabFirmBesAsp.Visibility = Visibility.Collapsed;
main.tabPark.Visibility = Visibility.Collapsed;
main.tabPfoertner.Visibility = Visibility.Collapsed;
main.tabSonstiges.Visibility = Visibility.Collapsed;
main.Main.Visibility = Visibility.Collapsed;
main.Width = 700;
main.Height = 700;
main.ResizeMode = ResizeMode.NoResize;
main.Main.Visibility = Visibility.Collapsed;
main.gridToday.Visibility = Visibility.Collapsed;
main.gridArrived.Visibility = Visibility.Collapsed;
main.gridBike.Visibility = Visibility.Collapsed;
main.gridLieferanten.Visibility = Visibility.Collapsed;
main.UserCreate.Visibility = Visibility.Visible;
main.btnResetLists.Visibility = Visibility.Collapsed;
main.gridSplitter.Visibility = Visibility.Collapsed;
main.gridSplitterArrows.Visibility = Visibility.Collapsed;
main.gridSplitterLine.Visibility = Visibility.Collapsed;
main.lblResetLists.Visibility = Visibility.Collapsed;
main.btnResetLists.Visibility = Visibility.Collapsed;
main.btnSettings.Visibility = Visibility.Collapsed;
main.btnArrivalsOverview.Visibility = Visibility.Collapsed;
main.gridSplitter.Visibility = Visibility.Collapsed;
main.gridSplitterArrows.Visibility = Visibility.Collapsed;
main.gridSplitterLine.Visibility = Visibility.Collapsed;
//btnResetListsMain.Visibility = Visibility.Collapsed;
main.gridSpinner.Visibility = Visibility.Collapsed;
main.btnMcFitSign.Visibility = Visibility.Collapsed;
main.btnKartenTausch.Visibility = Visibility.Collapsed;
main.btnApproveFzg.Visibility = Visibility.Collapsed;
//lblSearch.Visibility = Visibility.Collapsed;
main.tbSearch.Visibility = Visibility.Collapsed;
main.btnClearSearch.Visibility = Visibility.Collapsed;
main.lblSearchArrived.Visibility = Visibility.Collapsed;
main.tbSearchArrived.Visibility = Visibility.Collapsed;
main.btnClearSearchArrived.Visibility = Visibility.Collapsed;
main.lblmcfit2.Visibility = Visibility.Collapsed;
//btnNotification.Visibility = Visibility.Collapsed;
}
internal void BesucherCreateStart()
{
LoggedInRole = Roles.None;
main.tabAdmin.Visibility = Visibility.Collapsed;
main.tabFirmBesAsp.Visibility = Visibility.Collapsed;
main.tabPark.Visibility = Visibility.Collapsed;
main.tabPfoertner.Visibility = Visibility.Collapsed;
main.tabSonstiges.Visibility = Visibility.Collapsed;
main.Main.Visibility = Visibility.Collapsed;
main.Width = 700;
main.Height = 700;
main.ResizeMode = ResizeMode.NoResize;
main.Main.Visibility = Visibility.Collapsed;
main.gridToday.Visibility = Visibility.Collapsed;
main.gridArrived.Visibility = Visibility.Collapsed;
main.gridBike.Visibility = Visibility.Collapsed;
main.gridLieferanten.Visibility = Visibility.Collapsed;
main.UserCreate.Visibility = Visibility.Visible;
main.btnResetLists.Visibility = Visibility.Collapsed;
main.gridSplitter.Visibility = Visibility.Collapsed;
main.gridSplitterArrows.Visibility = Visibility.Collapsed;
main.gridSplitterLine.Visibility = Visibility.Collapsed;
main.lblResetLists.Visibility = Visibility.Collapsed;
main.btnResetLists.Visibility = Visibility.Collapsed;
main.btnSettings.Visibility = Visibility.Collapsed;
main.btnArrivalsOverview.Visibility = Visibility.Collapsed;
main.gridSplitter.Visibility = Visibility.Collapsed;
main.gridSplitterArrows.Visibility = Visibility.Collapsed;
main.gridSplitterLine.Visibility = Visibility.Collapsed;
//btnResetListsMain.Visibility = Visibility.Collapsed;
main.gridSpinner.Visibility = Visibility.Collapsed;
main.btnMcFitSign.Visibility = Visibility.Visible;
main.btnKartenTausch.Visibility = Visibility.Collapsed;
main.btnApproveFzg.Visibility = Visibility.Collapsed;
//lblSearch.Visibility = Visibility.Collapsed;
main.tbSearch.Visibility = Visibility.Collapsed;
main.btnClearSearch.Visibility = Visibility.Collapsed;
main.lblSearchArrived.Visibility = Visibility.Collapsed;
main.tbSearchArrived.Visibility = Visibility.Collapsed;
main.btnClearSearchArrived.Visibility = Visibility.Collapsed;
main.lblmcfit2.Visibility = Visibility.Visible;
//btnNotification.Visibility = Visibility.Collapsed;
}
}
public enum Roles
{
Pförtner,
FFK,
Admin,
FFK_Sasse,
M2,
Organisator,
M2_AM,
OrganisatorInfraGO,
None
}
}

View File

@ -7,10 +7,13 @@ using System.Diagnostics;
using System.Diagnostics.Eventing.Reader;
using System.IO;
using System.Linq;
using System.Net.NetworkInformation;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Markup;
using System.Windows.Threading;
using Windows.Phone.PersonalInformation;
namespace ZKuP
@ -25,6 +28,10 @@ namespace ZKuP
private static string u = "F/u2njMf6aE4krZGTjzgZw==";
private static string dTest = "e+tv3ZaP+cewOJgE7jNNlA==";
#endif
static DispatcherTimer onlineTimer = new DispatcherTimer();
//static MySqlConnection conn = new MySqlConnection(GetConnstr());
//private static MySqlConnection _conn;
//public static MySqlConnection conn
@ -40,33 +47,18 @@ namespace ZKuP
static MySqlDataAdapter adp = new MySqlDataAdapter();
public static void InitSQL()
{
NetworkChange.NetworkAvailabilityChanged += NetworkChange_NetworkAvailabilityChanged;
}
public static bool CheckOnline()
{
System.Net.NetworkInformation.Ping ping = new System.Net.NetworkInformation.Ping();
//change the following ip variable into the ip adress you are looking for
System.Net.IPAddress address = System.Net.IPAddress.Parse(GetIP());
System.Net.NetworkInformation.PingReply pong = ping.Send(address);
if (pong.Status == System.Net.NetworkInformation.IPStatus.Success)
{
return true;
}
else
{
pong = ping.Send(address);
if (pong.Status == System.Net.NetworkInformation.IPStatus.Success)
{
return true;
}
else
{
isOnline = false;
return false;
}
}
}
public static bool CheckDeviceConnection()
try
{
System.Net.NetworkInformation.Ping ping = new System.Net.NetworkInformation.Ping();
//change the following ip variable into the ip adress you are looking for
@ -84,15 +76,49 @@ namespace ZKuP
{
return true;
}
else
else if (pong.Status != System.Net.NetworkInformation.IPStatus.Success && isOnline)
{
isOnline = false;
System.Windows.MessageBox.Show($"Server ist nicht erreichbar\nNetzwerkverbindung überprüfen", "Fehler", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Error);
System.Windows.Application.Current.Shutdown();
return false;
}
return false;
}
}
catch (Exception)
{
isOnline = false;
return false;
}
}
//public static bool CheckDeviceConnection()
//{
// System.Net.NetworkInformation.Ping ping = new System.Net.NetworkInformation.Ping();
// //change the following ip variable into the ip adress you are looking for
// System.Net.IPAddress address = System.Net.IPAddress.Parse(GetIP());
// System.Net.NetworkInformation.PingReply pong = ping.Send(address);
// if (pong.Status == System.Net.NetworkInformation.IPStatus.Success)
// {
// return true;
// }
// else
// {
// pong = ping.Send(address);
// if (pong.Status == System.Net.NetworkInformation.IPStatus.Success)
// {
// return true;
// }
// else if(pong.Status != System.Net.NetworkInformation.IPStatus.Success && isOnline)
// {
// isOnline = false;
// System.Windows.MessageBox.Show($"Server ist nicht erreichbar\nNetzwerkverbindung überprüfen", "Fehler", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Error);
// return false;
// }
// return false;
// }
//}
static string ip = "";
private static string GetIP()
@ -105,7 +131,7 @@ namespace ZKuP
else return ip;
}
internal static string GetConnstr(bool withTimeout = false)
internal static string GetConnstr(bool withTimeout = false, int timeout = 5)
{
#if !DEBUG
//Mit SSL
@ -136,7 +162,7 @@ namespace ZKuP
$"Uid={Crypto.Decrypt(Crypto.GetHashKey("8734FCD0D69756D3AE7154E69F8042CA"), uSSL)};" +
$"Pwd={Crypto.Decrypt(Crypto.GetHashKey("71A209CC81FDB2F458C4EC8DF7090154"), p)};" +
$"database={Crypto.Decrypt(Crypto.GetHashKey("B79DE37BC846D9B1054EE837AAA45D83"), dTest)}" +
$";SslMode=Required;{(withTimeout ? "Connection Timeout = 10" : "")}";
$";SslMode=Required;{(withTimeout ? $"Connection Timeout = {timeout}" : "")}";
#endif
}
@ -145,15 +171,22 @@ namespace ZKuP
return adp;
}
public static MySqlConnection GetConnection()
{
//return conn;
return new MySqlConnection(GetConnstr());
}
internal static bool IsSecureConnection()
{
try
{
//#if DEBUG
if (SQL.isOnline)
{
using (var conn = GetConnection())
{
conn.Open();
@ -186,18 +219,35 @@ namespace ZKuP
}
//#endif
}
public static bool TestConnection()
}
catch (Exception)
{
if (!CheckDeviceConnection()) return false;
return false;
}
return false;
}
//public static bool TestConnection()
//{
// return MySqlConnectionChecker.CheckConnectionAsync().Result.IsConnected;
//}
public async static Task<bool> TestConnection()
{
//if (!CheckDeviceConnection()) return false;
var online = await Task.Run(() => CheckOnline());
if (online)
{
CancellationTokenSource cts = new CancellationTokenSource();
cts.CancelAfter(TimeSpan.FromSeconds(2));
var conn = GetConnection();
using (conn)
{
try
{
conn.Open();
conn.OpenAsync(cts.Token).Wait();
//conn.Open();
conn.Close();
isOnline = true;
@ -206,17 +256,40 @@ namespace ZKuP
catch (Exception ex)
{
conn.Close();
Log.WriteLog(ex.ToString());
//Log.WriteLog(ex.ToString());
if (isOnline)
{
isOnline = false;
System.Windows.MessageBox.Show($"Verbindung zum Server konnte nicht hergestellt werden\n\nInterne Meldung: {ex.Message}", "Fehler", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Error);
throw new InvalidOperationException("MySQL Server ist nicht erreichbar");
}
return false;
}
}
}
return false;
}
private static void NetworkChange_NetworkAvailabilityChanged(object sender, NetworkAvailabilityEventArgs e)
{
if (!onlineTimer.IsEnabled)
{
onlineTimer.Interval = TimeSpan.FromSeconds(1);
onlineTimer.Tick += OnlineTimer_Tick;
onlineTimer.Start();
}
else
{
onlineTimer.Stop();
}
}
private async static void OnlineTimer_Tick(object sender, EventArgs e)
{
await Task.Run(() => TestConnection());
}
public static async Task<int> CreateAndWriteSQL(string strSQL, List<MySqlParameter> parameters)
{
@ -297,6 +370,8 @@ namespace ZKuP
{
var filter = list.DefaultView.RowFilter;
if (SQL.isOnline)
{
var conn = GetConnection();
try
{
@ -339,11 +414,13 @@ namespace ZKuP
Log.WriteLog(ex.ToString());
return list;
}
}
return list;
}
public static async Task WriteSQL(string SQLQuery)
{
if (SQL.isOnline)
{
var conn = GetConnection();
@ -381,9 +458,11 @@ namespace ZKuP
Log.WriteLog(ex.ToString());
}
}
}
public static async Task<int> WriteSQLwithReturn(string SQLQuery)
{
if (SQL.isOnline) {
var conn = GetConnection();
var result = 0;
@ -424,10 +503,13 @@ namespace ZKuP
return result;
}
}
return 0;
}
public static async Task WriteSQL(string SQLQuery, byte[] data)
{
if (SQL.isOnline) {
var conn = GetConnection();
try
@ -452,7 +534,11 @@ namespace ZKuP
Log.WriteLog(ex.ToString());
}
}
}
public static async Task<int> WriteSQL(MySqlCommand mySqlCommand)
{
if (SQL.isOnline)
{
var conn = GetConnection();
@ -502,18 +588,22 @@ namespace ZKuP
{
#if DEBUG
conn.Close();
throw;
return -1;
//throw;
#else
conn.Close();
Log.WriteLog(ex.ToString());
if (!ex.InnerException.Message.Contains("SocketException")) Log.WriteLog(ex.ToString());
return -1;
#endif
}
}
return -1;
}
public static async Task<DataTable> ReadSQL(string SQLCommand, DataTable list)
{
if (SQL.isOnline)
{
var conn = GetConnection();
@ -544,15 +634,17 @@ namespace ZKuP
Log.WriteLog(ex.ToString());
return list;
}
}
return list;
}
public static async Task<DataTable> ReadSQL(string SQLCommand)
{
DataTable list = new DataTable();
if (SQL.isOnline)
{
var conn = GetConnection();
DataTable list = new DataTable();
try
{
@ -577,17 +669,19 @@ namespace ZKuP
Log.WriteLog(ex.ToString());
return list;
}
}
return list;
}
public static string ReadSingleValue(string SQLCommand)
{
object queryResult = null;
if (SQL.isOnline)
{
var conn = GetConnection();
MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(SQLCommand, conn);
object queryResult;
using (conn)
{
@ -602,6 +696,7 @@ namespace ZKuP
conn.Close();
}
}
if (queryResult != null)
return queryResult.ToString();
else
@ -609,10 +704,12 @@ namespace ZKuP
}
public async static Task<string> ReadSingleValueAsync(string SQLCommand)
{
object queryResult = null;
if (SQL.isOnline)
{
var conn = GetConnection();
object queryResult;
using (conn)
{
conn.Close();
@ -627,6 +724,7 @@ namespace ZKuP
conn.Close();
}
}
if (queryResult != null)
@ -636,6 +734,8 @@ namespace ZKuP
}
public static System.Drawing.Bitmap ReadSingleByteArr(string SQLCommand)
{
if (SQL.isOnline)
{
var conn = GetConnection();
@ -679,13 +779,17 @@ namespace ZKuP
//else
return image;
}
return null;
}
public static async Task<List<string>> ReadListString(string SQLCommand, int ColumnID = 0)
{
List<string> queryResult = new List<string>();
if (SQL.isOnline)
{
var conn = GetConnection();
MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(SQLCommand, conn);
List<string> queryResult = new List<string>();
using (conn)
{
@ -709,7 +813,7 @@ namespace ZKuP
conn.Close();
}
}
return queryResult;
}
@ -720,11 +824,13 @@ namespace ZKuP
/// <param name="ColumnID"></param>
/// <returns></returns>
public static async Task<List<string>> ReadDateTimeAndStringList(string SQLCommand, int ColumnID = 0)
{
List<string> queryResult = new List<string>();
if (SQL.isOnline)
{
var conn = GetConnection();
MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(SQLCommand, conn);
List<string> queryResult = new List<string>();
using (conn)
{
@ -745,7 +851,7 @@ namespace ZKuP
conn.Close();
}
}
return queryResult;
}
@ -757,11 +863,13 @@ namespace ZKuP
/// <param name="ColumnID"></param>
/// <returns></returns>
public static async Task<List<string>> ReadListStringTwoColumns(string SQLCommand, string Seperator = ";", int ColumnID = 0)
{
List<string> queryResult = new List<string>();
if (SQL.isOnline)
{
var conn = GetConnection();
MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(SQLCommand, conn);
List<string> queryResult = new List<string>();
using (conn)
{
@ -785,7 +893,7 @@ namespace ZKuP
conn.Close();
}
}
return queryResult;
}
@ -798,11 +906,13 @@ namespace ZKuP
/// <param name="ColumnID"></param>
/// <returns></returns>
public static async Task<List<string>> ReadListStringMultipleColumns(string SQLCommand, int ColumnCount = 3, string SeperatorOne = ";", string SeperatorTwo = ";", string SeperatorThree = ";", string SeperatorFour = ";", int ColumnOne = 0, int ColumnTwo = 1, int ColumnThree = 2, int ColumnFour = 3, int ColumnFive = 4, string SeperatorFive = ";", int ColumnSix = 5)
{
List<string> queryResult = new List<string>();
if (SQL.isOnline)
{
var conn = GetConnection();
MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(SQLCommand, conn);
List<string> queryResult = new List<string>();
using (conn)
{
@ -846,18 +956,20 @@ namespace ZKuP
conn.Close();
}
}
return queryResult;
}
public static async Task<Dictionary<int, string>> ReadDictionary(string SQLCommand, int FirstColumn, int SecondColumn)
{
Dictionary<int, string> queryResult = new Dictionary<int, string>();
if (SQL.isOnline)
{
var conn = GetConnection();
MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(SQLCommand, conn);
Dictionary<int, string> queryResult = new Dictionary<int, string>();
using (conn)
{
@ -890,18 +1002,21 @@ namespace ZKuP
conn.Close();
}
}
return queryResult;
}
public static async Task<Dictionary<string, string>> ReadDictionary2(string SQLCommand, int FirstColumn, int SecondColumn)
{
Dictionary<string, string> queryResult = new Dictionary<string, string>();
if (SQL.isOnline)
{
var conn = GetConnection();
try
{
MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(SQLCommand, conn);
Dictionary<string, string> queryResult = new Dictionary<string, string>();
using (conn)
{
@ -945,6 +1060,7 @@ namespace ZKuP
conn.Close();
}
return queryResult;
}
@ -953,9 +1069,13 @@ namespace ZKuP
return new Dictionary<string, string>();
}
}
return queryResult;
}
public static async Task<bool> RowExists(string Table, string Column, string Value, bool isLike = false, string additionalWHERE = "")
{
if (SQL.isOnline)
{
var conn = GetConnection();
@ -977,32 +1097,10 @@ namespace ZKuP
conn.Open();
var result = cmd.ExecuteScalar();
conn.Close();
return result != null;
//object queryResult;
//var res = 0;
//using (conn)
//{
// using (cmd)
// {
// conn.Close();
// conn.Open();
// queryResult = cmd.ExecuteScalar();//Return an object so first check for null
// }
// conn.Close();
//}
//if (queryResult != null)
// res = Convert.ToInt16(queryResult);
//if (res == 1)
// return true;
//else if (res == 0)
// return false;
//else return false;
}
return false;
}

176
ZKuP/ThemeManager.cs Normal file
View File

@ -0,0 +1,176 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media.Imaging;
namespace ZKuP
{
internal class ThemeManager
{
MainWindow main = MainWindow.main;
internal void ChangeAccent(string Color)
{
Color = Color == null || Color == "" ? "Blue" : Color;
string DarkLight = Settings.GetSettingBool("DarkMode") ? "Dark" : "Light";
ControlzEx.Theming.ThemeManager.Current.ChangeTheme(System.Windows.Application.Current, $"{DarkLight}.{Color}");
}
internal bool dark = false;
internal void ChangeTheme()
{
if (!dark)
{
ControlzEx.Theming.ThemeManager.Current.ChangeTheme(System.Windows.Application.Current, "Dark.Blue");
main.imgDarkModeButton.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Resources/Sun.png", UriKind.Absolute));
main.imgLKWLang.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Resources/LKWLang_dark.png", UriKind.Absolute));
main.imgLKW.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Resources/LKW_dark.png", UriKind.Absolute));
main.imgSprinter.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Resources/Sprinter_dark.png", UriKind.Absolute));
main.imgPKW.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Resources/PKW_dark.png", UriKind.Absolute));
main.imgBike.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Resources/Bike_dark.png", UriKind.Absolute));
dark = true;
Settings.WriteSetting("DarkMode", true);
//Properties.Settings.Default.DarkMode = true;
}
else
{
ControlzEx.Theming.ThemeManager.Current.ChangeTheme(System.Windows.Application.Current, "Light.Blue");
main.imgDarkModeButton.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Resources/Moon.png", UriKind.Absolute));
main.imgLKWLang.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Resources/LKWLang.png", UriKind.Absolute));
main.imgLKW.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Resources/LKW.png", UriKind.Absolute));
main.imgSprinter.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Resources/Sprinter.png", UriKind.Absolute));
main.imgPKW.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Resources/PKW.png", UriKind.Absolute));
main.imgBike.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Resources/Bike.png", UriKind.Absolute));
dark = false;
Settings.WriteSetting("DarkMode", false);
//Properties.Settings.Default.DarkMode = false;
}
main.getFahrzeuge();
main.getBikes();
}
internal void ChangeTheme(bool darkSet)
{
if (darkSet)
{
ControlzEx.Theming.ThemeManager.Current.ChangeTheme(System.Windows.Application.Current, "Dark.Blue");
main.imgDarkModeButton.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Resources/Sun.png", UriKind.Absolute));
main.imgLKWLang.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Resources/LKWLang_dark.png", UriKind.Absolute));
main.imgLKW.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Resources/LKW_dark.png", UriKind.Absolute));
main.imgSprinter.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Resources/Sprinter_dark.png", UriKind.Absolute));
main.imgPKW.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Resources/PKW_dark.png", UriKind.Absolute));
main.imgBike.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Resources/Bike_dark.png", UriKind.Absolute));
dark = true;
Settings.WriteSetting("DarkMode", true);
//Properties.Settings.Default.DarkMode = true;
}
else
{
ControlzEx.Theming.ThemeManager.Current.ChangeTheme(System.Windows.Application.Current, "Light.Blue");
main.imgDarkModeButton.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Resources/Moon.png", UriKind.Absolute));
main.imgLKWLang.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Resources/LKWLang.png", UriKind.Absolute));
main.imgLKW.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Resources/LKW.png", UriKind.Absolute));
main.imgSprinter.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Resources/Sprinter.png", UriKind.Absolute));
main.imgPKW.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Resources/PKW.png", UriKind.Absolute));
main.imgBike.Source = new BitmapImage(new Uri(@"pack://application:,,,/"
+ System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
+ ";component/"
+ $"Resources/Bike.png", UriKind.Absolute));
dark = false;
Settings.WriteSetting("DarkMode", false);
//Properties.Settings.Default.DarkMode = false;
}
main.getFahrzeuge();
main.getBikes();
}
}
}

View File

@ -314,6 +314,7 @@
<Compile Include="PrintParkausweis.xaml.cs">
<DependentUpon>PrintParkausweis.xaml</DependentUpon>
</Compile>
<Compile Include="RoleManager.cs" />
<Compile Include="SetHinweis.xaml.cs">
<DependentUpon>SetHinweis.xaml</DependentUpon>
</Compile>
@ -324,6 +325,7 @@
<Compile Include="signoPad.cs" />
<Compile Include="SQL.cs" />
<Compile Include="StringExtensions.cs" />
<Compile Include="ThemeManager.cs" />
<Compile Include="ucSpinnerPiston.xaml.cs">
<DependentUpon>ucSpinnerPiston.xaml</DependentUpon>
</Compile>