Compare commits

..

2 Commits

Author SHA1 Message Date
f846790764 Bump Version 2025-09-19 10:34:00 +02:00
71952c9f11 Offline detection and acting refactored
Resolved Bug with CardReader only working once
Resolved Bug with Message "Card does not exist", even if it exists
2025-09-19 10:33:07 +02:00
16 changed files with 1933 additions and 1459 deletions

View File

@ -17,8 +17,13 @@
<RowDefinition Height="0.3*"/> <RowDefinition Height="0.3*"/>
<RowDefinition Height="0.7*"/> <RowDefinition Height="0.7*"/>
</Grid.RowDefinitions> </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"/> <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"/> <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"/> <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"/> <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;
using System.Windows.Media.Imaging; using System.Windows.Media.Imaging;
using System.Windows.Shapes; using System.Windows.Shapes;
using System.Windows.Threading;
namespace ZKuP namespace ZKuP
{ {
@ -34,6 +35,8 @@ namespace ZKuP
string _ap = ""; string _ap = "";
bool _needTel = true; 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 = "") 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; _user = user;
@ -46,6 +49,10 @@ namespace ZKuP
Helper.InitSerial(); Helper.InitSerial();
Helper.DataReceived += Helper_DataReceived; Helper.DataReceived += Helper_DataReceived;
blinkTimer.Interval = TimeSpan.FromMilliseconds(50);
blinkTimer.Tick += BlinkTimer_Tick;
blinkTimer.Start();
this.Title = "Karten ausgeben - " + count; this.Title = "Karten ausgeben - " + count;
lblFirma.Text = isBesucher ? "Firma" : "Firma*"; lblFirma.Text = isBesucher ? "Firma" : "Firma*";
@ -96,34 +103,83 @@ namespace ZKuP
} }
} }
private void Helper_DataReceived(object sender, string e) bool up = false;
private void BlinkTimer_Tick(object sender, EventArgs e)
{ {
var text = ""; if (up)
Dispatcher.Invoke(() => text = tbNummer.Text = e.Split('=')[0]);
if (!string.IsNullOrWhiteSpace(text))
{ {
var farbe = SQL.ReadSingleValue($"SELECT Farbe FROM {MainWindow.table}.kartennummern WHERE Kartennummer='{text}'"); if (borderKartenleser.Opacity < 1)
borderKartenleser.Opacity += 0.05;
Dispatcher.Invoke(() => else
{ up = !up;
switch (farbe) }
{ else
case "1": {
cbColor.SelectedValue = "Rot"; if (borderKartenleser.Opacity > 0)
break; borderKartenleser.Opacity -= 0.05;
case "2": else
cbColor.SelectedValue = "Grün"; up = !up;
break;
}
});
} }
} }
private void Helper_DataReceived(object sender, string e)
{
var text = "";
Dispatcher.Invoke(() =>
{
text = tbNummer.Text = e.Split('=')[0];
borderKartenleser.Visibility = Visibility.Collapsed;
blinkTimer.Stop();
if (!string.IsNullOrWhiteSpace(text))
{
var farbe = SQL.ReadSingleValue($"SELECT Farbe FROM {MainWindow.table}.kartennummern WHERE Kartennummer='{text}'");
Dispatcher.Invoke(() =>
{
switch (farbe)
{
case "1":
cbColor.SelectedValue = "Rot";
break;
case "2":
cbColor.SelectedValue = "Grün";
break;
}
});
}
});
}
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) 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)) if (string.IsNullOrWhiteSpace(tbNummer.Text))
MessageBox.Show(this, "Kartennummer angeben!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); 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) else if (cbColor.SelectedIndex == -1)
MessageBox.Show(this, "Kartenfarbe auswählen!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); MessageBox.Show(this, "Kartenfarbe auswählen!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
else if (string.IsNullOrWhiteSpace(tbUser.Text)) else if (string.IsNullOrWhiteSpace(tbUser.Text))
@ -181,6 +237,5 @@ namespace ZKuP
{ {
Helper.CheckWindowIsInScreenSpace(this); Helper.CheckWindowIsInScreenSpace(this);
} }
} }
} }

View File

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

View File

@ -955,7 +955,7 @@ namespace ZKuP
string time = ""; string time = "";
private async void ParkSetPreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) 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"); 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]})"); // 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(); LoadBEs();
@ -167,7 +167,7 @@ namespace ZKuP
private void LoadBEs() private void LoadBEs()
{ {
var be = new List<string>(); 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(); be = SQL.ReadListString($"SELECT beFlaeche FROM {MainWindow.table}.beBelegung WHERE Projektleiter = '{Environment.UserName}' AND bis > now()").Result.Distinct().ToList(); //FillBEList();
else else
be = SQL.ReadListString($"SELECT beFlaeche FROM {MainWindow.table}.beBelegung WHERE Projektleiter = '{Environment.UserName}' AND bis > now()").Result.Distinct().ToList(); 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() 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(); requestListAdmin();
} }
@ -225,13 +225,27 @@ namespace ZKuP
private void requestList() 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}' " + firmen = SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.firmen WHERE Ersteller = '{Environment.UserName}' " +
$"OR Ersteller = '{Environment.UserDomainName}{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 = '{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 = '{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 = '{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 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; , firmen).Result;
//FirmaView = Firma.DataTableToFirma(firmen); //FirmaView = Firma.DataTableToFirma(firmen);
dgFirmen.DataContext = firmen; dgFirmen.DataContext = firmen;
@ -2139,7 +2153,7 @@ namespace ZKuP
private void cbBE_MouseEnter(object sender, MouseEventArgs e) 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) if ((cbBE.Items).Count > 0)
{ {

View File

@ -16,15 +16,25 @@
<StackPanel Grid.Row="0"> <StackPanel Grid.Row="0">
<TextBlock Text="Zurückgegebene Rote Karte:" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> <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}}"/> <TextBlock x:Name="lblRotInfo" Text="" Margin="0,5,0,0" TextAlignment="Center" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
</StackPanel> </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"> <StackPanel Grid.Row="1">
<TextBlock Text="Ausgegebene Grün Karte:" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/> <TextBlock Text="Ausgegebene Grün Karte:" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<TextBox x:Name="tbGruen"/> <TextBox x:Name="tbGruen" TextChanged="tbGruen_TextChanged"/>
</StackPanel> </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"/> <Button x:Name="btnClose" Content="Bestätigen" Grid.Row="2" Height="30" HorizontalAlignment="Right" VerticalAlignment="Bottom" Click="btnClose_Click"/>
</Grid> </Grid>
</mah:MetroWindow> </mah:MetroWindow>

View File

@ -13,6 +13,7 @@ using System.Windows.Input;
using System.Windows.Media; using System.Windows.Media;
using System.Windows.Media.Imaging; using System.Windows.Media.Imaging;
using System.Windows.Shapes; using System.Windows.Shapes;
using System.Windows.Threading;
namespace ZKuP namespace ZKuP
{ {
@ -20,7 +21,8 @@ namespace ZKuP
/// Interaktionslogik für KartenTausch.xaml /// Interaktionslogik für KartenTausch.xaml
/// </summary> /// </summary>
public partial class KartenTausch : MetroWindow public partial class KartenTausch : MetroWindow
{ {
DispatcherTimer blinkTimer = new DispatcherTimer();
public KartenTausch() public KartenTausch()
{ {
@ -30,6 +32,10 @@ namespace ZKuP
Helper.InitSerial(); Helper.InitSerial();
Helper.DataReceived += Helper_DataReceived; Helper.DataReceived += Helper_DataReceived;
blinkTimer.Interval = TimeSpan.FromMilliseconds(50);
blinkTimer.Tick += BlinkTimer_Tick;
blinkTimer.Start();
} }
private void cbRot_SelectionChanged(object sender, SelectionChangedEventArgs e) private void cbRot_SelectionChanged(object sender, SelectionChangedEventArgs e)
@ -39,11 +45,38 @@ namespace ZKuP
if (split.Length > 1) if (split.Length > 1)
lblRotInfo.Text = $"Benutzer: {split[0]} Telefon: {split[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) private void Helper_DataReceived(object sender, string e)
{ {
borderKartenleserRot.Visibility = Visibility.Collapsed;
blinkTimer.Stop();
Dispatcher.Invoke(() => Dispatcher.Invoke(() =>
{ {
if (cbRot.ItemsSource.Cast<string>().ToList().Contains(e.Split('=')[0].ToString())) 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) private async void btnClose_Click(object sender, RoutedEventArgs e)
@ -106,5 +196,6 @@ namespace ZKuP
{ {
Helper.CheckWindowIsInScreenSpace(this); Helper.CheckWindowIsInScreenSpace(this);
} }
} }
} }

View File

@ -40,6 +40,30 @@
<local:SystemIconConverter x:Key="SystemIcon"></local:SystemIconConverter> <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"> <Storyboard x:Key="sbConnection" RepeatBehavior="Forever">
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="imgConnection" Storyboard.TargetProperty="(UIElement.Opacity)"> <DoubleAnimationUsingKeyFrames Storyboard.TargetName="imgConnection" Storyboard.TargetProperty="(UIElement.Opacity)">
@ -1172,9 +1196,26 @@
</RichTextBox> </RichTextBox>
<Button x:Name="btnCloseHelp" Content="Schließen" Margin="10,10" VerticalAlignment="Bottom" Click="BtnCloseHelp_Click"/> <Button x:Name="btnCloseHelp" Content="Schließen" Margin="10,10" VerticalAlignment="Bottom" Click="BtnCloseHelp_Click"/>
</Grid> </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">
<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> <Grid>
<!--<Border BorderBrush="Gray" BorderThickness="2" Width="400" Height="364"/>--> <!--<Border BorderBrush="Gray" BorderThickness="2" Width="400" Height="364"/>-->
<CheckBox x:Name="cbShowParkcardToAccept" Content="Meldung 'Es sind Parkkarten zu Genehmigen vorhanden' anzeigen?" Margin="10,20,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" Checked="cbShowParkcardToAccept_Checked" Unchecked="cbShowParkcardToAccept_Unchecked"/> <CheckBox x:Name="cbShowParkcardToAccept" Content="Meldung 'Es sind Parkkarten zu Genehmigen vorhanden' anzeigen?" Margin="10,20,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" Checked="cbShowParkcardToAccept_Checked" Unchecked="cbShowParkcardToAccept_Unchecked"/>

File diff suppressed because it is too large Load Diff

View File

@ -48,7 +48,7 @@ namespace ZKuP
private void Query() 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; 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 arr = (btn.DataContext as DataRowView).Row.ItemArray;
var user = arr[0].ToString(); 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) if (arr[0].ToString() == Helper.InsertSpaceBeforeUpperCase(Environment.UserName) || arr[6].ToString() == UserID)
{ {

View File

@ -78,7 +78,7 @@ namespace ZKuP
private void updateList() 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(); requestListAdmin();
} }
@ -90,10 +90,23 @@ namespace ZKuP
private void requestList() 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}' " + visitors = SQL.ReadSQL($"SELECT * FROM {MainWindow.table}.besucher WHERE Ersteller = '{Environment.UserName}' " +
$"OR Ersteller = '{Environment.UserDomainName}{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 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; , visitors).Result;
//VisitorView = Visitor.DataTableToVisitor(visitors); //VisitorView = Visitor.DataTableToVisitor(visitors);

View File

@ -3,7 +3,9 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Threading;
namespace ZKuP namespace ZKuP
{ {
@ -16,54 +18,52 @@ namespace ZKuP
public TimeSpan ResponseTime { get; set; } public TimeSpan ResponseTime { get; set; }
public Exception Exception { 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() public static async Task<ConnectionResult> CheckConnectionAsync()
{ {
var result = new ConnectionResult(); var result = new ConnectionResult();
var startTime = DateTime.Now; var startTime = DateTime.Now;
try using (var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5)))
{ {
using (var connection = new MySqlConnection(SQL.GetConnstr(true))) try
{ {
await connection.OpenAsync(); using (var connection = new MySqlConnection(SQL.GetConnstr(true, 1)))
// Teste mit einer einfachen Abfrage
using (var command = new MySqlCommand("SELECT 1", connection))
{ {
var testResult = await command.ExecuteScalarAsync(); await connection.OpenAsync(cts.Token);
if (testResult != null && testResult.ToString() == "1") using (var command = new MySqlCommand("SELECT 1", connection))
{ {
result.IsConnected = true; var testResult = await command.ExecuteScalarAsync(cts.Token);
result.Message = "Verbindung erfolgreich hergestellt"; if (testResult != null && testResult.ToString() == "1")
} {
else result.IsConnected = true;
{ result.Message = "Verbindung erfolgreich hergestellt";
result.IsConnected = false; }
result.Message = "Verbindung hergestellt, aber Testabfrage fehlgeschlagen"; else
{
result.IsConnected = false;
result.Message = "Verbindung hergestellt, aber Testabfrage fehlgeschlagen";
}
} }
} }
} }
} catch (OperationCanceledException) when (cts.Token.IsCancellationRequested)
catch (MySqlException ex) {
{ result.IsConnected = false;
result.IsConnected = false; result.Message = "Verbindungstest nach 1 Sekunde abgebrochen (Timeout)";
result.Exception = ex; }
result.Message = GetMySqlErrorMessage(ex); catch (MySqlException ex)
} {
catch (Exception ex) result.IsConnected = false;
{ result.Exception = ex;
result.IsConnected = false; result.Message = GetMySqlErrorMessage(ex);
result.Exception = ex; }
result.Message = $"Unerwarteter Fehler: {ex.Message}"; catch (Exception ex)
{
result.IsConnected = false;
result.Exception = ex;
result.Message = $"Unerwarteter Fehler: {ex.Message}";
}
} }
result.ResponseTime = DateTime.Now - startTime; result.ResponseTime = DateTime.Now - startTime;

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
}
}

File diff suppressed because it is too large Load Diff

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