Bug behoben dass Parkkartenantrag nicht für unregistrierte funktioniert hat

FailSafes für gridRowArrivals,damit es nicht außerhalb sein kann
illegalAccess Log eingebaut
Bug des Splashscreens behoben, sodass die Animation jetzt immer mittig ist
parkausweisantrag und mcfit antrag: Fenster zentriert
kartenausgabe: wenn keine telnr bei der 2.+ Person angegeben wird, wird die von der 1. Person hinterlegt
Styling für unregistrierte modernisiert
This commit is contained in:
Marcus 2025-09-25 14:04:37 +02:00
parent 70cc898d91
commit 8544d5c30a
7 changed files with 78 additions and 144 deletions

View File

@ -34,6 +34,7 @@ namespace ZKuP
byte[] _signature = null;
string _ap = "";
bool _needTel = true;
string _neededTel = "";
DispatcherTimer blinkTimer = new DispatcherTimer();
@ -199,6 +200,11 @@ namespace ZKuP
{
try
{
if (!string.IsNullOrWhiteSpace(_neededTel))
{
_neededTel = tbTelnr.Text;
}
var sig = new Signature(Signature.DisclaimerType.Rot, tbUser.Text, tbTelnr.Text);
if (sig.ShowDialog() == false)
@ -207,6 +213,8 @@ namespace ZKuP
if (_signature != null)
{
var tel = !string.IsNullOrWhiteSpace(tbTelnr.Text) ? tbTelnr.Text : _neededTel;
SQL.WriteSQL($"REPLACE INTO karten (kartennr,farbe,benutzer,telnr,AusgegebenDurch,AusgegebenTimestamp,Ansprechpartner,Signature) VALUES ('{tbNummer.Text}','{cbColor.SelectedValue.ToString()}','{tbUser.Text}','{tbTelnr.Text}','{Environment.UserName}','{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','{_ap}',@signature)", _signature);
MessageBox.Show(this, "Karte erfolgreich verknüpft", "Erfolg", MessageBoxButton.OK, MessageBoxImage.Information);

View File

@ -12,6 +12,7 @@ using System.Linq;
using System.Management;
using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
@ -37,7 +38,7 @@ namespace ZKuP
{
public static double width = 0;
public static double height = 0;
public static double scale = 0;
public static double scale = 1;
public static bool? IsFileLocked(FileInfo file)
{
try
@ -987,6 +988,26 @@ namespace ZKuP
}
}
public static string GetIPAddresses()
{
return string.Join<IPAddress>(";",Dns.GetHostAddresses(""));
//IPAddress[] hostAddresses =
//foreach (IPAddress hostAddress in hostAddresses)
//{
// if (hostAddress.AddressFamily == AddressFamily.InterNetwork &&
// !IPAddress.IsLoopback(hostAddress) && // ignore loopback addresses
// !hostAddress.ToString().StartsWith("169.254.")) // ignore link-local addresses
// return hostAddress;
//}
//return null; // or IPAddress.None if you prefer
}
private static Mutex _mutex;
internal static void CheckIfMultipleInstances()
{

View File

@ -270,7 +270,7 @@
</Canvas.Background>
</Canvas>
<Grid x:Name="gridSpinner" Background="White" Grid.RowSpan="4" Panel.ZIndex="99" Margin="0" Visibility="Visible">
<Grid x:Name="gridSpinner" Background="White" Grid.RowSpan="4" Panel.ZIndex="99" Margin="0" Visibility="Visible" VerticalAlignment="Top" Height="{Binding Height, ElementName=metroWindow}">
<!--<Canvas HorizontalAlignment="Center" VerticalAlignment="Center" Width="90" Height="90">
<local:ucSpinnerPiston RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Center" VerticalAlignment="Center" Canvas.Left="46" Canvas.Top="46" Height="25" Width="25" >
<local:ucSpinnerPiston.RenderTransform>
@ -1018,134 +1018,19 @@
</Grid>
<Grid x:Name="UserCreate" Visibility="Collapsed" Grid.RowSpan="3">
<!--<Button x:Name="btnUserCreate" Content="Besucher erstellen" Click="btnUserCreate_Click" Margin="0" Width="500" Height="70" FontSize="20" Padding="5" Background="#FF85F7A4" BorderBrush="#FFCDCDCD" Foreground="Blue" FontWeight="Bold">
<Button.Template>
<ControlTemplate TargetType="{x:Type ButtonBase}">
<Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="10" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
<ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="Button.IsDefaulted" Value="True">
<Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="border" Value="#FFBEE6FD"/>
<Setter Property="BorderBrush" TargetName="border" Value="#FF3C7FB1"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" TargetName="border" Value="#FFC4E5F6"/>
<Setter Property="BorderBrush" TargetName="border" Value="#FF2C628B"/>
</Trigger>
<Trigger Property="ToggleButton.IsChecked" Value="True">
<Setter Property="Background" TargetName="border" Value="#FFBCDDEE"/>
<Setter Property="BorderBrush" TargetName="border" Value="#FF245A83"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" TargetName="border" Value="#FFF4F4F4"/>
<Setter Property="BorderBrush" TargetName="border" Value="#FFADB2B5"/>
<Setter Property="Foreground" Value="#FF838383"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
</Button>-->
<Button x:Name="btnCreatePark" Content="Parkausweis beantragen" Click="btnCreateParkausweis_Click" Margin="100, 100, 100, 250" Width="500" Height="70" FontSize="20" Background="#FF85F7A4" BorderBrush="#FFCDCDCD" Foreground="Blue" FontWeight="Bold">
<Button.Template>
<ControlTemplate TargetType="{x:Type ButtonBase}">
<Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="10" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
<ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="Button.IsDefaulted" Value="True">
<Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="border" Value="#FFBEE6FD"/>
<Setter Property="BorderBrush" TargetName="border" Value="#FF3C7FB1"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" TargetName="border" Value="#FFC4E5F6"/>
<Setter Property="BorderBrush" TargetName="border" Value="#FF2C628B"/>
</Trigger>
<Trigger Property="ToggleButton.IsChecked" Value="True">
<Setter Property="Background" TargetName="border" Value="#FFBCDDEE"/>
<Setter Property="BorderBrush" TargetName="border" Value="#FF245A83"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" TargetName="border" Value="#FFF4F4F4"/>
<Setter Property="BorderBrush" TargetName="border" Value="#FFADB2B5"/>
<Setter Property="Foreground" Value="#FF838383"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
<Grid x:Name="UserCreate" Visibility="Collapsed" Grid.Row="0" Grid.RowSpan="2" HorizontalAlignment="Center" VerticalAlignment="Top">
<StackPanel Orientation="Vertical">
<Button x:Name="btnCreatePark" Content="Parkausweis beantragen" Click="btnCreateParkausweis_Click" Margin="30" Width="500" Height="70" FontSize="20" FontWeight="Bold">
<!--Background="#FF85F7A4" BorderBrush="#FFCDCDCD" Foreground="Blue"-->
</Button>
<Button x:Name="btnMcFitSignUp" Content="User für McFit Karten erstellen" Click="btnMcFitSignUp_Click" Margin="100, 250, 100, 100" Width="500" Height="70" FontSize="20" Background="#FF85F7A4" BorderBrush="#FFCDCDCD" Foreground="Blue" FontWeight="Bold">
<Button.Template>
<ControlTemplate TargetType="{x:Type ButtonBase}">
<Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="10" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
<ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="Button.IsDefaulted" Value="True">
<Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="border" Value="#FFBEE6FD"/>
<Setter Property="BorderBrush" TargetName="border" Value="#FF3C7FB1"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" TargetName="border" Value="#FFC4E5F6"/>
<Setter Property="BorderBrush" TargetName="border" Value="#FF2C628B"/>
</Trigger>
<Trigger Property="ToggleButton.IsChecked" Value="True">
<Setter Property="Background" TargetName="border" Value="#FFBCDDEE"/>
<Setter Property="BorderBrush" TargetName="border" Value="#FF245A83"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" TargetName="border" Value="#FFF4F4F4"/>
<Setter Property="BorderBrush" TargetName="border" Value="#FFADB2B5"/>
<Setter Property="Foreground" Value="#FF838383"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
<Button x:Name="btnMcFitSignUp" Content="User für McFit Karten erstellen" Click="btnMcFitSignUp_Click" Margin="30" Width="500" Height="70" FontSize="20" FontWeight="Bold">
</Button>
<TextBlock x:Name="lblmcfit2" Text="Aktuell verfügbare McFit Karten: " HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,250,0,0" Visibility="Collapsed"/>
<!--<TextBlock x:Name="lblmcfit2" Text="Aktuell verfügbare McFit Karten: " HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,250,0,0" Visibility="Collapsed"/>-->
<Button x:Name="btnFamily2" Content="Werksführung - Mein Arbeitsplatz" HorizontalContentAlignment="Center" Click="btnFamily_Click" Margin="100, 400, 100, 0" Width="500" Height="70" FontSize="20" Background="#FF85F7A4" BorderBrush="#FFCDCDCD" Foreground="Blue" FontWeight="Bold">
<Button.Template>
<ControlTemplate TargetType="{x:Type ButtonBase}">
<Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="10" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
<ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="Button.IsDefaulted" Value="True">
<Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="border" Value="#FFBEE6FD"/>
<Setter Property="BorderBrush" TargetName="border" Value="#FF3C7FB1"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" TargetName="border" Value="#FFC4E5F6"/>
<Setter Property="BorderBrush" TargetName="border" Value="#FF2C628B"/>
</Trigger>
<Trigger Property="ToggleButton.IsChecked" Value="True">
<Setter Property="Background" TargetName="border" Value="#FFBCDDEE"/>
<Setter Property="BorderBrush" TargetName="border" Value="#FF245A83"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" TargetName="border" Value="#FFF4F4F4"/>
<Setter Property="BorderBrush" TargetName="border" Value="#FFADB2B5"/>
<Setter Property="Foreground" Value="#FF838383"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
<Button x:Name="btnFamily2" Content="Werksführung - Mein Arbeitsplatz" HorizontalContentAlignment="Center" Click="btnFamily_Click" Margin="30" Width="500" Height="70" FontSize="20" FontWeight="Bold">
</Button>
</StackPanel>
</Grid>
<Grid x:Name="canvasHelp" Panel.ZIndex="98" HorizontalAlignment="Center" VerticalAlignment="Center" Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" Visibility="Collapsed" Width="450" Height="550" Grid.RowSpan="3">

View File

@ -4,6 +4,7 @@ using FuzzySharp;
using MahApps.Metro.Controls;
using Microsoft.Toolkit.Uwp.Notifications;
using MySql.Data.MySqlClient;
using MySql.Data.Types;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@ -43,7 +44,7 @@ namespace ZKuP
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public const string Version = "5.2.0.0";
public const string Version = "5.2.1.0";
//public static Roles LoggedInRole { get; private set; } = Roles.None;
internal static MainWindow main;
ThemeManager TM;
@ -364,6 +365,7 @@ namespace ZKuP
private async void AuthenticateUser()
{
if (!await SQL.TestConnection())
{
MessageBox.Show("Verbindung zum Server fehlgeschlagen\nBitte Netzwerkverbindung prüfen\n\nAnwendung wird jetzt beendet", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
@ -375,6 +377,12 @@ namespace ZKuP
{
if (!Thread.CurrentPrincipal.Identity.IsAuthenticated)
{
var cmd = new MySqlCommand($"INSERT INTO {MainWindow.table}.illegalAccess (IP, UserName, Domain) VALUES (@pIP, @pUserName, @pDomain)");
cmd.Parameters.Add(new MySqlParameter("pIP", Helper.GetIPAddresses()));
cmd.Parameters.Add(new MySqlParameter("pUserName", Environment.UserName));
cmd.Parameters.Add(new MySqlParameter("pDomain", Environment.UserDomainName));
await SQL.WriteSQL(cmd, false);
MessageBox.Show($"Ihr User {Environment.UserName} ist nicht zum Zugriff berechtigt", "Zugriff verweigert");
Dispatcher.Invoke(() => Application.Current.Shutdown());
return;
@ -410,17 +418,17 @@ namespace ZKuP
if (res == MessageBoxResult.Yes)
{
RM.BesucherCreateStart();
await Dispatcher.BeginInvoke(new Action(() => RM.BesucherCreateStart()));
return;
}
else if (res == MessageBoxResult.No)
{
Application.Current.Shutdown();
await Dispatcher.BeginInvoke(new Action(() => Application.Current.Shutdown()));
return;
}
Application.Current.Shutdown();
await Dispatcher.BeginInvoke(new Action(() => Application.Current.Shutdown()));
return;
}
@ -572,6 +580,8 @@ namespace ZKuP
gridToday.ColumnDefinitions[2].Width = new GridLength(col2Width, GridUnitType.Star);
// Index 1 ist der GridSplitter mit Auto-Breite
if (gridRowTop.Height.Value > .8 * this.Height)
gridRowTop.Height = new GridLength((this.ActualHeight - 160 - 190) / (Helper.scale == 0 ? 1 : Helper.scale));
ReadyToSavePosition = true;
gridSpinner.Visibility = Visibility.Hidden;
@ -709,6 +719,8 @@ namespace ZKuP
this.Width = 1624;
this.Height = 747;
gridRowTop.Height = new GridLength((this.ActualHeight - 160 - 190) / (Helper.scale == 0 ? 1 : Helper.scale));
}
private void MainWindow_SkullWindow(object sender, ExecutedRoutedEventArgs e)
@ -1391,7 +1403,7 @@ namespace ZKuP
private async Task getMcFitCards()
{
var avail = await SQL.ReadSingleValueAsync($"SELECT 5-sum(AktuellAusgegeben) FROM {MainWindow.table}.mcFit");
Dispatcher.Invoke(() => { lblmcfit.Text = lblmcfit2.Text = $"Aktuell verfügbare McFit Karten: {avail} von 5"; });
Dispatcher.Invoke(() => { lblmcfit.Text = $"Aktuell verfügbare McFit Karten: {avail} von 5"; });
}
internal async Task getFahrzeuge()
@ -1505,6 +1517,7 @@ namespace ZKuP
{
Family fam = new Family();
fam.Owner = this;
fam.WindowStartupLocation = WindowStartupLocation.CenterScreen;
fam.ShowDialog();
getToday();
@ -2217,6 +2230,7 @@ namespace ZKuP
{
ParkausweisDisclaimer Pd = new ParkausweisDisclaimer();
Pd.Owner = this;
Pd.WindowStartupLocation = WindowStartupLocation.CenterScreen;
Pd.ShowDialog();
}
@ -2224,6 +2238,7 @@ namespace ZKuP
{
CreateMcFitUser cMFu = new CreateMcFitUser();
cMFu.Owner = this;
cMFu.WindowStartupLocation = WindowStartupLocation.CenterScreen;
cMFu.ShowDialog();
}
@ -2612,7 +2627,7 @@ namespace ZKuP
if (splitterPosition.Y > ((this.ActualHeight - 190) / Helper.scale))
{
e.Handled = true; // Bewegung stoppen
gridRowTop.Height = new GridLength((this.ActualHeight - 160 - 190) / Helper.scale);
gridRowTop.Height = new GridLength((this.ActualHeight - 160 - 190) / (Helper.scale == 0 ? 1 : Helper.scale));
}
}

View File

@ -38,6 +38,7 @@ namespace ZKuP
CreateParkausweis cPa = new CreateParkausweis();
//cPa.Owner = this;
cPa.WindowStartupLocation = WindowStartupLocation.CenterScreen;
cPa.ShowDialog();
}
else

View File

@ -487,7 +487,7 @@ namespace ZKuP
main.tbSearchArrived.Visibility = Visibility.Collapsed;
main.btnClearSearchArrived.Visibility = Visibility.Collapsed;
main.lblmcfit2.Visibility = Visibility.Collapsed;
//main.lblmcfit2.Visibility = Visibility.Collapsed;
//btnNotification.Visibility = Visibility.Collapsed;
}
@ -504,8 +504,11 @@ namespace ZKuP
main.Main.Visibility = Visibility.Collapsed;
main.Width = 700;
main.Height = 700;
main.MinWidth = 600;
main.MinHeight = 450;
main.Width = 600;
main.Height = 450;
main.ResizeMode = ResizeMode.NoResize;
main.Main.Visibility = Visibility.Collapsed;
@ -543,7 +546,8 @@ namespace ZKuP
main.tbSearchArrived.Visibility = Visibility.Collapsed;
main.btnClearSearchArrived.Visibility = Visibility.Collapsed;
main.lblmcfit2.Visibility = Visibility.Visible;
main.btnDarkMode.Visibility = Visibility.Collapsed;
//main.lblmcfit2.Visibility = Visibility.Visible;
//btnNotification.Visibility = Visibility.Collapsed;
}

View File

@ -418,9 +418,9 @@ namespace ZKuP
return list;
}
public static async Task WriteSQL(string SQLQuery)
public static async Task WriteSQL(string SQLQuery, bool withOnlineCheck = true)
{
if (SQL.isOnline)
if (SQL.isOnline || !withOnlineCheck)
{
var conn = GetConnection();
@ -536,9 +536,9 @@ namespace ZKuP
}
}
public static async Task<int> WriteSQL(MySqlCommand mySqlCommand)
public static async Task<int> WriteSQL(MySqlCommand mySqlCommand, bool withOnlineCheck = true)
{
if (SQL.isOnline)
if (SQL.isOnline || !withOnlineCheck)
{
var conn = GetConnection();