version 4490

This commit is contained in:
Marcus Bachler 2024-11-14 15:15:08 +01:00
parent 377280ebfe
commit f7238b5991
98 changed files with 10339 additions and 1378 deletions

View File

@ -0,0 +1,210 @@
<!DOCTYPE html>
<!-- saved from url=(0014)about:internet -->
<html xmlns:msxsl="urn:schemas-microsoft-com:xslt"><head><meta content="en-us" http-equiv="Content-Language" /><meta content="text/html; charset=utf-16" http-equiv="Content-Type" /><title _locID="NuGetUpgradeReportTitle">
NuGetMigrationLog
</title><style>
/* Body style, for the entire document */
body
{
background: #F3F3F4;
color: #1E1E1F;
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
font-size: 12pt;
padding: 0;
margin: 0;
}
/* Header1 style, used for the main title */
h1
{
padding: 10px 0px 10px 10px;
font-size: 21pt;
background-color: #E2E2E2;
border-bottom: 1px #C1C1C2 solid;
color: #201F20;
margin: 0;
font-weight: normal;
}
/* Header2 style, used for "Overview" and other sections */
h2
{
font-size: 18pt;
font-weight: normal;
padding: 15px 0 5px 0;
margin: 0;
}
/* Header3 style, used for sub-sections, such as project name */
h3
{
font-weight: normal;
font-size: 15pt;
margin: 0;
padding: 15px 0 5px 0;
background-color: transparent;
}
.info-text
{
margin: 0px 0 0.75em 0;
}
/* Color all hyperlinks one color */
a
{
color: #1382CE;
}
/* Table styles */
table
{
border-spacing: 0 0;
border-collapse: collapse;
font-size: 11pt;
}
table th
{
background: #E7E7E8;
text-align: left;
text-decoration: none;
font-weight: normal;
padding: 3px 6px 3px 6px;
}
table td
{
vertical-align: top;
padding: 3px 6px 5px 5px;
margin: 0px;
border: 1px solid #E7E7E8;
background: #F7F7F8;
}
/* Local link is a style for hyperlinks that link to file:/// content, there are lots so color them as 'normal' text until the user mouse overs */
.localLink
{
color: #1E1E1F;
background: #EEEEED;
text-decoration: none;
}
.localLink:hover
{
color: #1382CE;
background: #FFFF99;
text-decoration: none;
}
.issueCell
{
width: 100%;
}
.packageIssue
{
margin-left: 25px;
}
/* Padding around the content after the h1 */
#content
{
padding: 0px 20px 20px 20px;
}
.issues table
{
width: 97%;
}
/* All Icons */
.IconSuccessEncoded, .IconInfoEncoded, .IconWarningEncoded, .IconErrorEncoded
{
min-width:18px;
min-height:18px;
background-repeat:no-repeat;
background-position:center;
}
.IconSuccessEncoded
{
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABcElEQVR4Xq2TsUsCURzHv15g8ZJcBWlyiYYgCIWcb9DFRRwMW5TA2c0/QEFwFkxxUQdxVlBwCYWOi6IhWgQhBLHJUCkhLr/BW8S7gvrAg+N+v8/v+x68Z8MGy+XSCyABQAXgBgHGALoASkIIDWSLeLBetdHryMjd5IxQPWT4rn1c/P7+xxp72Cs9m5SZ0Bq2vPnbPFafK2zDvmNHypdC0BPkLlQhxJsCAhQoZwdZU5mwxh720qGo8MzTxTTKZDPCx2HoVzp6lz0Q9tKhyx0kGs8Ny+TkWRKk8lCROwEduhyg9l/6lunOPSfmH3NUH6uQ0KHLAe7JYvJjevm+DAMGJHToKtigE+vwvIidxLamb8IBY9e+C5LiXREkfho3TSd06HJA13/oh6T51MTsfQbHrsMynQ5dDihFjiK8JJAU9AKIWTp76dCVN7HWHrajmUEGvyF9nkbAE6gLIS7kTUyuf2gscLoJrElZo/Mvj+nPz/kLTmfnEwP3tB0AAAAASUVORK5CYII=);
}
.IconInfoEncoded
{
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABHElEQVR4Xs2TsUoDQRRF7wwoziokjZUKadInhdhukR9YP8DMX1hYW+QvdsXa/QHBbcXC7W0CamWTQnclFutceIQJwwaWNLlwm5k5d94M76mmaeCrrmsLYOocY12FcxZFUeozCqKqqgYA8uevv1H6VuPxcwlfk5N92KHBxfFeCSAxxswlYAW/Xr989x/mv9gkhtyMDhcAxgzRsp7flj8B/HF1RsMXq+NZMkopaHe7lbKxQUEIGbKsYNoGn969060hZBkQex/W8oRQwsQaW2o3Ago2SVcJUzAgY3N0lTCZZm+zPS8HB51gMmS1DEYyOz9acKO1D8JWTlafKIMxdhvlfdyT94Vv5h7P8Ky7nQzACmhvKq3zk3PjW9asz9D/1oigecsioooAAAAASUVORK5CYII=);
}
.IconWarningEncoded
{
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAx0lEQVR4XpWSMQ7CMAxFf4xAyBMLCxMrO8dhaBcuwdCJS3RJBw7SA/QGTCxdWJgiQYWKXJWKIXHIlyw5lqr34tQgEOdcBsCOx5yZK3hCCKdYXneQkh4pEfqzLfu+wVDSyyzFoJjfz9NB+pAF+eizx2Vruts0k15mPgvS6GYvpVtQhB61IB/dk6AF6fS4Ben0uIX5odtFe8Q/eW1KvFeH4e8khT6+gm5B+t3juyDt7n0jpe+CANTd+oTUjN/U3yVaABnSUjFz/gFq44JaVSCXeQAAAABJRU5ErkJggg==);
}
.IconErrorEncoded
{
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABQElEQVR4XqWTvUoEQRCE6wYPZUA80AfwAQz23uCMjA7MDRQEIzPBVEyNTQUFIw00vcQTTMzuAh/AxEQQT8HF/3G/oGGnEUGuoNnd6qoZuqltyKEsyzVJq5I6rnUp6SjGeGhESikzzlc1eL7opfuVbrqbU1Zw9NCgtQMaZpY0eNnaaL2fHusvTK5vKu7sjSS1Y4y3QUA6K3e3Mau5UFDyMP7tYF9o8cAHZv68vipoIJg971PZIZ5HiwdvYGGvFVFHmGmZ2MxwmQYPXubPl9Up0tfoMQGetXd6mRbvhBw+boZ6WF7Mbv1+GsHRk0fQmPAH1GfmZirbCfDJ61tw3Px8/8pZsPAG4jlVhcPgZ7adwNWBB68lkRQWFiTgFlbnLY3DGGM7izIJIyT/jjIvEJw6fdJTc6krDzh6aMwMP9bvDH4ADSsa9uSWVJkAAAAASUVORK5CYII=);
}
</style></head><body><h1>
NuGet Migration Report - ZKuP</h1><div id="content"><h2 _locID="OverviewTitle">Overview</h2><div class="info-text">Migration to PackageReference was completed successfully. Please build and run your solution to verify that all packages are available.</div><div class="info-text">
If you run into any problems, have feedback, questions, or concerns, please
<a href="https://github.com/NuGet/Home/issues/">file an issue on the NuGet GitHub repository.</a></div><div class="info-text">
Changed files and this report have been backed up here:
<a href="C:\Users\MarcusBachler\source\repos\ZKuPProject\MigrationBackup\dcbaf530\ZKuP">C:\Users\MarcusBachler\source\repos\ZKuPProject\MigrationBackup\dcbaf530\ZKuP</a></div><div class="info-text"><a href="https://aka.ms/nuget-pc2pr-migrator-rollback">Help me rollback to packages.config</a></div><h2 _locID="PackagesTitle">Packages processed</h2><h3 _locID="IncludePackagesTitle">Top-level dependencies:</h3><div class="issues"><table><tr><th class="issueCell">Package Id</th><th>Version</th></tr><tr><td class="issueCell"><span>BouncyCastle</span></td><td><span>
v1.8.9</span></td></tr><tr><td class="issueCell"><span>Costura.Fody</span></td><td><span>
v5.2.0</span></td></tr><tr><td class="issueCell"><span>Google.Protobuf</span></td><td><span>
v3.17.3</span></td></tr><tr><td class="issueCell"><span>K4os.Compression.LZ4.Streams</span></td><td><span>
v1.2.6</span></td></tr><tr><td class="issueCell"><span>MahApps.Metro</span></td><td><span>
v2.4.7</span></td></tr><tr><td class="issueCell"><span>Microsoft.NETCore.Platforms</span></td><td><span>
v5.0.2</span></td></tr><tr><td class="issueCell"><span>Microsoft.Office.Interop.Word</span></td><td><span>
v15.0.4797.1003</span></td></tr><tr><td class="issueCell"><span>MySql.Data</span></td><td><span>
v8.0.25</span></td></tr><tr><td class="issueCell"><span>NETStandard.Library</span></td><td><span>
v2.0.3</span></td></tr><tr><td class="issueCell"><span>SSH.NET</span></td><td><span>
v2020.0.1</span></td></tr><tr><td class="issueCell"><span>System.Collections</span></td><td><span>
v4.3.0</span></td></tr><tr><td class="issueCell"><span>System.Collections.Concurrent</span></td><td><span>
v4.3.0</span></td></tr><tr><td class="issueCell"><span>System.Diagnostics.Debug</span></td><td><span>
v4.3.0</span></td></tr><tr><td class="issueCell"><span>System.Diagnostics.DiagnosticSource</span></td><td><span>
v5.0.1</span></td></tr><tr><td class="issueCell"><span>System.Diagnostics.Tools</span></td><td><span>
v4.3.0</span></td></tr><tr><td class="issueCell"><span>System.Diagnostics.Tracing</span></td><td><span>
v4.3.0</span></td></tr><tr><td class="issueCell"><span>System.Globalization</span></td><td><span>
v4.3.0</span></td></tr><tr><td class="issueCell"><span>System.IO</span></td><td><span>
v4.3.0</span></td></tr><tr><td class="issueCell"><span>System.IO.Compression</span></td><td><span>
v4.3.0</span></td></tr><tr><td class="issueCell"><span>System.Linq</span></td><td><span>
v4.3.0</span></td></tr><tr><td class="issueCell"><span>System.Linq.Expressions</span></td><td><span>
v4.3.0</span></td></tr><tr><td class="issueCell"><span>System.Net.Http</span></td><td><span>
v4.3.4</span></td></tr><tr><td class="issueCell"><span>System.Net.Primitives</span></td><td><span>
v4.3.1</span></td></tr><tr><td class="issueCell"><span>System.ObjectModel</span></td><td><span>
v4.3.0</span></td></tr><tr><td class="issueCell"><span>System.Reflection</span></td><td><span>
v4.3.0</span></td></tr><tr><td class="issueCell"><span>System.Reflection.Extensions</span></td><td><span>
v4.3.0</span></td></tr><tr><td class="issueCell"><span>System.Reflection.Primitives</span></td><td><span>
v4.3.0</span></td></tr><tr><td class="issueCell"><span>System.Resources.ResourceManager</span></td><td><span>
v4.3.0</span></td></tr><tr><td class="issueCell"><span>System.Runtime</span></td><td><span>
v4.3.1</span></td></tr><tr><td class="issueCell"><span>System.Runtime.Extensions</span></td><td><span>
v4.3.1</span></td></tr><tr><td class="issueCell"><span>System.Runtime.InteropServices</span></td><td><span>
v4.3.0</span></td></tr><tr><td class="issueCell"><span>System.Runtime.Numerics</span></td><td><span>
v4.3.0</span></td></tr><tr><td class="issueCell"><span>System.Text.Encoding</span></td><td><span>
v4.3.0</span></td></tr><tr><td class="issueCell"><span>System.Text.Encoding.Extensions</span></td><td><span>
v4.3.0</span></td></tr><tr><td class="issueCell"><span>System.Text.RegularExpressions</span></td><td><span>
v4.3.1</span></td></tr><tr><td class="issueCell"><span>System.Threading</span></td><td><span>
v4.3.0</span></td></tr><tr><td class="issueCell"><span>System.Threading.Tasks</span></td><td><span>
v4.3.0</span></td></tr><tr><td class="issueCell"><span>System.Threading.Timer</span></td><td><span>
v4.3.0</span></td></tr><tr><td class="issueCell"><span>System.ValueTuple</span></td><td><span>
v4.5.0</span></td></tr><tr><td class="issueCell"><span>System.Xml.ReaderWriter</span></td><td><span>
v4.3.1</span></td></tr><tr><td class="issueCell"><span>System.Xml.XDocument</span></td><td><span>
v4.3.0</span></td></tr><tr><td class="issueCell"><span>WpfScreenHelper</span></td><td><span>
v1.1.0</span></td></tr></table></div><p /><h3 _locID="IncludePackagesTitle">Transitive dependencies:</h3><div class="issues"><table><tr><th class="issueCell">Package Id</th><th>Version</th></tr><tr><td class="issueCell"><span>ControlzEx</span></td><td><span>
v4.4.0</span></td></tr><tr><td class="issueCell"><span>Fody</span></td><td><span>
v6.5.1</span></td></tr><tr><td class="issueCell"><span>K4os.Compression.LZ4</span></td><td><span>
v1.2.6</span></td></tr><tr><td class="issueCell"><span>K4os.Hash.xxHash</span></td><td><span>
v1.0.6</span></td></tr><tr><td class="issueCell"><span>Microsoft.Xaml.Behaviors.Wpf</span></td><td><span>
v1.1.19</span></td></tr><tr><td class="issueCell"><span>System.Buffers</span></td><td><span>
v4.5.1</span></td></tr><tr><td class="issueCell"><span>System.Memory</span></td><td><span>
v4.5.4</span></td></tr><tr><td class="issueCell"><span>System.Runtime.CompilerServices.Unsafe</span></td><td><span>
v5.0.0</span></td></tr><tr><td class="issueCell"><span>System.Runtime.InteropServices.RuntimeInformation</span></td><td><span>
v4.3.0</span></td></tr></table></div><h2 _locID="IssuesTitle">Package compatibility issues</h2><div class="issues"><table><tr><th /><th class="issueCell" _locID="DescriptionTableHeader">Description</th></tr><tr><td class="IconInfoEncoded" /><td class="issueCell">
No issues were found.
</td></tr></table></div></div></body></html>

View File

@ -0,0 +1,578 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\Costura.Fody.5.2.0\build\Costura.Fody.props" Condition="Exists('..\packages\Costura.Fody.5.2.0\build\Costura.Fody.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{B4348CE1-446F-46A5-BD8A-62C071D4AD10}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>ZKuP</RootNamespace>
<AssemblyName>ZKuP</AssemblyName>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<WarningLevel>4</WarningLevel>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<IsWebBootstrapper>false</IsWebBootstrapper>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<AutorunEnabled>true</AutorunEnabled>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<PublishWizardCompleted>true</PublishWizardCompleted>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>ZKuP.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\Debug\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<PublishSingleFile>true</PublishSingleFile>
<PublishTrimmed>true</PublishTrimmed>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>bin\x64\Release\</OutputPath>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<PublishSingleFile>true</PublishSingleFile>
<PublishTrimmed>true</PublishTrimmed>
<DefineConstants>
</DefineConstants>
<Optimize>true</Optimize>
<DebugType>none</DebugType>
<PlatformTarget>x64</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<ManifestCertificateThumbprint>3C16B2C32C7121098E02D5B8C9B97FB987E781D1</ManifestCertificateThumbprint>
</PropertyGroup>
<PropertyGroup>
<ManifestKeyFile>ZKuP_TemporaryKey.pfx</ManifestKeyFile>
</PropertyGroup>
<PropertyGroup>
<GenerateManifests>false</GenerateManifests>
</PropertyGroup>
<PropertyGroup>
<SignManifests>false</SignManifests>
</PropertyGroup>
<PropertyGroup>
<TargetZone>LocalIntranet</TargetZone>
</PropertyGroup>
<PropertyGroup>
<ApplicationManifest>Properties\app.manifest</ApplicationManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\x86\Release\</OutputPath>
<Optimize>true</Optimize>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="BouncyCastle.Crypto, Version=1.8.9.0, Culture=neutral, PublicKeyToken=0e99375e54769942">
<HintPath>..\packages\BouncyCastle.1.8.9\lib\BouncyCastle.Crypto.dll</HintPath>
</Reference>
<Reference Include="ControlzEx, Version=4.0.0.0, Culture=neutral, PublicKeyToken=69f1c32f803d307e, processorArchitecture=MSIL">
<HintPath>..\packages\ControlzEx.4.4.0\lib\net45\ControlzEx.dll</HintPath>
</Reference>
<Reference Include="Costura, Version=5.2.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Costura.Fody.5.2.0\lib\netstandard1.0\Costura.dll</HintPath>
</Reference>
<Reference Include="Google.Protobuf, Version=3.17.3.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
<HintPath>..\packages\Google.Protobuf.3.17.3\lib\net45\Google.Protobuf.dll</HintPath>
</Reference>
<Reference Include="K4os.Compression.LZ4, Version=1.2.6.0, Culture=neutral, PublicKeyToken=2186fa9121ef231d, processorArchitecture=MSIL">
<HintPath>..\packages\K4os.Compression.LZ4.1.2.6\lib\net45\K4os.Compression.LZ4.dll</HintPath>
</Reference>
<Reference Include="K4os.Compression.LZ4.Streams, Version=1.2.6.0, Culture=neutral, PublicKeyToken=2186fa9121ef231d, processorArchitecture=MSIL">
<HintPath>..\packages\K4os.Compression.LZ4.Streams.1.2.6\lib\net45\K4os.Compression.LZ4.Streams.dll</HintPath>
</Reference>
<Reference Include="K4os.Hash.xxHash, Version=1.0.6.0, Culture=neutral, PublicKeyToken=32cd54395057cec3, processorArchitecture=MSIL">
<HintPath>..\packages\K4os.Hash.xxHash.1.0.6\lib\net45\K4os.Hash.xxHash.dll</HintPath>
</Reference>
<Reference Include="MahApps.Metro, Version=2.0.0.0, Culture=neutral, PublicKeyToken=51482d6f650b2b3f, processorArchitecture=MSIL">
<HintPath>..\packages\MahApps.Metro.2.4.7\lib\net452\MahApps.Metro.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Office.Interop.Word, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Office.Interop.Word.15.0.4797.1003\lib\net20\Microsoft.Office.Interop.Word.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>
<Reference Include="Microsoft.Xaml.Behaviors, Version=1.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Xaml.Behaviors.Wpf.1.1.19\lib\net45\Microsoft.Xaml.Behaviors.dll</HintPath>
</Reference>
<Reference Include="MySql.Data, Version=8.0.25.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
<HintPath>..\packages\MySql.Data.8.0.25\lib\net452\MySql.Data.dll</HintPath>
</Reference>
<Reference Include="Renci.SshNet, Version=2020.0.1.0, Culture=neutral, PublicKeyToken=1cee9f8bde3db106, processorArchitecture=MSIL">
<HintPath>..\packages\SSH.NET.2020.0.1\lib\net40\Renci.SshNet.dll</HintPath>
</Reference>
<Reference Include="STPadLibNet">
<HintPath>..\..\..\..\..\..\Program Files\signotec\signoPAD-API\STPadLibNet\STPadLibNet.dll</HintPath>
<EmbedInteropTypes>False</EmbedInteropTypes>
<Private>True</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\netstandard1.1\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel" />
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
<Reference Include="System.Configuration.Install" />
<Reference Include="System.Data" />
<Reference Include="System.Diagnostics.DiagnosticSource, Version=5.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.5.0.1\lib\net45\System.Diagnostics.DiagnosticSource.dll</HintPath>
</Reference>
<Reference Include="System.DirectoryServices.AccountManagement" />
<Reference Include="System.Drawing" />
<Reference Include="System.Drawing.Design" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.Management" />
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.4\lib\netstandard1.1\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.5.0.0\lib\net45\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
</Reference>
<Reference Include="System.Transactions" />
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\netstandard1.0\System.ValueTuple.dll</HintPath>
</Reference>
<Reference Include="System.Web" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xaml">
<RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference>
<Reference Include="Ubiety.Dns.Core, Version=2.2.1.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
<HintPath>..\packages\MySql.Data.8.0.25\lib\net452\Ubiety.Dns.Core.dll</HintPath>
</Reference>
<Reference Include="WindowsBase" />
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="WindowsFormsIntegration" />
<Reference Include="WpfScreenHelper, Version=1.1.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\WpfScreenHelper.1.1.0\lib\net40\WpfScreenHelper.dll</HintPath>
</Reference>
<Reference Include="Zstandard.Net, Version=1.1.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
<HintPath>..\packages\MySql.Data.8.0.25\lib\net452\Zstandard.Net.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="App.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</ApplicationDefinition>
<Compile Include="AddCardUser.xaml.cs">
<DependentUpon>AddCardUser.xaml</DependentUpon>
</Compile>
<Compile Include="Arrivals.xaml.cs">
<DependentUpon>Arrivals.xaml</DependentUpon>
</Compile>
<Compile Include="ArrivalsOverview.xaml.cs">
<DependentUpon>ArrivalsOverview.xaml</DependentUpon>
</Compile>
<Compile Include="AspInfo.xaml.cs">
<DependentUpon>AspInfo.xaml</DependentUpon>
</Compile>
<Compile Include="BEImage.xaml.cs">
<DependentUpon>BEImage.xaml</DependentUpon>
</Compile>
<Compile Include="Belegung.xaml.cs">
<DependentUpon>Belegung.xaml</DependentUpon>
</Compile>
<Compile Include="Belegung2.xaml.cs">
<DependentUpon>Belegung2.xaml</DependentUpon>
</Compile>
<Compile Include="Cards.xaml.cs">
<DependentUpon>Cards.xaml</DependentUpon>
</Compile>
<Compile Include="CheckKennzeichen.xaml.cs">
<DependentUpon>CheckKennzeichen.xaml</DependentUpon>
</Compile>
<Compile Include="CheckParkausweis.xaml.cs">
<DependentUpon>CheckParkausweis.xaml</DependentUpon>
</Compile>
<Compile Include="CreateFirma.xaml.cs">
<DependentUpon>CreateFirma.xaml</DependentUpon>
</Compile>
<Compile Include="CreateMcFitUser.xaml.cs">
<DependentUpon>CreateMcFitUser.xaml</DependentUpon>
</Compile>
<Compile Include="CreateParkausweis.xaml.cs">
<DependentUpon>CreateParkausweis.xaml</DependentUpon>
</Compile>
<Compile Include="CreateVisitor.xaml.cs">
<DependentUpon>CreateVisitor.xaml</DependentUpon>
</Compile>
<Compile Include="CreateVisitor_List.xaml.cs">
<DependentUpon>CreateVisitor_List.xaml</DependentUpon>
</Compile>
<Compile Include="DBImageManager.cs" />
<Compile Include="Delivery.xaml.cs">
<DependentUpon>Delivery.xaml</DependentUpon>
</Compile>
<Compile Include="Family.xaml.cs">
<DependentUpon>Family.xaml</DependentUpon>
</Compile>
<Compile Include="FamilyBooking.xaml.cs">
<DependentUpon>FamilyBooking.xaml</DependentUpon>
</Compile>
<Compile Include="GrantParkausweis.xaml.cs">
<DependentUpon>GrantParkausweis.xaml</DependentUpon>
</Compile>
<Compile Include="ImageView.xaml.cs">
<DependentUpon>ImageView.xaml</DependentUpon>
</Compile>
<Compile Include="Log.cs" />
<Compile Include="ManageDeliveries.xaml.cs">
<DependentUpon>ManageDeliveries.xaml</DependentUpon>
</Compile>
<Compile Include="ManageParkausweis.xaml.cs">
<DependentUpon>ManageParkausweis.xaml</DependentUpon>
</Compile>
<Compile Include="ManageVisitor.xaml.cs">
<DependentUpon>ManageVisitor.xaml</DependentUpon>
</Compile>
<Compile Include="Helper.cs" />
<Compile Include="ManageAsp.xaml.cs">
<DependentUpon>ManageAsp.xaml</DependentUpon>
</Compile>
<Compile Include="ManageUsers.xaml.cs">
<DependentUpon>ManageUsers.xaml</DependentUpon>
</Compile>
<Compile Include="ParkausweisDisclaimer.xaml.cs">
<DependentUpon>ParkausweisDisclaimer.xaml</DependentUpon>
</Compile>
<Compile Include="PrintParkausweis.xaml.cs">
<DependentUpon>PrintParkausweis.xaml</DependentUpon>
</Compile>
<Compile Include="SetHinweis.xaml.cs">
<DependentUpon>SetHinweis.xaml</DependentUpon>
</Compile>
<Compile Include="Signature.xaml.cs">
<DependentUpon>Signature.xaml</DependentUpon>
</Compile>
<Compile Include="signoPad.cs" />
<Compile Include="SQL.cs" />
<Compile Include="ucSpinnerPiston.xaml.cs">
<DependentUpon>ucSpinnerPiston.xaml</DependentUpon>
</Compile>
<Compile Include="XMessageBox.xaml.cs">
<DependentUpon>XMessageBox.xaml</DependentUpon>
</Compile>
<Page Include="AddCardUser.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Arrivals.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="ArrivalsOverview.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="AspInfo.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="BEImage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Belegung.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Belegung2.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Cards.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="CheckKennzeichen.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="CheckParkausweis.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="CreateFirma.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="CreateMcFitUser.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="CreateParkausweis.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="CreateVisitor.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="CreateVisitor_List.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Delivery.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Family.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="FamilyBooking.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="GrantParkausweis.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="ImageView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="ManageDeliveries.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="ManageParkausweis.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="ManageVisitor.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="MainWindow.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="MainWindow.xaml.cs">
<DependentUpon>MainWindow.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Page Include="ManageAsp.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="ManageUsers.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="ParkausweisDisclaimer.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="PrintParkausweis.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="SetHinweis.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Signature.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="ucSpinnerPiston.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="XMessageBox.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<None Include="packages.config" />
<None Include="Properties\app.manifest" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<EmbeddedResource Include="Resources\PLZ_MUC.txt" />
<None Include="ZKuP_TemporaryKey.pfx" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<Resource Include="ZKuP.ico" />
</ItemGroup>
<ItemGroup>
<None Include="FodyWeavers.xml" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.5.2">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.5.2 %28x86 und x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\Cancel BW.png" />
<Resource Include="Resources\Capture Sigma.png" />
<Resource Include="Resources\OK BW.png" />
<Resource Include="Resources\Pad Sigma.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\db-logo.png" />
</ItemGroup>
<ItemGroup>
<COMReference Include="VBIDE">
<Guid>{0002E157-0000-0000-C000-000000000046}</Guid>
<VersionMajor>5</VersionMajor>
<VersionMinor>3</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\NoSignature.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Assets\BE1.JPG" />
<Resource Include="Assets\BE10.JPG" />
<Resource Include="Assets\BE2.JPG" />
<Resource Include="Assets\BE3.JPG" />
<Resource Include="Assets\BE4.JPG" />
<Resource Include="Assets\BE5.JPG" />
<Resource Include="Assets\BE6.JPG" />
<Resource Include="Assets\BE7.JPG" />
<Resource Include="Assets\BE8.JPG" />
<Resource Include="Assets\BE9.JPG" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\skull.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\Moon.png" />
<Resource Include="Resources\Sun.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\mcfit.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Assets\BE11.JPG" />
<Resource Include="Assets\BE12.JPG" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\Fody.6.5.1\build\Fody.targets" Condition="Exists('..\packages\Fody.6.5.1\build\Fody.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}".</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Fody.6.5.1\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.6.5.1\build\Fody.targets'))" />
<Error Condition="!Exists('..\packages\Costura.Fody.5.2.0\build\Costura.Fody.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.5.2.0\build\Costura.Fody.props'))" />
<Error Condition="!Exists('..\packages\Costura.Fody.5.2.0\build\Costura.Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.5.2.0\build\Costura.Fody.targets'))" />
</Target>
<Import Project="..\packages\Costura.Fody.5.2.0\build\Costura.Fody.targets" Condition="Exists('..\packages\Costura.Fody.5.2.0\build\Costura.Fody.targets')" />
</Project>

View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="BouncyCastle" version="1.8.9" targetFramework="net452" />
<package id="ControlzEx" version="4.4.0" targetFramework="net452" />
<package id="Costura.Fody" version="5.2.0" targetFramework="net452" developmentDependency="true" />
<package id="Fody" version="6.5.1" targetFramework="net452" developmentDependency="true" />
<package id="Google.Protobuf" version="3.17.3" targetFramework="net452" />
<package id="K4os.Compression.LZ4" version="1.2.6" targetFramework="net452" />
<package id="K4os.Compression.LZ4.Streams" version="1.2.6" targetFramework="net452" />
<package id="K4os.Hash.xxHash" version="1.0.6" targetFramework="net452" />
<package id="MahApps.Metro" version="2.4.7" targetFramework="net452" />
<package id="Microsoft.NETCore.Platforms" version="5.0.2" targetFramework="net452" />
<package id="Microsoft.Office.Interop.Word" version="15.0.4797.1003" targetFramework="net452" />
<package id="Microsoft.Xaml.Behaviors.Wpf" version="1.1.19" targetFramework="net452" />
<package id="MySql.Data" version="8.0.25" targetFramework="net452" />
<package id="NETStandard.Library" version="2.0.3" targetFramework="net452" />
<package id="SSH.NET" version="2020.0.1" targetFramework="net452" />
<package id="System.Buffers" version="4.5.1" targetFramework="net452" />
<package id="System.Collections" version="4.3.0" targetFramework="net452" />
<package id="System.Collections.Concurrent" version="4.3.0" targetFramework="net452" />
<package id="System.Diagnostics.Debug" version="4.3.0" targetFramework="net452" />
<package id="System.Diagnostics.DiagnosticSource" version="5.0.1" targetFramework="net452" />
<package id="System.Diagnostics.Tools" version="4.3.0" targetFramework="net452" />
<package id="System.Diagnostics.Tracing" version="4.3.0" targetFramework="net452" />
<package id="System.Globalization" version="4.3.0" targetFramework="net452" />
<package id="System.IO" version="4.3.0" targetFramework="net452" />
<package id="System.IO.Compression" version="4.3.0" targetFramework="net452" />
<package id="System.Linq" version="4.3.0" targetFramework="net452" />
<package id="System.Linq.Expressions" version="4.3.0" targetFramework="net452" />
<package id="System.Memory" version="4.5.4" targetFramework="net452" />
<package id="System.Net.Http" version="4.3.4" targetFramework="net452" />
<package id="System.Net.Primitives" version="4.3.1" targetFramework="net452" />
<package id="System.ObjectModel" version="4.3.0" targetFramework="net452" />
<package id="System.Reflection" version="4.3.0" targetFramework="net452" />
<package id="System.Reflection.Extensions" version="4.3.0" targetFramework="net452" />
<package id="System.Reflection.Primitives" version="4.3.0" targetFramework="net452" />
<package id="System.Resources.ResourceManager" version="4.3.0" targetFramework="net452" />
<package id="System.Runtime" version="4.3.1" targetFramework="net452" />
<package id="System.Runtime.CompilerServices.Unsafe" version="5.0.0" targetFramework="net452" />
<package id="System.Runtime.Extensions" version="4.3.1" targetFramework="net452" />
<package id="System.Runtime.InteropServices" version="4.3.0" targetFramework="net452" />
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net452" />
<package id="System.Runtime.Numerics" version="4.3.0" targetFramework="net452" />
<package id="System.Text.Encoding" version="4.3.0" targetFramework="net452" />
<package id="System.Text.Encoding.Extensions" version="4.3.0" targetFramework="net452" />
<package id="System.Text.RegularExpressions" version="4.3.1" targetFramework="net452" />
<package id="System.Threading" version="4.3.0" targetFramework="net452" />
<package id="System.Threading.Tasks" version="4.3.0" targetFramework="net452" />
<package id="System.Threading.Timer" version="4.3.0" targetFramework="net452" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net452" />
<package id="System.Xml.ReaderWriter" version="4.3.1" targetFramework="net452" />
<package id="System.Xml.XDocument" version="4.3.0" targetFramework="net452" />
<package id="WpfScreenHelper" version="1.1.0" targetFramework="net452" />
</packages>

View File

@ -14,18 +14,18 @@
<RowDefinition/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<TextBlock Margin="10,10,10,0" 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"/>
<TextBlock Margin="10,10,10,0" 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">
<ComboBoxItem Content="Grün"/>
<ComboBoxItem Content="Rot"/>
<ComboBoxItem Content="Gerätewagen"/>
</ComboBox>
<TextBlock HorizontalAlignment="Left" Margin="10,10,0,0" Grid.Row="2" TextWrapping="Wrap" Text="Firma / Benutzer" VerticalAlignment="Top" Width="226"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,10,0,0" Grid.Row="2" TextWrapping="Wrap" Text="Firma / Benutzer" VerticalAlignment="Top" Width="226"/>
<TextBox x:Name="tbUser" Margin="10,0,10,10" Grid.Row="2" TextWrapping="Wrap" Height="23" VerticalAlignment="Bottom" PreviewTextInput="tbUser_PreviewTextInput"/>
<TextBlock Margin="10,10,10,0" Grid.Row="3" TextWrapping="Wrap" Text="Telefonnummer" VerticalAlignment="Top"/>
<TextBlock Margin="10,10,10,0" Grid.Row="3" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" TextWrapping="Wrap" Text="Telefonnummer" VerticalAlignment="Top"/>
<TextBox x:Name="tbTelnr" Height="23" Margin="10,0,10,10" Grid.Row="3" TextWrapping="Wrap" VerticalAlignment="Bottom"/>
<Button x:Name="btnAdd" Content="Hinzufügen" Margin="10,0,10,10" Grid.Row="4" Height="20" VerticalAlignment="Bottom" Click="btnAdd_Click"/>
<Button x:Name="btnAdd" Content="Hinzufügen" Margin="10,0,10,10" Grid.Row="4" Padding="-2" Height="25" VerticalAlignment="Bottom" Click="btnAdd_Click"/>
</Grid>
</Window>

View File

@ -23,14 +23,23 @@ namespace ZKuP
{
InitializeComponent();
tbUser.Text = user;
try
if (!user.Contains("["))
{
tbTelnr.Text = SQL.ReadSingleValue($"SELECT Tel_Nr_Verantwortlicher_Firma FROM zkup.firmen WHERE Name='{user}'");
tbUser.Text = user;
try
{
tbTelnr.Text = SQL.ReadSingleValue($"SELECT Tel_Nr_Verantwortlicher_Firma FROM zkup.firmen WHERE Name='{user}'");
}
catch (Exception)
{
}
}
catch (Exception)
else
{
tbUser.Text = user.Split(',')[1].TrimEnd(']').Trim();
tbTelnr.Text = SQL.ReadSingleValue($"SELECT TelNr FROM zkup.family WHERE Name='{tbUser.Text}'");
cbColor.SelectedIndex = 0;
tbNummer.Focus();
}
}

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="ZKuP.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="ZKuP.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/>
</startup>
<userSettings>
<ZKuP.Properties.Settings>
@ -34,13 +34,42 @@
<setting name="gridTodayHeight" serializeAs="String">
<value>100</value>
</setting>
<setting name="DarkMode" serializeAs="String">
<value>False</value>
</setting>
<setting name="Accent" serializeAs="String">
<value>Blue</value>
</setting>
<setting name="ShowParkcardPrint" serializeAs="String">
<value>True</value>
</setting>
</ZKuP.Properties.Settings>
</userSettings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Google.Protobuf" publicKeyToken="a7d26565bac4d604" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-3.17.3.0" newVersion="3.17.3.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="BouncyCastle.Crypto" publicKeyToken="0e99375e54769942" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-1.8.9.0" newVersion="1.8.9.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="K4os.Compression.LZ4.Streams" publicKeyToken="2186fa9121ef231d" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-1.2.6.0" newVersion="1.2.6.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>

View File

@ -4,6 +4,13 @@
xmlns:local="clr-namespace:ZKuP"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.FlatButton.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Themes/Light.Blue.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>

View File

@ -13,64 +13,108 @@ namespace ZKuP
/// </summary>
public partial class App : Application
{
//#if !DEBUG
public App()
{
//AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
#if !DEBUG
AppDomain.CurrentDomain.FirstChanceException += CurrentDomain_FirstChanceException; // Example 1
DispatcherUnhandledException += App_DispatcherUnhandledException;
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; // Example 3
TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
#endif
}
void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
{
Log.WriteLog(e.Exception.ToString());
if (!e.Exception.ToString().Contains("System.Windows.Automation.ElementNotAvailableException:")
&& !e.Exception.ToString().Contains("signotec.STPadLibNet.STPadException: Zu dem ausgewählten Signierpad wurde keine Verbindung geöffnet."))
Log.WriteLog("1: " + e.Exception.ToString());
// Process unhandled exception
if(MessageBox.Show(MainWindow, "Es ist ein unbehandelter Fehler aufgetreten\n\nMöchten Sie einen Bericht an den Entwickler der Anwendung senden?", "Unbehandelter Fehler", MessageBoxButton.YesNo, MessageBoxImage.Error, MessageBoxResult.Yes) == MessageBoxResult.Yes)
{
Helper.SendMail(e.Exception.ToString());
}
//if(MessageBox.Show(MainWindow, "Es ist ein unbehandelter Fehler aufgetreten\n\nMöchten Sie einen Bericht an den Entwickler der Anwendung senden?", "Unbehandelter Fehler", MessageBoxButton.YesNo, MessageBoxImage.Error, MessageBoxResult.Yes) == MessageBoxResult.Yes)
//{
// Helper.SendMail(e.Exception.ToString());
//}
e.Handled = true;
}
private void Application_Startup(object sender, StartupEventArgs e)
{
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
FirstChanceEx();
//FirstChanceEx();
}
void CurrentDomain_FirstChanceException(object sender, System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs e)
{
if (!e.Exception.ToString().Contains("System.Windows.Automation.ElementNotAvailableException:")
&& !e.Exception.ToString().Contains("signotec.STPadLibNet.STPadException: Zu dem ausgewählten Signierpad wurde keine Verbindung geöffnet."))
Log.WriteLog("2: " + e.Exception.ToString());
//if (MessageBox.Show(MainWindow, "Es ist ein unbehandelter Fehler aufgetreten\n\nMöchten Sie einen Bericht an den Entwickler der Anwendung senden?", "Unbehandelter Fehler", MessageBoxButton.YesNo, MessageBoxImage.Error, MessageBoxResult.Yes) == MessageBoxResult.Yes)
//{
// Helper.SendMail(e.Exception.ToString());
//}
//ProcessError(e.Exception); - This could be used here to log ALL errors, even those caught by a Try/Catch block
}
void FirstChanceEx()
{
AppDomain.CurrentDomain.FirstChanceException += (sender, eventArgs) =>
{
Log.WriteLog(eventArgs.Exception.ToString());
//AppDomain.CurrentDomain.FirstChanceException += (sender, eventArgs) =>
//{
// Log.WriteLog(eventArgs.Exception.ToString());
if (MessageBox.Show(MainWindow, "Es ist ein unbehandelter Fehler aufgetreten\n\nMöchten Sie einen Bericht an den Entwickler der Anwendung senden?", "Unbehandelter Fehler", MessageBoxButton.YesNo, MessageBoxImage.Error, MessageBoxResult.Yes) == MessageBoxResult.Yes)
{
Helper.SendMail(eventArgs.Exception.ToString());
}
};
// if (MessageBox.Show(MainWindow, "Es ist ein unbehandelter Fehler aufgetreten\n\nMöchten Sie einen Bericht an den Entwickler der Anwendung senden?", "Unbehandelter Fehler", MessageBoxButton.YesNo, MessageBoxImage.Error, MessageBoxResult.Yes) == MessageBoxResult.Yes)
// {
// Helper.SendMail(eventArgs.Exception.ToString());
// }
//};
}
void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Exception ex = e.ExceptionObject as Exception;
Log.WriteLog(ex.ToString());
if (!ex.ToString().Contains("System.Windows.Automation.ElementNotAvailableException:")
&& !ex.ToString().Contains("signotec.STPadLibNet.STPadException: Zu dem ausgewählten Signierpad wurde keine Verbindung geöffnet."))
Log.WriteLog("3: " + ex.ToString());
if (MessageBox.Show(MainWindow, "Es ist ein unbehandelter Fehler aufgetreten\n\nMöchten Sie einen Bericht an den Entwickler der Anwendung senden?", "Unbehandelter Fehler", MessageBoxButton.YesNo, MessageBoxImage.Error, MessageBoxResult.Yes) == MessageBoxResult.Yes)
{
Helper.SendMail(ex.ToString());
}
//if (MessageBox.Show(MainWindow, "Es ist ein unbehandelter Fehler aufgetreten\n\nMöchten Sie einen Bericht an den Entwickler der Anwendung senden?", "Unbehandelter Fehler", MessageBoxButton.YesNo, MessageBoxImage.Error, MessageBoxResult.Yes) == MessageBoxResult.Yes)
//{
// Helper.SendMail(ex.ToString());
//}
//MessageBox.Show(ex.Message, "Uncaught Thread Exception", MessageBoxButton.OK, MessageBoxImage.Error);
}
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
//static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
//{
// Log.WriteLog(e.Exception.Message.ToString());
// // Log the exception, display it, etc
// if (MessageBox.Show("Es ist ein unbehandelter Fehler aufgetreten\n\nMöchten Sie einen Bericht an den Entwickler der Anwendung senden?", "Unbehandelter Fehler", MessageBoxButton.YesNo, MessageBoxImage.Error, MessageBoxResult.Yes) == MessageBoxResult.Yes)
// {
// Helper.SendMail(e.Exception.Message.ToString());
// }
//}
void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e)
{
Log.WriteLog(e.Exception.Message.ToString());
// Log the exception, display it, etc
if (MessageBox.Show("Es ist ein unbehandelter Fehler aufgetreten\n\nMöchten Sie einen Bericht an den Entwickler der Anwendung senden?", "Unbehandelter Fehler", MessageBoxButton.YesNo, MessageBoxImage.Error, MessageBoxResult.Yes) == MessageBoxResult.Yes)
{
Helper.SendMail(e.Exception.Message.ToString());
}
if (!e.Exception.ToString().Contains("System.Windows.Automation.ElementNotAvailableException:")
&& !e.Exception.ToString().Contains("signotec.STPadLibNet.STPadException: Zu dem ausgewählten Signierpad wurde keine Verbindung geöffnet."))
Log.WriteLog("4: " + e.Exception.ToString());
//if (MessageBox.Show("Es ist ein unbehandelter Fehler aufgetreten\n\nMöchten Sie einen Bericht an den Entwickler der Anwendung senden?", "Unbehandelter Fehler", MessageBoxButton.YesNo, MessageBoxImage.Error, MessageBoxResult.Yes) == MessageBoxResult.Yes)
//{
// Helper.SendMail(e.Exception.Message.ToString());
//}
e.SetObserved();
}
//#endif
}
}

View File

@ -6,57 +6,84 @@
xmlns:local="clr-namespace:ZKuP"
mc:Ignorable="d"
WindowStartupLocation="CenterOwner"
Title="Ankunft bestätigen" Height="736" Width="479" ResizeMode="NoResize" Topmost="True" PreviewGotKeyboardFocus="Window_PreviewGotKeyboardFocus" PreviewLostKeyboardFocus="Window_PreviewLostKeyboardFocus" WindowStyle="None" AllowsTransparency="True">
Title="Ankunft bestätigen" Height="799.5" Width="479" ResizeMode="NoResize" Topmost="True" PreviewGotKeyboardFocus="Window_PreviewGotKeyboardFocus" PreviewLostKeyboardFocus="Window_PreviewLostKeyboardFocus" WindowStyle="None" AllowsTransparency="True" Loaded="Window_Loaded">
<Grid>
<Grid x:Name="WindowBar" VerticalAlignment="Top" Background="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}" Height="30" PreviewMouseDown="Window_PreviewMouseDown">
<TextBlock Text="Ankunft bestätigen" Margin="10,5,364,0" Padding="0" Foreground="White"/>
</Grid>
<Grid Margin="0,30,0,0" Background="#FBFFFFFF">
<ComboBox x:Name="cbName" Margin="45,45,46,0" VerticalAlignment="Top" TabIndex="7" SelectionChanged="CbName_SelectionChanged"/>
<TextBlock HorizontalAlignment="Left" Height="23" Margin="30,22,0,0" TextWrapping="Wrap" Text="Firma/Besucher:" VerticalAlignment="Top" Width="120"/>
<Button x:Name="btnCheck" HorizontalContentAlignment="Center" Margin="45,291,46,0" VerticalAlignment="Top" Height="80" Click="BtnCheck_Click" TabIndex="5" IsEnabled="False">
<Button.Background>
<LinearGradientBrush EndPoint="190,80" StartPoint="190,0" MappingMode="Absolute">
<GradientStop Color="#FFA2FF00" Offset="1"/>
<GradientStop Color="#FF00C300"/>
</LinearGradientBrush>
</Button.Background>
<Button.BorderThickness>
<Thickness Bottom="5" Left="5" Right="5" Top="5" />
</Button.BorderThickness>
<Button.BorderBrush>
<LinearGradientBrush EndPoint="190,80" StartPoint="190,0" MappingMode="Absolute">
<GradientStop Color="#FFB08000" Offset="1"/>
<GradientStop Color="#FFCB0000"/>
</LinearGradientBrush>
</Button.BorderBrush>
<TextBlock TextAlignment="Center" IsHitTestVisible="False" FontWeight="Bold">Ankunft jetzt<LineBreak/>↓↓<LineBreak/>Einweisung und Anmeldung<LineBreak/>werden überprüft</TextBlock>
</Button>
<TextBlock HorizontalAlignment="Left" Margin="30,386,0,0" TextWrapping="Wrap" Text="Anmeldung:" VerticalAlignment="Top" Width="190"/>
<TextBlock HorizontalAlignment="Left" Margin="30,486,0,0" TextWrapping="Wrap" Text="Einweisung:" VerticalAlignment="Top" Width="190"/>
<Label x:Name="lblAnmeldung" Margin="45,407,46,0" VerticalAlignment="Top" Height="24" Background="#33808080" BorderBrush="#99000000" BorderThickness="1" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Padding="1"/>
<Label x:Name="lblEinweisung" Margin="45,507,46,0" VerticalAlignment="Top" Height="24" Background="#33808080" BorderBrush="#99000000" BorderThickness="1" Padding="1" VerticalContentAlignment="Center" HorizontalContentAlignment="Center"/>
<Label x:Name="lblKleineUnterweisung" Margin="45,557,46,0" VerticalAlignment="Top" Height="24" Background="#33808080" BorderBrush="#99000000" BorderThickness="1" Padding="1" VerticalContentAlignment="Center" HorizontalContentAlignment="Center"/>
<Button x:Name="btnClose" Content="Schließen" Margin="0,0,0,-2" Height="28" BorderBrush="{x:Null}" Click="Close_Click" VerticalAlignment="Bottom" TabIndex="6" IsEnabled="False"/>
<TextBox x:Name="tbAnzahlPersonen" Height="23" Margin="45,81,46,0" TextWrapping="Wrap" VerticalAlignment="Top" TextAlignment="Center" Padding="0,2,0,0" TabIndex="1"/>
<TextBox x:Name="tbAnzahlFzg" Height="23" Margin="45,106,46,0" TextWrapping="Wrap" VerticalAlignment="Top" TextAlignment="Center" Padding="0,2,0,0" TabIndex="2"/>
<TextBlock HorizontalAlignment="Left" Margin="30,536,0,0" TextWrapping="Wrap" VerticalAlignment="Top"><Run Text="Kleine Unterweisung"/><Run Text=":"/></TextBlock>
<TextBlock Margin="45,84,311,0" TextWrapping="Wrap" Text="Anzahl Personen" VerticalAlignment="Top" Foreground="Gray" Padding="5,0,0,0"/>
<TextBlock Margin="45,110,311,0" TextWrapping="Wrap" Text="Anzahl Fahrzeuge" VerticalAlignment="Top" Foreground="Gray" Padding="5,0,0,0"/>
<TextBlock HorizontalAlignment="Left" Margin="30,436,0,0" TextWrapping="Wrap" Text="Fahrzeuge:" VerticalAlignment="Top" Width="190"/>
<Label x:Name="lblFahrzeuge" Margin="45,457,46,0" VerticalAlignment="Top" Height="24" Background="#33808080" BorderBrush="#99000000" BorderThickness="1" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Padding="1"/>
<TextBlock HorizontalAlignment="Left" Margin="30,270,0,0" TextWrapping="Wrap" Text="Ankunft bestätigen:" VerticalAlignment="Top" Width="170"/>
<TextBlock x:Name="lblAngemeldeteFzg" Margin="290,110,46,0" TextWrapping="Wrap" VerticalAlignment="Top" Foreground="#CCFF0000" Padding="0,0,5,0" TextAlignment="Right"/>
<TextBox x:Name="tbKennzeichen" Height="23" Margin="45,130,46,0" TextWrapping="Wrap" VerticalAlignment="Top" TextAlignment="Center" Padding="0,2,0,0" TabIndex="3"/>
<TextBlock Margin="45,134,311,0" TextWrapping="Wrap" Text="Kennzeichen" VerticalAlignment="Top" Foreground="Gray" Padding="5,0,0,0"/>
<TextBox x:Name="tbBemerkung" Height="72" Margin="45,180,46,0" TextWrapping="Wrap" VerticalAlignment="Top" Padding="0,2,0,0" TabIndex="4" VerticalScrollBarVisibility="Auto" AcceptsReturn="True"/>
<TextBlock Margin="30,158,326,0" TextWrapping="Wrap" VerticalAlignment="Top" Foreground="Black" Padding="0" Height="22"><Run Text="Bemerkung"/><Run Text=":"/></TextBlock>
<Button x:Name="btnSignature" Content="Unterschrift für Einweisung" Margin="45,610,46,0" Height="24" VerticalAlignment="Top" Click="btnSignature_Click" ToolTipService.ShowOnDisabled="True" IsEnabled="False"/>
<Button x:Name="btnKlEinweisung_durchgeführt" Content="Hier bestätigen wenn kleine Einweisung durchgeführt wurde" Margin="45,584,46,0" IsEnabled="False" Click="btnKlEinweisung_durchgeführt_Click" VerticalAlignment="Top" Height="24"/>
<Button x:Name="btnKarte" Content="Karte(n) ausgegeben" HorizontalAlignment="Left" Margin="45,648,0,0" VerticalAlignment="Top" Width="382" Click="btnKarte_Click" IsEnabled="False"/>
<Button x:Name="btnClose_Copy" Content="✕" Padding="0,0,0,0" Margin="0,-25,4,713" Height="18" BorderBrush="{x:Null}" Background="PaleVioletRed" Click="CloseWithX_Click" VerticalAlignment="Bottom" TabIndex="6" IsEnabled="True" HorizontalAlignment="Right" Width="20"/>
<Grid x:Name="spinnerCanvas" Margin="0,25,0,0" Background="White" Panel.ZIndex="99">
<local:ucSpinnerPiston Canvas.Left="74" Canvas.Top="230" RenderTransformOrigin="0.5,0.5" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Width="25" Height="27" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0">
<local:ucSpinnerPiston.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="3" ScaleY="3"/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</local:ucSpinnerPiston.RenderTransform>
</local:ucSpinnerPiston>
</Grid>
</Grid>
<Grid Margin="0,30,0,0">
<ComboBox x:Name="cbName" Margin="45,38,46,0" VerticalAlignment="Top" TabIndex="7" DisplayMemberPath="Value" SelectedValuePath="Key" SelectionChanged="CbName_SelectionChanged"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Height="23" Margin="30,15,0,0" TextWrapping="Wrap" Text="Firma/Besucher:" VerticalAlignment="Top" Width="120"/>
<TextBox x:Name="tbVerantwortlPerson" Height="23" Margin="45,83,46,0" TextWrapping="Wrap" VerticalAlignment="Top" TextAlignment="Center" Padding="0,2,0,0" TabIndex="1"/>
<TextBox x:Name="tbNrVerantwortlPerson" Height="23" Margin="45,108,46,0" TextWrapping="Wrap" VerticalAlignment="Top" TextAlignment="Center" Padding="0,2,0,0" TabIndex="2"/>
<TextBox x:Name="tbAnzahlPersonen" Height="23" Margin="45,142,46,0" TextWrapping="Wrap" VerticalAlignment="Top" TextAlignment="Center" Padding="0,2,0,0" TabIndex="3" PreviewTextInput="tbAnzahlPersonen_PreviewTextInput"/>
<TextBox x:Name="tbAnzahlFzg" Height="23" Margin="45,167,46,0" TextWrapping="Wrap" VerticalAlignment="Top" TextAlignment="Center" Padding="0,2,0,0" TabIndex="4" PreviewTextInput="tbAnzahlFzg_PreviewTextInput"/>
<TextBlock Margin="45,145,311,0" TextWrapping="Wrap" Text="Anzahl Personen" VerticalAlignment="Top" Foreground="Gray" Padding="5,0,0,0"/>
<TextBlock Margin="45,171,311,0" TextWrapping="Wrap" Text="Anzahl Fahrzeuge" VerticalAlignment="Top" Foreground="Gray" Padding="5,0,0,0"/>
<TextBlock x:Name="lblAngemeldeteFzg" Margin="290,171,46,0" TextWrapping="Wrap" VerticalAlignment="Top" Foreground="#CCFF0000" Padding="0,0,5,0" TextAlignment="Right"/>
<!--<TextBox x:Name="tbKennzeichen" Height="23" Margin="45,130,46,0" TextWrapping="Wrap" VerticalAlignment="Top" TextAlignment="Center" Padding="0,2,0,0" TabIndex="3"/>-->
<StackPanel x:Name="spKennzeichen" Margin="45,192,46,557"/>
<Grid VerticalAlignment="Bottom" Height="552">
<Button x:Name="btnCheck" HorizontalContentAlignment="Center" Margin="44,135,47,0" VerticalAlignment="Top" Height="80" Click="BtnCheck_Click" TabIndex="5" IsEnabled="False">
<Button.Background>
<LinearGradientBrush EndPoint="190,80" StartPoint="190,0" MappingMode="Absolute">
<GradientStop Color="#FFA2FF00" Offset="1"/>
<GradientStop Color="#FF00C300"/>
</LinearGradientBrush>
</Button.Background>
<Button.BorderThickness>
<Thickness Bottom="5" Left="5" Right="5" Top="5" />
</Button.BorderThickness>
<Button.BorderBrush>
<LinearGradientBrush EndPoint="190,80" StartPoint="190,0" MappingMode="Absolute">
<GradientStop Color="#FFB08000" Offset="1"/>
<GradientStop Color="#FFCB0000"/>
</LinearGradientBrush>
</Button.BorderBrush>
<TextBlock TextAlignment="Center" IsHitTestVisible="False" FontWeight="Bold"><Run Text="Ankunft jetzt"/><LineBreak/><Run Text="↓↓"/><LineBreak/><Run Text="Einweisung und Anmeldung"/><LineBreak/><Run Text="werden überprüft"/></TextBlock>
</Button>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="28,230,0,0" TextWrapping="Wrap" Text="Anmeldung:" VerticalAlignment="Top" Width="190"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="28,330,0,0" TextWrapping="Wrap" Text="Einweisung:" VerticalAlignment="Top" Width="190"/>
<Label x:Name="lblAnmeldung" Margin="44,251,47,0" VerticalAlignment="Top" Height="24" Background="#33808080" BorderBrush="#99000000" BorderThickness="1" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Padding="1"/>
<Label x:Name="lblEinweisung" Margin="44,351,47,0" VerticalAlignment="Top" Height="24" Background="#33808080" BorderBrush="#99000000" BorderThickness="1" Padding="1" VerticalContentAlignment="Center" HorizontalContentAlignment="Center"/>
<Label x:Name="lblKleineUnterweisung" Margin="44,401,47,0" VerticalAlignment="Top" Height="24" Background="#33808080" BorderBrush="#99000000" BorderThickness="1" Padding="1" VerticalContentAlignment="Center" HorizontalContentAlignment="Center"/>
<Button x:Name="btnClose" Content="Schließen" Margin="-2,0,1,1" Height="28" BorderBrush="{x:Null}" Click="Close_Click" VerticalAlignment="Bottom" TabIndex="6" IsEnabled="False"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="28,380,0,0" TextWrapping="Wrap" VerticalAlignment="Top"><Run Text="Kleine Unterweisung"/><Run Text=":"/></TextBlock>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="28,280,0,0" TextWrapping="Wrap" Text="Fahrzeuge:" VerticalAlignment="Top" Width="190"/>
<Label x:Name="lblFahrzeuge" Margin="44,301,47,0" VerticalAlignment="Top" Height="24" Background="#33808080" BorderBrush="#99000000" BorderThickness="1" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Padding="1"/>
<TextBlock HorizontalAlignment="Left" Margin="28,114,0,0" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" TextWrapping="Wrap" Text="Ankunft bestätigen:" VerticalAlignment="Top" Width="170"/>
<TextBox x:Name="tbBemerkung" Height="72" Margin="44,24,47,0" TextWrapping="Wrap" VerticalAlignment="Top" Padding="0,2,0,0" TabIndex="4" VerticalScrollBarVisibility="Auto" AcceptsReturn="True"/>
<TextBlock Margin="28,2,327,0" TextWrapping="Wrap" VerticalAlignment="Top" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Padding="0" Height="22"><Run Text="Bemerkung"/><Run Text=":"/></TextBlock>
<Button x:Name="btnSignature" Padding="-2" Content="Unterschrift für Einweisung" Margin="44,460,47,0" Height="25" VerticalAlignment="Top" Click="btnSignature_Click" ToolTipService.ShowOnDisabled="True" IsEnabled="True"/>
<Button x:Name="btnKlEinweisung_durchgeführt" Padding="-2" Content="Hier bestätigen wenn kleine Einweisung durchgeführt wurde" Margin="44,430,47,0" IsEnabled="False" Click="btnKlEinweisung_durchgeführt_Click" VerticalAlignment="Top" Height="25"/>
<Button x:Name="btnKarte" Content="Karte(n) ausgegeben" Padding="-2" Height="25" HorizontalAlignment="Left" Margin="44,495,0,0" VerticalAlignment="Top" Width="388" Click="btnKarte_Click" IsEnabled="False"/>
</Grid>
<!--<TextBlock Margin="45,134,311,0" TextWrapping="Wrap" Text="Kennzeichen" VerticalAlignment="Top" Foreground="Gray" Padding="5,0,0,0"/>-->
<Button x:Name="btnClose_Copy" Content="✕" Padding="0,0,0,0" Margin="0,-25,5,0" Height="18" BorderBrush="{x:Null}" Background="PaleVioletRed" Click="CloseWithX_Click" VerticalAlignment="Top" TabIndex="6" IsEnabled="True" HorizontalAlignment="Right" Width="20"/>
<TextBlock Margin="45,67,46,0" TextWrapping="Wrap" VerticalAlignment="Top" Foreground="Gray" Padding="5,0,0,0"><Run Text="Verantwortlicher MA der"/><Run Text=" einfahrenden Personen"/><Run Text=":"/></TextBlock>
<TextBlock Margin="45,111,311,0" TextWrapping="Wrap" Text="Tel. Nr. des MA" VerticalAlignment="Top" Foreground="Gray" Padding="5,0,0,0"/>
</Grid>
</Grid>
</Window>

View File

@ -0,0 +1,517 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace ZKuP
{
/// <summary>
/// Interaktionslogik für Arrivals.xaml
/// </summary>
public partial class Arrivals : Window
{
List<string> NamesList = new List<string>();
int firmenCount = 0;
int besucherCount = 0;
bool arrivalClicked = false;
bool kl_EinweisungClicked = false;
string query = "";
byte[] _signature = null;
Window mainWindow = null;
int fzgCount = 0;
public Arrivals(Window main, string Parameter = "")
{
InitializeComponent();
arrivalClicked = false;
mainWindow = main;
var list = SQL.ReadListString("Select Name FROM zkup.firmen").Result;
list = list.OrderBy(p => p).ToList();
NamesList.Add("Firmen:");
NamesList.Add("------------");
NamesList.AddRange(list);
NamesList.Add("");
NamesList.Add("============");
NamesList.Add("");
firmenCount = NamesList.Count;
list = SQL.ReadListString("Select Name FROM zkup.besucher").Result;
list.OrderBy(p => p).ToList();
NamesList.Add("Besucher:");
NamesList.Add("------------");
NamesList.AddRange(list);
besucherCount = NamesList.Count - firmenCount;
cbName.ItemsSource = NamesList;
if (Parameter != "")
{
cbName.SelectionChanged += CbName_SelectionChanged;
cbName.SelectedItem = Parameter;
tbAnzahlPersonen.Focus();
tbVerantwortlPerson.Text = SQL.ReadSingleValue($"SELECT Verantwortlicher_MA_Firma FROM zkup.firmen WHERE `Name` = '{Parameter}' LIMIT 1");
tbNrVerantwortlPerson.Text = SQL.ReadSingleValue($"SELECT Tel_Nr_Verantwortlicher_Firma FROM zkup.firmen WHERE `Name` = '{Parameter}' LIMIT 1");
}
else
{
cbName.SelectionChanged += CbName_SelectionChanged;
cbName.IsDropDownOpen = true;
}
if(signoPad._stPad.DeviceGetCount() <= 0)
{
btnSignature.IsEnabled = false;
btnCheck.IsEnabled = true;
btnSignature.ToolTip = "Kein Unterschriftenpad gefunden";
}
}
private async void BtnCheck_Click(object sender, RoutedEventArgs e)
{
var zutritt = "";
var einweis = "";
var kl_einweis = "";
string kat = "1";
string asp = "";
string anzFzg = "";
int klUnterweis = 0;
int anzFzgGemeldet = 0;
DataTable table = new DataTable();
if (cbName.SelectedIndex < firmenCount)
{
table = await SQL.ReadSQL("Select * FROM zkup.firmen");
kat = "1";
}
else
{
table = await SQL.ReadSQL("Select * FROM zkup.besucher");
kat = "2";
}
foreach(DataRow row in table.Rows)
{
if(row.ItemArray[1].ToString() == cbName.SelectedValue.ToString())
{
DateTime beginnDT;
DateTime endeDT;
DateTime einweisDT;
DateTime kl_einweisDT;
if (kat == "1")
{
if (string.IsNullOrWhiteSpace(tbAnzahlFzg.Text))
{
MessageBox.Show(this, "Anzahl Fahrzeuge eingeben", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
if (string.IsNullOrWhiteSpace(tbAnzahlPersonen.Text))
{
MessageBox.Show(this, "Anzahl Personen eingeben", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
if (DateTime.TryParse(row.ItemArray[7].ToString(), out beginnDT)
&& DateTime.TryParse(row.ItemArray[8].ToString(), out endeDT))
{
if (DateTime.Now.Date >= beginnDT.Date && DateTime.Now.Date <= endeDT.Date)
zutritt = "OK";
else zutritt = "Prüfen!";
}
else
{
zutritt = $"Fehler! Bitte bei {row.ItemArray[10]} nachfragen";
einweis = $"Fehler! Bitte bei {row.ItemArray[10]} nachfragen";
}
if (Convert.ToInt16(tbAnzahlFzg.Text) <= Convert.ToInt16(row.ItemArray[5]))
{
anzFzg = "OK";
}
else
{
anzFzg = $"Nur {row.ItemArray[5].ToString()} Fahrzeug(e) angemeldet";
}
anzFzgGemeldet = row.ItemArray[5] != null ? Convert.ToInt16(row.ItemArray[5]) : 0;
if (DateTime.TryParse(row.ItemArray[9].ToString(), out einweisDT))
{
if(row.ItemArray[9].ToString() == "01.01.1903 00:00:00")
{
einweis = "Nur in Begleitung";
}
else if (DateTime.Now.Date <= einweisDT)
einweis = "OK";
else einweis = "Prüfen!";
}
else
{
zutritt = $"Fehler! Bitte bei {row.ItemArray[10]} nachfragen";
einweis = $"Fehler! Bitte bei {row.ItemArray[10]} nachfragen";
}
if(DateTime.TryParse(row.ItemArray[12].ToString(), out kl_einweisDT))
{
if (DateTime.Now.Date <= einweisDT)
{
kl_einweis = "OK";
klUnterweis = 1;
}
else
{
kl_einweis = "Kleine Unterweisung durchführen!";
klUnterweis = 0;
}
}
else
{
kl_einweis = "Bitte kleine Unterweisung durchführen!";
klUnterweis = 0;
}
asp = tbVerantwortlPerson.Text + " / " + tbNrVerantwortlPerson.Text; //row.ItemArray[10].ToString();
}
if (kat == "2")
{
if (DateTime.TryParse(row.ItemArray[5].ToString(), out beginnDT))
{
if (DateTime.Now.Date == beginnDT)
zutritt = "OK";
else zutritt = "Prüfen!";
}
else
{
zutritt = $"Fehler! Bitte bei {row.ItemArray[7]} nachfragen";
einweis = $"Fehler! Bitte bei {row.ItemArray[7]} nachfragen";
}
//if (DateTime.TryParse(row.ItemArray[6].ToString(), out einweisDT))
//{
// if (DateTime.Now.Date <= einweisDT)
// einweis = "OK";
// else einweis = "Prüfen!";
//}
//else
//{
// zutritt = $"Fehler! Bitte bei {row.ItemArray[7]} nachfragen";
// einweis = $"Fehler! Bitte bei {row.ItemArray[7]} nachfragen";
//}
einweis = "--";
anzFzg = "--";
if (DateTime.TryParse(row.ItemArray[9].ToString(), out kl_einweisDT))
{
if (DateTime.Now.Date <= kl_einweisDT)
{
kl_einweis = "OK";
klUnterweis = 1;
}
else
{
kl_einweis = "Kleine Unterweisung durchführen!";
klUnterweis = 0;
}
}
else
{
kl_einweis = "Kleine Unterweisung durchführen!";
klUnterweis = 0;
}
asp = row.ItemArray[7].ToString();
}
}
}
lblAnmeldung.Content = zutritt;
if (zutritt == "OK") lblAnmeldung.Background = new SolidColorBrush(Colors.LightGreen);
else if (zutritt == "Prüfen!") lblAnmeldung.Background = new SolidColorBrush(Colors.LightYellow);
else lblAnmeldung.Background = new SolidColorBrush(Colors.LightSalmon);
lblFahrzeuge.Content = anzFzg;
if (anzFzg == "OK") lblFahrzeuge.Background = new SolidColorBrush(Colors.LightGreen);
else if (anzFzg.StartsWith("Nur")) lblFahrzeuge.Background = new SolidColorBrush(Colors.LightYellow);
else if (anzFzg == "--") lblFahrzeuge.Background = new SolidColorBrush(Colors.LightGray);
else lblFahrzeuge.Background = new SolidColorBrush(Colors.LightSalmon);
lblEinweisung.Content = einweis;
if (einweis == "OK") lblEinweisung.Background = new SolidColorBrush(Colors.LightGreen);
else if (einweis == "Prüfen!") lblEinweisung.Background = new SolidColorBrush(Colors.LightYellow);
else if (einweis == "--") lblEinweisung.Background = new SolidColorBrush(Colors.LightGray);
else lblEinweisung.Background = new SolidColorBrush(Colors.LightSalmon);
lblKleineUnterweisung.Content = kl_einweis;
if (kl_einweis == "OK") lblKleineUnterweisung.Background = new SolidColorBrush(Colors.LightGreen);
else if (kl_einweis == "Kleine Unterweisung durchführen!")
{
lblKleineUnterweisung.Background = new SolidColorBrush(Colors.LightYellow);
lblKleineUnterweisung.Content = "↓ " + kl_einweis + " ↓";
}
else lblKleineUnterweisung.Background = new SolidColorBrush(Colors.LightSalmon);
var AnzPers = "0";
var AnzFzg = "0";
if (tbAnzahlFzg.Text != "")
AnzFzg = tbAnzahlFzg.Text;
if (tbAnzahlPersonen.Text != "")
AnzPers = tbAnzahlPersonen.Text;
if (einweis == "") einweis = "Fehlerhaft";
if (zutritt == "") zutritt = "Fehlerhaft";
arrivalClicked = true;
var kennzeichenTextboxes = spKennzeichen.Children.OfType<TextBox>().ToList();
string kennzeichen = "";
for (var i = 0; i < fzgCount; i++)
{
if (kennzeichenTextboxes.Count >= i)
if (kennzeichen == "")
kennzeichen = $"{((kennzeichenTextboxes[i]) as TextBox).Text}";
else
{
if (!string.IsNullOrWhiteSpace(((kennzeichenTextboxes[i]) as TextBox).Text))
kennzeichen = $"{kennzeichen} / {((kennzeichenTextboxes[i]) as TextBox).Text}";
}
}
query = $"INSERT INTO zutritte (Kategorie,Name,Zutritt,Pruefung_Zutritt,Pruefung_Einweisung,AnzahlPers,AnzahlFzg,Ansprechpartner,Kl_Unterweisung,Fzg_gemeldet,Kennzeichen,Bemerkung,signature_blob) VALUES ('{kat}','{cbName.SelectedValue.ToString().Replace(",",";")}','{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','{zutritt}','{einweis}','{AnzPers.Replace(",",";")}','{AnzFzg.Replace(",", ";")}','{asp.Replace(",", ";")}','{klUnterweis}','{anzFzgGemeldet}','{kennzeichen}','{tbBemerkung.Text}',@signature)";
btnSignature.IsEnabled = true;
if (klUnterweis == 0) btnKlEinweisung_durchgeführt.IsEnabled = true;
else if (klUnterweis == 1)
{
btnKlEinweisung_durchgeführt.ToolTip = "Kleine Unterweisung wurde bereits durchgeführt\nBestätigung nicht nötig";
btnSignature.ToolTip = "Kleine Unterweisung wurde bereits durchgeführt\nUnterschrift nicht nötig";
btnSignature.Content = "Unterschrift bereits vorhanden";
}
if (arrivalClicked) btnClose.IsEnabled = true;
}
protected override void OnClosing(CancelEventArgs e)
{
try
{
if (arrivalClicked)
{
e.Cancel = true;
MessageBox.Show(this, "Ankunft wurde geklickt\n\nBitte Fenster über \"Schließen\"-Button schließen", "Fehler", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
signoPad.CloseConnection();
mainWindow.Focus();
}
catch (Exception ex)
{
Log.WriteLog(ex.ToString());
MessageBox.Show("Fehler: " + ex.Message);
}
}
private async void Close_Click(object sender, RoutedEventArgs e)
{
if (arrivalClicked)
{
await SQL.WriteSQL(query, _signature);
arrivalClicked = false;
this.Close();
}
signoPad.CloseConnection();
}
private async void CbName_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (cbName.SelectedValue != null)
{
if(cbName.SelectedItem.ToString() == "------------" || cbName.SelectedItem.ToString() == "============" || cbName.SelectedItem.ToString() == "Besucher:" || cbName.SelectedItem.ToString() == "Firmen:" || (cbName.SelectedItem.ToString() == "" && cbName.SelectedIndex != -1))
{
cbName.SelectedIndex = -1;
MessageBox.Show(this, "Dieses Feld kann nicht gewählt werden", "Fehler!", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
string a_Fzg = await SQL.ReadSingleValueAsync($"SELECT Anzahl_Fzg FROM zkup.firmen WHERE `Name`='{cbName.SelectedValue.ToString()}' AND `Arbeitsbeginn` <= current_date() AND `Arbeitsende` >= current_date()");
lblAngemeldeteFzg.Text = !string.IsNullOrWhiteSpace(a_Fzg) ? a_Fzg + " Fzg. angemeldet" : "keine Fzg. angemeldet";
spKennzeichen.Children.Clear();
if (!string.IsNullOrWhiteSpace(a_Fzg))
{
fzgCount = Convert.ToInt16(a_Fzg);
for (var i = 0; i < fzgCount; ++i)
{
spKennzeichen.Children.Add(new TextBox()
{
Name = $"tbKennzeichen{i + 1}",
Height = 23,
Margin = new Thickness(0, 2, 0, 0),
TextWrapping = TextWrapping.Wrap,
VerticalAlignment = VerticalAlignment.Top,
TextAlignment = TextAlignment.Center,
Padding = new Thickness(0, 2, 0, 0),
TabIndex = 3 + i
});
spKennzeichen.Children.Add(new TextBlock()
{
Margin = new Thickness(0, -21, 0, 0),
Width = 100,
TextWrapping = TextWrapping.Wrap,
Text = $"{i+1}. Kennzeichen",
VerticalAlignment = VerticalAlignment.Top,
HorizontalAlignment = HorizontalAlignment.Left,
Foreground = new SolidColorBrush(Colors.Gray),
Padding = new Thickness(5, 0, 0, 0)
});
this.Height = this.Height + 11;
}
}
btnCheck.IsEnabled = true;
btnKarte.IsEnabled = true;
}
}
private async void btnSignature_Click(object sender, RoutedEventArgs e)
{
string kat = "1";
string firmaBesucher = "";
string name = "";
var kennzeichenTextboxes = spKennzeichen.Children.OfType<TextBox>().ToList();
string kennzeichen = "";
for(var i = 0; i < fzgCount; i++)
{
if (kennzeichenTextboxes.Count >= i)
if (kennzeichen == "")
kennzeichen = $"{((kennzeichenTextboxes[i]) as TextBox).Text}";
else
kennzeichen = $"{kennzeichen} / {((kennzeichenTextboxes[i]) as TextBox).Text}";
}
if (cbName.SelectedIndex < firmenCount)
{
firmaBesucher = cbName.SelectedValue.ToString();
name = await SQL.ReadSingleValueAsync($"SELECT Verantwortlicher_MA_Firma FROM zkup.firmen WHERE Name = '{cbName.SelectedValue.ToString()}'");
}
else
{
firmaBesucher = cbName.SelectedValue.ToString();
name = await SQL.ReadSingleValueAsync($"SELECT Ansprechpartner_Intern FROM zkup.besucher WHERE Name = '{cbName.SelectedValue.ToString()}'");
}
if (signoPad._stPad.DeviceGetCount() > 0)
{
var sig = new Signature(name, cbName.SelectedValue.ToString(), kennzeichen);
if (sig.ShowDialog() == false)
{
_signature = sig.ResultByte;
btnCheck.IsEnabled = true;
}
}
else
MessageBox.Show("Kein Unterschriftenpad gefunden\nMeldung 0x01", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
}
private async void btnKlEinweisung_durchgeführt_Click(object sender, RoutedEventArgs e)
{
if (signoPad._stPad.DeviceGetCount() <= 0)
{
btnSignature.IsEnabled = false;
btnSignature.ToolTip = "Kein Unterschriftenpad gefunden";
}
else { btnSignature.IsEnabled = true; btnSignature.Content = "Unterschrift einholen!"; }
if (cbName.SelectedIndex < firmenCount)
await SQL.WriteSQL($"UPDATE zkup.firmen SET Kleine_Unterweisung_bis = '{(DateTime.Now.Date.AddYears(1)).ToString("yyyy-MM-dd")}' WHERE Name = '{cbName.SelectedValue.ToString()}'");
else
await SQL.WriteSQL($"UPDATE zkup.besucher SET Kleine_Unterweisung_bis = '{(DateTime.Now.Date.AddYears(1)).ToString("yyyy-MM-dd")}' WHERE Name = '{cbName.SelectedValue.ToString()}'");
var s = query.Split(',');
s[20] = "1";
query = string.Join(",", s);
btnKlEinweisung_durchgeführt.Background = new SolidColorBrush(Colors.GreenYellow);
}
private void btnKarte_Click(object sender, RoutedEventArgs e)
{
AddCardUser aI = new AddCardUser(cbName.SelectedItem.ToString());
aI.Owner = this;
aI.ShowDialog();
}
private void Window_PreviewGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
this.Opacity = 1;
}
private void Window_PreviewLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
this.Opacity = 0.5;
}
private void CloseWithX_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
private void Window_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
this.DragMove();
}
}
}

View File

@ -4,6 +4,7 @@ using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
@ -21,7 +22,7 @@ namespace ZKuP
/// </summary>
public partial class Arrivals : Window
{
List<string> NamesList = new List<string>();
Dictionary<int, string> NamesList = new Dictionary<int, string>();
int firmenCount = 0;
int besucherCount = 0;
bool arrivalClicked = false;
@ -29,64 +30,147 @@ namespace ZKuP
string query = "";
byte[] _signature = null;
Window mainWindow = null;
string selectedID = "-1";
int isBesucher = 0;
string Name = "";
public Arrivals(Window main, string Parameter = "")
int fzgCount = 0;
/// <summary>
///
/// </summary>
/// <param name="main"></param>
/// <param name="id"></param>
/// <param name="IsBesucher">0: Firma, 1: Besucher, 2: Family</param>
public Arrivals(Window main, int id = -1, int IsBesucher = 0, string name = "")
{
InitializeComponent();
arrivalClicked = false;
mainWindow = main;
var list = SQL.ReadListString("Select Name FROM zkup.firmen").Result;
list = list.OrderBy(p => p).ToList();
NamesList.Add("Firmen:");
NamesList.Add("------------");
NamesList.AddRange(list);
NamesList.Add("");
NamesList.Add("============");
NamesList.Add("");
selectedID = id == -1 ? name : id.ToString();
isBesucher = IsBesucher;
Name = name;
}
private async Task initialize()
{
var list = await SQL.ReadDictionary("Select idFirmen, Name FROM zkup.firmen ORDER BY Name", 0, 1);
//list = list.OrderBy(p => p.Value).ToDictionary();
NamesList.Add(0, "Firmen:");
NamesList.Add(999990, "------------");
foreach (var keyValuePair in list)
NamesList.Add(keyValuePair.Key, keyValuePair.Value);
NamesList.Add(999991, "");
NamesList.Add(999992, "============");
NamesList.Add(999993, "");
firmenCount = NamesList.Count;
list = SQL.ReadListString("Select Name FROM zkup.besucher").Result;
list.OrderBy(p => p).ToList();
list = await SQL.ReadDictionary("Select idBesucher, Name FROM zkup.besucher ORDER BY Name", 0, 1);
//list.OrderBy(p => p).ToList();
NamesList.Add("Besucher:");
NamesList.Add("------------");
NamesList.AddRange(list);
NamesList.Add(999994, "Besucher:");
NamesList.Add(999995, "------------");
foreach (var keyValuePair in list)
NamesList.Add(Convert.ToInt32($"9999{keyValuePair.Key}"), keyValuePair.Value);
NamesList.Add(999996, "");
NamesList.Add(999997, "============");
NamesList.Add(999998, "");
besucherCount = NamesList.Count - firmenCount;
cbName.ItemsSource = NamesList;
list = await SQL.ReadDictionary("Select idfamily, Name FROM zkup.family ORDER BY Name", 0, 1);
//list.OrderBy(p => p).ToList();
NamesList.Add(999999, "Führung:");
NamesList.Add(1000000, "------------");
if (Parameter != "")
foreach (var keyValuePair in list)
NamesList.Add(Convert.ToInt32($"1111{keyValuePair.Key}"), keyValuePair.Value);
await Dispatcher.BeginInvoke(new Action(async() =>
{
cbName.SelectionChanged += CbName_SelectionChanged;
cbName.SelectedItem = Parameter;
tbAnzahlPersonen.Focus();
}
else
{
cbName.SelectionChanged += CbName_SelectionChanged;
cbName.IsDropDownOpen = true;
}
cbName.ItemsSource = NamesList;
if(signoPad._stPad.DeviceGetCount() <= 0)
{
btnSignature.IsEnabled = false;
btnCheck.IsEnabled = true;
if (int.TryParse(selectedID, out int result) && selectedID != "-1")
{
cbName.SelectionChanged += CbName_SelectionChanged;
//cbName.f = Parameter;
switch (isBesucher)
{
case 0:
cbName.SelectedValue = Convert.ToInt32(selectedID);
break;
case 1:
cbName.SelectedValue = Convert.ToInt32($"9999{selectedID}");
break;
case 2:
cbName.SelectedValue = Convert.ToInt32($"1111{selectedID}");
break;
}
btnSignature.ToolTip = "Kein Unterschriftenpad gefunden";
}
//cbName.SelectedValue = isBesucher == 1 ? Convert.ToInt32($"9999{selectedID}") : Convert.ToInt32(selectedID);
tbAnzahlPersonen.Focus();
if (isBesucher == 0)
{
tbVerantwortlPerson.Text = await SQL.ReadSingleValueAsync($"SELECT Verantwortlicher_MA_Firma FROM zkup.firmen WHERE `idFirmen` = '{selectedID}' LIMIT 1");
tbNrVerantwortlPerson.Text = await SQL.ReadSingleValueAsync($"SELECT Tel_Nr_Verantwortlicher_Firma FROM zkup.firmen WHERE `idFirmen` = '{selectedID}' LIMIT 1");
}
else if (isBesucher == 1)
{
tbVerantwortlPerson.Text = await SQL.ReadSingleValueAsync($"SELECT Name FROM zkup.besucher WHERE `idbesucher` = '{selectedID}' LIMIT 1");
tbNrVerantwortlPerson.Text = await SQL.ReadSingleValueAsync($"SELECT Tel_Nr_Besucher FROM zkup.besucher WHERE `idbesucher` = '{selectedID}' LIMIT 1");
}
else if (isBesucher == 2)
{
tbVerantwortlPerson.Text = Name;
tbNrVerantwortlPerson.Text = await SQL.ReadSingleValueAsync($"SELECT TelNr AS Tel_Nr_Besucher FROM zkup.family WHERE `Name` = '{Name}' AND `Date` = '{DateTime.Now.Date.ToString("yyyy-MM-dd")}' LIMIT 1");
tbAnzahlPersonen.Text = await SQL.ReadSingleValueAsync($"SELECT AnzBegleiter FROM zkup.family WHERE `Name` = '{Name}' AND `Date` = '{DateTime.Now.Date.ToString("yyyy-MM-dd")}' LIMIT 1");
}
}
//else if (isBesucher == 2)
//{
// var dict = new Dictionary<int, string>();
// dict.Add(Convert.ToInt32("1111" + selectedID), Name);
// var x = dict.First();
// cbName.SelectedIndex = (cbName.Items.IndexOf(x));
// //cbName.SelectedItem = cbName.Items.IndexOf(cbName.ItemsSource as )
// //cbName.SelectedValue = Name;
// tbVerantwortlPerson.Text = Name;
// tbNrVerantwortlPerson.Text = await SQL.ReadSingleValueAsync($"SELECT TelNr AS Tel_Nr_Besucher FROM zkup.family WHERE `Name` = '{Name}' AND `Date` = '{DateTime.Now.Date.ToString("yyyy-MM-dd")}' LIMIT 1");
// tbAnzahlPersonen.Text = await SQL.ReadSingleValueAsync($"SELECT AnzBegleiter FROM zkup.family WHERE `Name` = '{Name}' AND `Date` = '{DateTime.Now.Date.ToString("yyyy-MM-dd")}' LIMIT 1");
//}
else
{
cbName.SelectionChanged += CbName_SelectionChanged;
cbName.IsDropDownOpen = true;
}
if (signoPad._stPad.DeviceGetCount() <= 0)
{
btnSignature.IsEnabled = false;
btnCheck.IsEnabled = true;
btnSignature.ToolTip = "Kein Unterschriftenpad gefunden";
}
}));
}
private async void BtnCheck_Click(object sender, RoutedEventArgs e)
{
var zutritt = "";
@ -106,6 +190,11 @@ namespace ZKuP
table = await SQL.ReadSQL("Select * FROM zkup.firmen");
kat = "1";
}
else if (cbName.SelectedIndex >= (firmenCount + besucherCount + 2))
{
table = await SQL.ReadSQL("Select * FROM zkup.family");
kat = "5";
}
else
{
table = await SQL.ReadSQL("Select * FROM zkup.besucher");
@ -114,7 +203,7 @@ namespace ZKuP
foreach(DataRow row in table.Rows)
{
if(row.ItemArray[1].ToString() == cbName.SelectedValue.ToString())
if (row.ItemArray[1].ToString() == cbName.SelectedItem.ToString().Split(',')[1].ToString().Replace("]", "").TrimStart(' ') || $"9999{row.ItemArray[0].ToString()}" == cbName.SelectedValue.ToString() || row.ItemArray[0].ToString() == cbName.SelectedValue.ToString())
{
DateTime beginnDT;
DateTime endeDT;
@ -197,7 +286,7 @@ namespace ZKuP
klUnterweis = 0;
}
asp = row.ItemArray[10].ToString();
asp = tbVerantwortlPerson.Text + " / " + tbNrVerantwortlPerson.Text; //row.ItemArray[10].ToString();
}
if (kat == "2")
@ -214,17 +303,7 @@ namespace ZKuP
einweis = $"Fehler! Bitte bei {row.ItemArray[7]} nachfragen";
}
//if (DateTime.TryParse(row.ItemArray[6].ToString(), out einweisDT))
//{
// if (DateTime.Now.Date <= einweisDT)
// einweis = "OK";
// else einweis = "Prüfen!";
//}
//else
//{
// zutritt = $"Fehler! Bitte bei {row.ItemArray[7]} nachfragen";
// einweis = $"Fehler! Bitte bei {row.ItemArray[7]} nachfragen";
//}
einweis = "--";
anzFzg = "--";
@ -247,7 +326,17 @@ namespace ZKuP
klUnterweis = 0;
}
asp = row.ItemArray[7].ToString();
asp = tbVerantwortlPerson.Text + " / " + tbNrVerantwortlPerson.Text;
//asp = row.ItemArray[7].ToString();
}
if(kat == "5")
{
zutritt = "OK";
anzFzg = "--";
kl_einweis = "--";
einweis = "--";
asp = tbVerantwortlPerson.Text + " / " + tbNrVerantwortlPerson.Text;
}
}
}
@ -294,9 +383,35 @@ namespace ZKuP
arrivalClicked = true;
query = $"INSERT INTO zutritte (Kategorie,Name,Zutritt,Pruefung_Zutritt,Pruefung_Einweisung,AnzahlPers,AnzahlFzg,Ansprechpartner,Kl_Unterweisung,Fzg_gemeldet,Kennzeichen,Bemerkung,signature_blob) VALUES ('{kat}','{cbName.SelectedValue.ToString().Replace(",",";")}','{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','{zutritt}','{einweis}','{AnzPers.Replace(",",";")}','{AnzFzg.Replace(",", ";")}','{asp.Replace(",", ";")}','{klUnterweis}','{anzFzgGemeldet}','{tbKennzeichen.Text}','{tbBemerkung.Text}',@signature)";
var kennzeichenTextboxes = spKennzeichen.Children.OfType<TextBox>().ToList();
string kennzeichen = "";
for (var i = 0; i < fzgCount; i++)
{
if (kennzeichenTextboxes.Count >= i)
if (kennzeichen == "")
kennzeichen = $"{((kennzeichenTextboxes[i]) as TextBox).Text}";
else
{
if (!string.IsNullOrWhiteSpace(((kennzeichenTextboxes[i]) as TextBox).Text))
kennzeichen = $"{kennzeichen} / {((kennzeichenTextboxes[i]) as TextBox).Text}";
}
}
if (int.TryParse(selectedID, out int result))
{
var idFirma_Besucher = selectedID.StartsWith("9999") ? Convert.ToInt32(selectedID.ToString().Substring(3)) : Convert.ToInt32(selectedID);
query = $"INSERT INTO zutritte (Kategorie,Name,Zutritt,Pruefung_Zutritt,Pruefung_Einweisung,AnzahlPers,AnzahlFzg,Ansprechpartner,Kl_Unterweisung,Fzg_gemeldet,Kennzeichen,Bemerkung,signature_blob,idFirma_Besucher) VALUES ('{kat}','{cbName.Text.ToString().Replace(",", ";")}','{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','{zutritt}','{einweis}','{AnzPers.Replace(",", ";")}','{AnzFzg.Replace(",", ";")}','{asp.Replace(",", ";")}','{klUnterweis}','{anzFzgGemeldet}','{kennzeichen}','{tbBemerkung.Text}',@signature,'{idFirma_Besucher}')";
btnSignature.IsEnabled = true;
}
else
{
query = $"INSERT INTO zutritte (Kategorie,Name,Zutritt,Pruefung_Zutritt,Pruefung_Einweisung,AnzahlPers,AnzahlFzg,Ansprechpartner,Kl_Unterweisung,Fzg_gemeldet,Kennzeichen,Bemerkung) VALUES ('{kat}','{cbName.Text.ToString().Replace(",", ";")}','{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','{zutritt}','{einweis}','{AnzPers.Replace(",", ";")}','{AnzFzg.Replace(",", ";")}','{asp.Replace(",", ";")}','{klUnterweis}','{anzFzgGemeldet}','{kennzeichen}','{tbBemerkung.Text}')";
btnSignature.IsEnabled = false;
}
btnSignature.IsEnabled = true;
if (klUnterweis == 0) btnKlEinweisung_durchgeführt.IsEnabled = true;
else if (klUnterweis == 1)
@ -338,11 +453,21 @@ namespace ZKuP
{
if (arrivalClicked)
{
await SQL.WriteSQL(query, _signature);
try
{
await SQL.WriteSQL(query, _signature);
arrivalClicked = false;
this.Close();
arrivalClicked = false;
this.Close();
}
catch (Exception ex)
{
MessageBox.Show("Bei der Übertragung der Daten ist ein Fehler aufgetreten.\nBitte die Ankunft nochmal bestätigen.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
Log.WriteLog(ex.ToString());
this.Close();
}
}
signoPad.CloseConnection();
@ -350,7 +475,7 @@ namespace ZKuP
private async void CbName_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (cbName.SelectedValue != null)
if (cbName.SelectedItem != null)
{
if(cbName.SelectedItem.ToString() == "------------" || cbName.SelectedItem.ToString() == "============" || cbName.SelectedItem.ToString() == "Besucher:" || cbName.SelectedItem.ToString() == "Firmen:" || (cbName.SelectedItem.ToString() == "" && cbName.SelectedIndex != -1))
{
@ -359,9 +484,52 @@ namespace ZKuP
return;
}
string a_Fzg = await SQL.ReadSingleValueAsync($"SELECT Anzahl_Fzg FROM zkup.firmen WHERE `Name`='{cbName.SelectedValue.ToString()}' AND `Arbeitsbeginn` <= current_date() AND `Arbeitsende` >= current_date()");
lblAngemeldeteFzg.Text = !string.IsNullOrWhiteSpace(a_Fzg) ? a_Fzg + " Fzg. angemeldet" : "keine Fzg. angemeldet";
string a_Fzg = "0";
if (cbName.SelectedIndex < firmenCount)
{
a_Fzg = await SQL.ReadSingleValueAsync($"SELECT Anzahl_Fzg FROM zkup.firmen WHERE `idFirmen`='{selectedID}' AND `Arbeitsbeginn` <= current_date() AND `Arbeitsende` >= current_date()");
lblAngemeldeteFzg.Text = !string.IsNullOrWhiteSpace(a_Fzg) ? a_Fzg + " Fzg. angemeldet" : "keine Fzg. angemeldet";
}
else
{
lblAngemeldeteFzg.Text = "Besucher nur ohne Fzg.";
}
spKennzeichen.Children.Clear();
if (!string.IsNullOrWhiteSpace(a_Fzg))
{
fzgCount = Convert.ToInt16(a_Fzg);
for (var i = 0; i < fzgCount; ++i)
{
spKennzeichen.Children.Add(new TextBox()
{
Name = $"tbKennzeichen{i + 1}",
Height = 23,
Margin = new Thickness(0, 2, 0, 0),
TextWrapping = TextWrapping.Wrap,
VerticalAlignment = VerticalAlignment.Top,
TextAlignment = TextAlignment.Center,
Padding = new Thickness(0, 2, 0, 0),
TabIndex = 5 + i
});
spKennzeichen.Children.Add(new TextBlock()
{
Margin = new Thickness(0, -21, 0, 0),
Width = 100,
TextWrapping = TextWrapping.Wrap,
Text = $"{i+1}. Kennzeichen",
VerticalAlignment = VerticalAlignment.Top,
HorizontalAlignment = HorizontalAlignment.Left,
Foreground = new SolidColorBrush(Colors.Gray),
Padding = new Thickness(5, 0, 0, 0)
});
this.Height = this.Height + 11;
}
}
btnCheck.IsEnabled = true;
btnKarte.IsEnabled = true;
@ -374,24 +542,45 @@ namespace ZKuP
string firmaBesucher = "";
string name = "";
if (cbName.SelectedIndex < firmenCount)
var kennzeichenTextboxes = spKennzeichen.Children.OfType<TextBox>().ToList();
string kennzeichen = "";
if (kennzeichenTextboxes != null)
{
firmaBesucher = cbName.SelectedValue.ToString();
name = await SQL.ReadSingleValueAsync($"SELECT Verantwortlicher_MA_Firma FROM zkup.firmen WHERE Name = '{cbName.SelectedValue.ToString()}'");
for (var i = 0; i < fzgCount; i++)
{
if (kennzeichenTextboxes.Count >= i)
if (kennzeichen == "")
kennzeichen = $"{((kennzeichenTextboxes[i]) as TextBox).Text}";
else
kennzeichen = $"{kennzeichen} / {((kennzeichenTextboxes[i]) as TextBox).Text}";
}
}
//if (cbName.SelectedIndex < firmenCount)
//{
// //firmaBesucher = cbName.SelectedItem.ToString();
// name = await SQL.ReadSingleValueAsync($"SELECT Verantwortlicher_MA_Firma FROM zkup.firmen WHERE `idFirmen` = '{selectedID}'");
//}
//else
//{
// //firmaBesucher = cbName.SelectedItem.ToString();
// name = await SQL.ReadSingleValueAsync($"SELECT Ansprechpartner_Intern FROM zkup.besucher WHERE `idBesucher` = '{selectedID}'");
//}
name = tbVerantwortlPerson.Text;
if (signoPad._stPad.DeviceGetCount() > 0)
{
var sig = new Signature(Signature.DisclaimerType.Parken,name, cbName.SelectedItem.ToString(), kennzeichen);
if (sig.ShowDialog() == false)
{
_signature = sig.ResultByte;
btnCheck.IsEnabled = true;
}
}
else
{
firmaBesucher = cbName.SelectedValue.ToString();
name = await SQL.ReadSingleValueAsync($"SELECT Ansprechpartner_Intern FROM zkup.besucher WHERE Name = '{cbName.SelectedValue.ToString()}'");
}
var sig = new Signature(name, cbName.SelectedValue.ToString(), tbKennzeichen.Text);
if(sig.ShowDialog() == false)
{
_signature = sig.ResultByte;
btnCheck.IsEnabled = true;
}
MessageBox.Show("Kein Unterschriftenpad gefunden\nMeldung 0x01", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
}
private async void btnKlEinweisung_durchgeführt_Click(object sender, RoutedEventArgs e)
@ -403,13 +592,18 @@ namespace ZKuP
}
else { btnSignature.IsEnabled = true; btnSignature.Content = "Unterschrift einholen!"; }
if (cbName.SelectedIndex < firmenCount)
await SQL.WriteSQL($"UPDATE zkup.firmen SET Kleine_Unterweisung_bis = '{(DateTime.Now.Date.AddYears(1)).ToString("yyyy-MM-dd")}' WHERE Name = '{cbName.SelectedValue.ToString()}'");
if (!cbName.SelectedValue.ToString().StartsWith("9999"))
await SQL.WriteSQL($"UPDATE zkup.firmen SET Kleine_Unterweisung_bis = '{(DateTime.Now.Date.AddYears(1)).ToString("yyyy-MM-dd")}' WHERE `idFirmen` = '{selectedID}'");
else
await SQL.WriteSQL($"UPDATE zkup.besucher SET Kleine_Unterweisung_bis = '{(DateTime.Now.Date.AddYears(1)).ToString("yyyy-MM-dd")}' WHERE Name = '{cbName.SelectedValue.ToString()}'");
await SQL.WriteSQL($"UPDATE zkup.besucher SET Kleine_Unterweisung_bis = '{(DateTime.Now.Date.AddYears(1)).ToString("yyyy-MM-dd")}' WHERE `idBesucher` = '{selectedID}'");
//
// Fehler s[20] beheben, Spalte 20 vermutlich falsch
// Tritt nur mit Button kleine Einweisung aus
//
var s = query.Split(',');
s[20] = "1";
s[21] = "1";
query = string.Join(",", s);
btnKlEinweisung_durchgeführt.Background = new SolidColorBrush(Colors.GreenYellow);
@ -441,5 +635,38 @@ namespace ZKuP
{
this.DragMove();
}
private async void Window_Loaded(object sender, RoutedEventArgs e)
{
await initialize();
spinnerCanvas.Visibility = Visibility.Collapsed;
}
private void tbAnzahlPersonen_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
if (!Regex.IsMatch(e.Text, "[0-9]"))
{
e.Handled = true;
ToolTip tip = new ToolTip();
tip.Content = "Nur Zahlen erlaubt";
tip.StaysOpen = false;
(sender as TextBox).ToolTip = tip;
tip.IsOpen = true;
}
}
private void tbAnzahlFzg_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
if (!Regex.IsMatch(e.Text, "[0-9]"))
{
e.Handled = true;
ToolTip tip = new ToolTip();
tip.Content = "Nur Zahlen erlaubt";
tip.StaysOpen = false;
(sender as TextBox).ToolTip = tip;
tip.IsOpen = true;
}
}
}
}

View File

@ -80,7 +80,7 @@
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
<DatePicker x:Name="dPOverviewVon" HorizontalAlignment="Left" Margin="90,10,0,0" VerticalAlignment="Top" Width="100" SelectedDateChanged="dPOverviewVon_SelectedDateChanged">
<DatePicker x:Name="dPOverviewVon" HorizontalAlignment="Left" Margin="90,5,0,0" VerticalAlignment="Top" Width="100" SelectedDateChanged="dPOverviewVon_SelectedDateChanged" DateValidationError="dPOverviewVon_DateValidationError">
<DatePicker.Resources>
<Style TargetType="DatePickerTextBox">
<Setter Property="IsReadOnly" Value="True"/>
@ -92,9 +92,9 @@
</Style>
</DatePicker.Resources>
</DatePicker>
<TextBlock HorizontalAlignment="Left" Margin="10,14,0,0" TextWrapping="Wrap" Text="Ansicht von:" VerticalAlignment="Top" Height="20" Width="75"/>
<TextBlock HorizontalAlignment="Left" Margin="200,14,0,0" TextWrapping="Wrap" Text="bis:" VerticalAlignment="Top" Height="20" Width="26"/>
<DatePicker x:Name="dPOverviewBis" HorizontalAlignment="Left" Margin="230,10,0,0" VerticalAlignment="Top" Width="100" SelectedDateChanged="dPOverviewBis_SelectedDateChanged">
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,14,0,0" TextWrapping="Wrap" Text="Ansicht von:" VerticalAlignment="Top" Height="20" Width="75"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="200,14,0,0" TextWrapping="Wrap" Text="bis:" VerticalAlignment="Top" Height="20" Width="26"/>
<DatePicker x:Name="dPOverviewBis" HorizontalAlignment="Left" Margin="230,5,0,0" VerticalAlignment="Top" Width="100" SelectedDateChanged="dPOverviewBis_SelectedDateChanged" DateValidationError="dPOverviewBis_DateValidationError">
<DatePicker.Resources>
<Style TargetType="DatePickerTextBox">
<Setter Property="IsReadOnly" Value="True"/>
@ -107,6 +107,6 @@
</DatePicker.Resources>
</DatePicker>
<!--<Button x:Name="btnOK" Content="OK" IsEnabled="False" HorizontalAlignment="Left" Margin="345,10,0,0" VerticalAlignment="Top" Width="75" Height="24" Click="btnOK_Click"/>-->
<TextBlock x:Name="lblAnwesend" Text="Anwesende Firmen/Besucher zwischen dem '' und '':" HorizontalAlignment="Left" Margin="10,45,0,0" VerticalAlignment="Top"/>
<TextBlock x:Name="lblAnwesend" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Text="Anwesende Firmen/Besucher zwischen dem '' und '':" HorizontalAlignment="Left" Margin="10,45,0,0" VerticalAlignment="Top"/>
</Grid>
</Window>

View File

@ -42,7 +42,7 @@ namespace ZKuP
private async void FillDataGrid(DateTime von, DateTime bis)
{
if (LoggedInRole == Roles.Admin || LoggedInRole == Roles.Pförtner)
if (LoggedInRole == Roles.Admin || LoggedInRole == Roles.Pförtner || LoggedInRole == Roles.Controller)
{
todayFirm = await SQL.ReadSQL($"Select * From zkup.firmen where (Arbeitsbeginn >= '{von.ToString("yyyy-MM-dd")}' AND Arbeitsende <= '{bis.ToString("yyyy-MM-dd")}') OR '{von.ToString("yyyy-MM-dd")}' BETWEEN Arbeitsbeginn AND Arbeitsende", todayFirm);
todayBesuch = await SQL.ReadSQL($"SELECT idbesucher, concat('Besucher: ', Name) AS Name, Verantwortlicher_MA AS Verantwortlicher_MA_Firma,Tel_Nr_Besucher AS Tel_Nr_Verantwortlicher_Firma,Besuchstag AS Arbeitsbeginn,Grund_des_Besuchs AS Beauftragte_Leistung,Ansprechpartner_Intern from zkup.besucher WHERE (Besuchstag >= '{von.ToString("yyyy-MM-dd")}' AND Besuchstag <= '{bis.ToString("yyyy-MM-dd")}')", todayBesuch);
@ -106,5 +106,14 @@ namespace ZKuP
dPOverviewBis.Background = new SolidColorBrush(Colors.Red);
}
private void dPOverviewVon_DateValidationError(object sender, DatePickerDateValidationErrorEventArgs e)
{
MessageBox.Show("Kein gültiges Datumsformat in Feld 'von'", "Fehler", MessageBoxButton.OK, MessageBoxImage.Warning);
}
private void dPOverviewBis_DateValidationError(object sender, DatePickerDateValidationErrorEventArgs e)
{
MessageBox.Show("Kein gültiges Datumsformat in Feld 'bis'", "Fehler", MessageBoxButton.OK, MessageBoxImage.Warning);
}
}
}

View File

@ -6,7 +6,7 @@
xmlns:local="clr-namespace:ZKuP"
mc:Ignorable="d"
Title="Info zu Ansprechpartnern" Height="591" Width="354" ResizeMode="NoResize"
WindowStartupLocation="CenterOwner">
WindowStartupLocation="CenterOwner" Visibility="Collapsed">
<Grid x:Name="gridInfo">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
@ -22,20 +22,20 @@
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock x:Name="lblAsp" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="Ansprechpartner:" VerticalAlignment="Top"/>
<TextBox x:Name="tbAsp" Margin="10,0,10,10" TextWrapping="Wrap" VerticalAlignment="Bottom" IsReadOnly="True"/>
<TextBlock x:Name="lblTelVertreter_Besucher" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="Telefonnummer Vertreter:" VerticalAlignment="Top" Grid.Row="3"/>
<TextBox x:Name="tbTelVertreter" Margin="10,0,10,10" TextWrapping="Wrap" VerticalAlignment="Bottom" Grid.Row="3" IsReadOnly="True"/>
<TextBlock x:Name="lblVertreter_Besucher" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="Vertreter:" VerticalAlignment="Top" Grid.Row="2"/>
<TextBox x:Name="tbVertreter" Margin="10,0,10,10" TextWrapping="Wrap" VerticalAlignment="Bottom" Grid.Row="2" IsReadOnly="True"/>
<TextBlock x:Name="lblTelAsp" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="Telefonnummer Ansprechpartner:" VerticalAlignment="Top" Grid.Row="1"/>
<TextBox x:Name="tbTelAsp" Margin="10,0,10,10" TextWrapping="Wrap" VerticalAlignment="Bottom" Grid.Row="1" IsReadOnly="True"/>
<TextBlock x:Name="lblVorgesetzter" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="Vorgesetzter:" VerticalAlignment="Top" Grid.Row="4"/>
<TextBox x:Name="tbVorgesetzter" Margin="10,0,10,10" TextWrapping="Wrap" VerticalAlignment="Bottom" Grid.Row="4" IsReadOnly="True"/>
<TextBlock x:Name="lblTelVorgesetzter" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="Telefonnummer Vorgesetzter:" VerticalAlignment="Top" Grid.Row="5"/>
<TextBox x:Name="tbTelVorgesetzter" Margin="10,0,10,10" TextWrapping="Wrap" VerticalAlignment="Bottom" Grid.Row="5" IsReadOnly="True"/>
<TextBlock x:Name="lblBemerkung" Margin="10,10,10,0" TextWrapping="Wrap" Text="Bemerkung" VerticalAlignment="Top" Grid.Row="6" Height="20"/>
<TextBox x:Name="tbBemerkung" Margin="10,35,10,10" TextWrapping="Wrap" VerticalAlignment="Stretch" Grid.Row="6" IsReadOnly="True" VerticalScrollBarVisibility="Auto"/>
<TextBlock x:Name="lblAsp" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="Ansprechpartner:" VerticalAlignment="Top"/>
<TextBox x:Name="tbAsp" Margin="10,0,10,0" TextWrapping="Wrap" VerticalAlignment="Bottom" IsReadOnly="True"/>
<TextBlock x:Name="lblTelVertreter_Besucher" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="Telefonnummer Vertreter:" VerticalAlignment="Top" Grid.Row="3" PreviewMouseLeftButtonDown="TelNrs_PreviewMouseLeftButtonDown"/>
<TextBox x:Name="tbTelVertreter" Margin="10,0,10,0" ToolTip="Klicken zum Anrufen" TextWrapping="Wrap" Cursor="Hand" VerticalAlignment="Bottom" Grid.Row="3" IsReadOnly="True" PreviewMouseLeftButtonDown="TelNrs_PreviewMouseLeftButtonDown" Foreground="{DynamicResource {x:Static SystemColors.HotTrackBrushKey}}" TextDecorations="Underline"/>
<TextBlock x:Name="lblVertreter_Besucher" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="Vertreter:" VerticalAlignment="Top" Grid.Row="2"/>
<TextBox x:Name="tbVertreter" Margin="10,0,10,0" TextWrapping="Wrap" VerticalAlignment="Bottom" Grid.Row="2" IsReadOnly="True"/>
<TextBlock x:Name="lblTelAsp" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="Telefonnummer Ansprechpartner:" VerticalAlignment="Top" Grid.Row="1"/>
<TextBox x:Name="tbTelAsp" Margin="10,0,10,0" TextWrapping="Wrap" ToolTip="Klicken zum Anrufen" Cursor="Hand" VerticalAlignment="Bottom" Grid.Row="1" IsReadOnly="True" PreviewMouseLeftButtonDown="TelNrs_PreviewMouseLeftButtonDown" Foreground="{DynamicResource {x:Static SystemColors.HotTrackBrushKey}}" TextDecorations="Underline"/>
<TextBlock x:Name="lblVorgesetzter" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="Vorgesetzter:" VerticalAlignment="Top" Grid.Row="4"/>
<TextBox x:Name="tbVorgesetzter" Margin="10,0,10,0" TextWrapping="Wrap" VerticalAlignment="Bottom" Grid.Row="4" IsReadOnly="True"/>
<TextBlock x:Name="lblTelVorgesetzter" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="Telefonnummer Vorgesetzter:" VerticalAlignment="Top" Grid.Row="5"/>
<TextBox x:Name="tbTelVorgesetzter" Margin="10,0,10,0" TextWrapping="Wrap" ToolTip="Klicken zum Anrufen" Cursor="Hand" VerticalAlignment="Bottom" Grid.Row="5" IsReadOnly="True" PreviewMouseLeftButtonDown="TelNrs_PreviewMouseLeftButtonDown" Foreground="{DynamicResource {x:Static SystemColors.HotTrackBrushKey}}" TextDecorations="Underline"/>
<TextBlock x:Name="lblBemerkung" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,10,10,0" TextWrapping="Wrap" Text="Bemerkung" VerticalAlignment="Top" Grid.Row="6" Height="20"/>
<TextBox x:Name="tbBemerkung" Margin="10,35,10,0" TextWrapping="Wrap" VerticalAlignment="Stretch" Grid.Row="6" IsReadOnly="True" VerticalScrollBarVisibility="Auto"/>
<Button x:Name="btnSignature" Content="Unterschrift" Margin="10" Click="btnSignature_Click" Grid.Row="7"/>
<Button x:Name="btnClose" Content="Schließen" Margin="10" Click="BtnClose_Click" Grid.Row="8"/>

View File

@ -22,7 +22,7 @@ namespace ZKuP
public int id { get; set; }
//info = Welcher InfoButton wurde gedrückt? 1 = Ankunft heute; 2 = bereits bestätigt
public AspInfo(string name, string kat, int info = 1, string idzutritte = "1")
public AspInfo(int idFirma_Besucher, string kat, int info = 1, string idzutritte = "1", string Asp = "")
{
InitializeComponent();
@ -32,8 +32,22 @@ namespace ZKuP
else if (info == 2) { lblBemerkung.Visibility = Visibility.Visible; tbBemerkung.Visibility = Visibility.Visible; }
else { lblBemerkung.Visibility = Visibility.Visible; tbBemerkung.Visibility = Visibility.Visible; }
if (kat == "1")
if (kat != "")
{
var firmOrVisit = kat == "1" ? "Firmen" : "besucher";
switch (kat)
{
case "1":
firmOrVisit = "Firmen";
break;
case "2":
firmOrVisit = "besucher";
break;
case "3":
firmOrVisit = "family";
break;
}
tbVorgesetzter.Visibility = Visibility.Visible;
tbTelVorgesetzter.Visibility = Visibility.Visible;
lblVorgesetzter.Visibility = Visibility.Visible;
@ -42,7 +56,14 @@ namespace ZKuP
lblVertreter_Besucher.Text = "Vertreter";
lblTelVertreter_Besucher.Text = "Telefonnummer Vertreter";
System.Data.DataTable asp = SQL.ReadSQL($"SELECT * FROM zkup.ansprechpartner WHERE Name='{name}'").Result;
string aspName = "";
if (firmOrVisit != "family")
aspName = SQL.ReadSingleValue($"SELECT Ansprechpartner_Intern FROM zkup.{firmOrVisit.ToLower()} WHERE id{firmOrVisit}='{idFirma_Besucher}'");
else
aspName = Asp;
System.Data.DataTable asp = SQL.ReadSQL($"SELECT * FROM zkup.ansprechpartner WHERE Name='{aspName}'").Result;
if (asp.Rows.Count > 0)
{
@ -55,30 +76,15 @@ namespace ZKuP
tbBemerkung.Text = SQL.ReadSingleValue($"SELECT Bemerkung FROM zkup.zutritte WHERE idzutritte='{idzutritte}'");
this.Visibility = Visibility.Visible;
}
else MessageBox.Show(this, "Keine oder fehlerhafte Daten angegeben!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
}
else if (kat == "2")
{
tbVorgesetzter.Visibility = Visibility.Collapsed;
tbTelVorgesetzter.Visibility = Visibility.Collapsed;
lblVorgesetzter.Visibility = Visibility.Collapsed;
lblTelVorgesetzter.Visibility = Visibility.Collapsed;
lblVertreter_Besucher.Text = "Besucher";
lblTelVertreter_Besucher.Text = "Telefonnummer Besucher";
System.Data.DataTable asp = SQL.ReadSQL($"SELECT * FROM zkup.besucher WHERE Name='{name}'").Result;
if (asp.Rows.Count > 0)
else
{
tbAsp.Text = asp.Rows[0].ItemArray[7].ToString();
tbTelAsp.Text = asp.Rows[0].ItemArray[8].ToString();
tbVertreter.Text = asp.Rows[0].ItemArray[1].ToString();
tbTelVertreter.Text = asp.Rows[0].ItemArray[3].ToString();
tbBemerkung.Text = SQL.ReadSingleValue($"SELECT Bemerkung FROM zkup.zutritte WHERE idzutritte='{idzutritte}'");
MessageBox.Show(this, "Keine oder fehlerhafte Daten angegeben!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
this.Loaded += (s, e) => this.Close();
return;
}
else MessageBox.Show(this, "Keine oder fehlerhafte Daten angegeben!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
}
else if (kat == "")
{
@ -110,8 +116,16 @@ namespace ZKuP
gridInfo.RowDefinitions[6].Height = new GridLength(4, GridUnitType.Star);
tbBemerkung.Text = asp.Rows[0].ItemArray[12].ToString();
this.Visibility = Visibility.Visible;
}
}
else
{
MessageBox.Show(this, "Keine oder fehlerhafte Daten angegeben!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
this.Loaded += (s, e) => this.Close();
return;
}
}
private async void btnSignature_Click(object sender, RoutedEventArgs e)
@ -135,5 +149,10 @@ namespace ZKuP
{
this.Close();
}
private void TelNrs_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
System.Diagnostics.Process.Start($"tel:{(sender as TextBox).Text.Replace(" ", "")}");
}
}
}

BIN
ZKuP/Assets/BE1.JPG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

BIN
ZKuP/Assets/BE10.JPG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

BIN
ZKuP/Assets/BE11.JPG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

BIN
ZKuP/Assets/BE12.JPG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

BIN
ZKuP/Assets/BE2.JPG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

BIN
ZKuP/Assets/BE3.JPG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

BIN
ZKuP/Assets/BE4.JPG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

BIN
ZKuP/Assets/BE5.JPG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

BIN
ZKuP/Assets/BE6.JPG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

BIN
ZKuP/Assets/BE7.JPG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

BIN
ZKuP/Assets/BE8.JPG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

BIN
ZKuP/Assets/BE9.JPG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 KiB

29
ZKuP/BEImage.xaml Normal file
View File

@ -0,0 +1,29 @@
<Window x:Class="ZKuP.BEImage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ZKuP"
mc:Ignorable="d"
Title="BE-Flächenansicht" Height="450" Width="800">
<Grid>
<Image x:Name="imgBE" Margin="10,46,10,10"/>
<ComboBox x:Name="cbBE" HorizontalAlignment="Left" Margin="144,10,0,0" VerticalAlignment="Top" Width="266" SelectionChanged="cbBE_SelectionChanged" SelectedIndex="0">
<ComboBoxItem Content="BE-Fläche wählen..."/>
<ComboBoxItem Content="BE-Fläche 1 (ICE-West/Containerburg)"/>
<ComboBoxItem Content="BE-Fläche 2 (ICE-West/MaWi/Gleisabstellung)"/>
<ComboBoxItem Content="BE-Fläche 3 (MaWi-Rampe)"/>
<ComboBoxItem Content="BE-Fläche 4 (Aufgang Friedenheimer-Brücke)"/>
<ComboBoxItem Content="BE-Fläche 5 (Stellwerk)"/>
<ComboBoxItem Content="BE-Fläche 6 (Lokhalle Gleisbereich Süd-Ost)"/>
<ComboBoxItem Content="BE-Fläche 7 (Lokhalle Gleisbereich Nord-Ost)"/>
<ComboBoxItem Content="BE-Fläche 8 (Schichtparkplatz)"/>
<ComboBoxItem Content="BE-Fläche 9 (Kantine)"/>
<ComboBoxItem Content="BE-Fläche 10 (Gebäude G)"/>
<ComboBoxItem Content="BE-Fläche 11 (Gaslager)"/>
<ComboBoxItem Content="BE-Fläche 12 (Feuerwehrzufahrt Süd)"/>
</ComboBox>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="35,10,0,0" TextWrapping="Wrap" Text="BE-Fläche:" VerticalAlignment="Top" Height="22" Width="104" Padding="0,2,0,0"/>
</Grid>
</Window>

41
ZKuP/BEImage.xaml.cs Normal file
View File

@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace ZKuP
{
/// <summary>
/// Interaktionslogik für BEImage.xaml
/// </summary>
public partial class BEImage : Window
{
public BEImage(int imageIndex = 13)
{
InitializeComponent();
if (imageIndex != 13)
cbBE.SelectedIndex = imageIndex;
}
private void cbBE_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if ((sender as ComboBox).SelectedIndex != 0 && (sender as ComboBox).SelectedIndex != -1)
imgBE.Source = new BitmapImage(new Uri($"Assets\\BE{cbBE.SelectedIndex}.jpg", UriKind.Relative));
}
public void changePicture(int selectedPicture)
{
cbBE.SelectedIndex = selectedPicture;
}
}
}

373
ZKuP/Belegung.xaml Normal file
View File

@ -0,0 +1,373 @@
<Window x:Class="ZKuP.Belegung"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ZKuP"
mc:Ignorable="d"
Title="BE-Flächenbelegung" Width="1500" Height="670" Loaded="Window_Loaded" Closing="Window_Closing" MouseMove="Window_MouseMove">
<Window.Resources>
<Style TargetType="{x:Type DatePickerTextBox}">
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}" />
<Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" />
<Setter Property="ScrollViewer.PanningMode" Value="VerticalFirst"/>
<Setter Property="Stylus.IsFlicksEnabled" Value="False"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DatePickerTextBox">
<Grid>
<Grid.Resources>
<SolidColorBrush x:Key="WatermarkBrush" Color="#FFAAAAAA"/>
</Grid.Resources>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup Name="CommonStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0" />
<VisualTransition To="MouseOver" GeneratedDuration="0:0:0.1" />
</VisualStateGroup.Transitions>
<VisualState Name="Normal" />
<VisualState Name="MouseOver">
<Storyboard>
<ColorAnimation Storyboard.TargetName="ContentElement" Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" To="#FF99C1E2" Duration="0"/>
<ColorAnimation Storyboard.TargetName="watermark_decorator" Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" To="#FF99C1E2" Duration="0"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup Name="WatermarkStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0" />
</VisualStateGroup.Transitions>
<VisualState Name="Unwatermarked" />
<VisualState Name="Watermarked">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="ContentElement" Storyboard.TargetProperty="Opacity" To="0" Duration="0" />
<DoubleAnimation Storyboard.TargetName="PART_Watermark" Storyboard.TargetProperty="Opacity" To="1" Duration="0" />
</Storyboard>
</VisualState>
</VisualStateGroup>
<VisualStateGroup Name="FocusStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0" />
</VisualStateGroup.Transitions>
<VisualState Name="Unfocused" />
<VisualState Name="Focused">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="FocusVisual" Storyboard.TargetProperty="Opacity" To="1" Duration="0" />
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border x:Name="Border"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Padding="{TemplateBinding Padding}"
CornerRadius="1"
Opacity="1">
<Grid x:Name="WatermarkContent"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
<Border x:Name="ContentElement" BorderThickness="1">
<Border.BorderBrush>
<SolidColorBrush Color="#FFFFFFFF"/>
</Border.BorderBrush>
</Border>
<Border x:Name="watermark_decorator" BorderThickness="1">
<Border.BorderBrush>
<SolidColorBrush Color="#FFFFFFFF"/>
</Border.BorderBrush>
<ContentControl x:Name="PART_Watermark"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Opacity="0"
Focusable="False"
IsHitTestVisible="False"
Padding="2">
<ContentControl.Template>
<ControlTemplate>
<TextBlock Text="auswählen" TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="Gray"/>
</ControlTemplate>
</ContentControl.Template>
</ContentControl>
</Border>
<ScrollViewer x:Name="PART_ContentHost"
Margin="0"
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" />
<Border x:Name="FocusVisual" BorderBrush="#FF45D6FA" CornerRadius="1" Opacity="0" IsHitTestVisible="False"/>
</Grid>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid x:Name="BEGrid">
<Popup Name="floatingTip" AllowsTransparency="True" Placement="Relative" VerticalOffset="5">
<TextBlock Text="" Background="LightSalmon" Foreground="Black" FontSize="14" Height="25" Padding="0,2"/>
</Popup>
<DataGrid x:Name="dgBelegung" Margin="10" ItemsSource="{Binding Path=., Mode=OneWay}" HorizontalGridLinesBrush="Gray" VerticalGridLinesBrush="Gray" AutoGenerateColumns="False" CanUserDeleteRows="False" CanUserAddRows="False" RowHeaderWidth="0" CellEditEnding="dgBelegung_CellEditEnding" RowHeight="NaN">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Transparent" />
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding flaeche}" ClipboardContentBinding="{x:Null}" Header="BE-Fläche" Width="35" IsReadOnly="True">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="ToolTip" Value="Anklicken um die BE-Fläche zu zeigen"/>
</Style>
</DataGridTextColumn.ElementStyle>
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="BorderBrush" Value="Gray"/>
<Setter Property="BorderThickness" Value="0 0 0 1"/>
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="OpenImage_Click"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding bereich}" ClipboardContentBinding="{x:Null}" Header="Bereich" Width="120" IsReadOnly="True">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="ToolTip" Value="Anklicken um die BE-Fläche zu zeigen"/>
</Style>
</DataGridTextColumn.ElementStyle>
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="BorderBrush" Value="Gray"/>
<Setter Property="BorderThickness" Value="0 0 0 1"/>
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="OpenImage_Click"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<!--<DataGridTextColumn Binding="{Binding b1von, StringFormat=\{0:dd.MM.yyyy\}}" Width="70" ClipboardContentBinding="{x:Null}" Header="B1 von">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>-->
<DataGridTemplateColumn Width="120" ClipboardContentBinding="{x:Null}" Header="B1 von" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Tag="pan" Orientation="Horizontal" MouseLeftButtonDown="StackPanel_MouseLeftButtonDown">
<DatePicker SelectedDate="{Binding b1von}" Height="35" Width="100" IsEnabled="False" DateValidationError="DatePicker_DateValidationError"/>
<Button Width="20" Height="35" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="BorderBrush" Value="Gray"/>
<Setter Property="BorderThickness" Value="0 0 0 1"/>
</Style>
</DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="120" ClipboardContentBinding="{x:Null}" Header="B1 bis" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Tag="pan" Orientation="Horizontal" MouseLeftButtonDown="StackPanel_MouseLeftButtonDown">
<DatePicker SelectedDate="{Binding b1bis}" Height="35" Width="100" IsEnabled="False" DateValidationError="DatePicker_DateValidationError"/>
<Button Width="20" Height="35" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="BorderBrush" Value="Gray"/>
<Setter Property="BorderThickness" Value="0 0 0 1"/>
</Style>
</DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding b1Projekt}" ClipboardContentBinding="{x:Null}" Header="B1 Projekt" Width="180">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Height" Value="55"/>
<Setter Property="TextWrapping" Value="Wrap" />
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Padding" Value="10,10,10,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="BorderBrush" Value="Gray"/>
<Setter Property="BorderThickness" Value="0 0 0 1"/>
</Style>
</DataGridTextColumn.CellStyle>
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="TextWrapping" Value="Wrap" />
<Setter Property="AcceptsReturn" Value="true" />
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding b1Projektleiter}" ClipboardContentBinding="{x:Null}" Header="B1 Projektleiter" Width="150">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Padding" Value="10,0,10,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="BorderBrush" Value="Gray"/>
<Setter Property="BorderThickness" Value="0 0 0 1"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTemplateColumn Width="120" ClipboardContentBinding="{x:Null}" Header="B2 von" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Tag="pan" Orientation="Horizontal" MouseLeftButtonDown="StackPanel_MouseLeftButtonDown">
<DatePicker SelectedDate="{Binding b2von}" Height="35" Width="100" IsEnabled="False" DateValidationError="DatePicker_DateValidationError"/>
<Button Width="20" Height="35" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="BorderBrush" Value="Gray"/>
<Setter Property="BorderThickness" Value="0 0 0 1"/>
</Style>
</DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="120" ClipboardContentBinding="{x:Null}" Header="B2 bis" IsReadOnly="True">
<DataGridTemplateColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="BorderBrush" Value="Gray"/>
<Setter Property="BorderThickness" Value="0 0 0 1"/>
</Style>
</DataGridTemplateColumn.CellStyle>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Tag="pan" Orientation="Horizontal" MouseLeftButtonDown="StackPanel_MouseLeftButtonDown">
<DatePicker SelectedDate="{Binding b2bis}" Height="35" Width="100" IsEnabled="False" DateValidationError="DatePicker_DateValidationError"/>
<Button Width="20" Height="35" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding b2Projekt}" ClipboardContentBinding="{x:Null}" Header="B2 Projekt" Width="180">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextWrapping" Value="Wrap"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Padding" Value="10,0,10,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="TextWrapping" Value="Wrap" />
<Setter Property="AcceptsReturn" Value="true" />
</Style>
</DataGridTextColumn.EditingElementStyle>
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="BorderBrush" Value="Gray"/>
<Setter Property="BorderThickness" Value="0 0 0 1"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding b2Projektleiter}" ClipboardContentBinding="{x:Null}" Header="B2 Projektleiter" Width="150">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Padding" Value="10,0,10,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="BorderBrush" Value="Gray"/>
<Setter Property="BorderThickness" Value="0 0 0 1"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTemplateColumn Width="120" ClipboardContentBinding="{x:Null}" Header="B3 von" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Tag="pan" Orientation="Horizontal" MouseLeftButtonDown="StackPanel_MouseLeftButtonDown">
<DatePicker SelectedDate="{Binding b3von}" Height="35" Width="100" IsEnabled="False" DateValidationError="DatePicker_DateValidationError"/>
<Button Width="20" Height="35" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="BorderBrush" Value="Gray"/>
<Setter Property="BorderThickness" Value="0 0 0 1"/>
</Style>
</DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="120" ClipboardContentBinding="{x:Null}" Header="B3 bis" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Tag="pan" Orientation="Horizontal" MouseLeftButtonDown="StackPanel_MouseLeftButtonDown">
<DatePicker SelectedDate="{Binding b3bis}" Width="100" Height="35" IsEnabled="False" DateValidationError="DatePicker_DateValidationError"/>
<Button Width="20" Height="35" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="BorderBrush" Value="Gray"/>
<Setter Property="BorderThickness" Value="0 0 0 1"/>
</Style>
</DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding b3Projekt}" ClipboardContentBinding="{x:Null}" Header="B3 Projekt" Width="180">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextWrapping" Value="Wrap" />
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Padding" Value="10,0,10,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="TextWrapping" Value="Wrap" />
<Setter Property="AcceptsReturn" Value="true" />
</Style>
</DataGridTextColumn.EditingElementStyle>
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="BorderBrush" Value="Gray"/>
<Setter Property="BorderThickness" Value="0 0 0 1"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding b3Projektleiter}" ClipboardContentBinding="{x:Null}" Header="B3 Projektleiter" Width="150">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Padding" Value="10,0,10,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="BorderBrush" Value="Gray"/>
<Setter Property="BorderThickness" Value="0 0 0 1"/>
</Style>
</DataGridTextColumn.CellStyle> </DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>

446
ZKuP/Belegung.xaml.cs Normal file
View File

@ -0,0 +1,446 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace ZKuP
{
/// <summary>
/// Interaktionslogik für Belegung.xaml
/// </summary>
public partial class Belegung : Window
{
DataTable belegung = new DataTable("Belegung");
DataTable ersteller = new DataTable("Ersteller");
public Belegung()
{
this.DataContext = this;
InitializeComponent();
belegung = SQL.ReadSQL($"SELECT * FROM zkup.`be-belegung`", belegung).Result;
dgBelegung.DataContext = belegung;
}
private async void DisableFields()
{
Dictionary<string, string> dict = new Dictionary<string, string>();
//string select = "";
//for (var j = 1; j <= 10; j++)
//{
// for (var i = 1; i <= 3; i++)
// {
// select += $"b{i}Ersteller, ";
// }
//}
//select = select.TrimEnd(' ', ',');
ersteller = await SQL.ReadSQL($"SELECT b1Ersteller, b2Ersteller, b3Ersteller FROM zkup.`be-belegung`", ersteller);
for (var j = 1; j <= 12; j++)
{
for (var i = 1; i <= 3; i++)
{
dict.Add($"b{i}Ersteller{j}", ersteller.Rows[j - 1][$"b{i}Ersteller"].ToString());
}
}
var pickers = Helper.FindVisualChildren<DatePicker>(dgBelegung).ToList().AsReadOnly();
var buttons = Helper.FindVisualChildren<Button>(dgBelegung).Where(p => p.Content != null && p.Content.ToString() == "✕").ToList().AsReadOnly();
var cells = Helper.FindVisualChildren<DataGridCell>(dgBelegung).Where(p => p.IsReadOnly == false && p.Column.GetType().Name == "DataGridTextColumn").ToList().AsReadOnly();
var templatecells = Helper.FindVisualChildren<DataGridCell>(dgBelegung).Where(p => p.IsReadOnly == false && p.Column.GetType().Name == "DataGridTemplateColumn").ToList().AsReadOnly();
var stackPanels = Helper.FindVisualChildren<StackPanel>(dgBelegung).Where(p => p.Tag != null && p.Tag.ToString() == "pan").ToList().AsReadOnly();
foreach (var cell in cells)
cell.IsEnabled = false;
for (var i = 0; i < 3; i++)
{
for (var j = 0; j < 12; j++)
{
if (dict[$"b{i + 1}Ersteller{j + 1}"] == Environment.UserName || string.IsNullOrWhiteSpace(dict[$"b{i + 1}Ersteller{j + 1}"]))
{
pickers[((j * 3) + i) * 2].IsEnabled = true;
pickers[(((j * 3) + i) * 2) + 1].IsEnabled = true;
buttons[((j * 3) + i) * 2].IsEnabled = true;
buttons[(((j * 3) + i) * 2) + 1].IsEnabled = true;
cells[((j * 3) + i) * 2].IsEnabled = true;
cells[(((j * 3) + i) * 2) + 1].IsEnabled = true;
//templatecells[((j * 3) + i) * 2].IsHitTestVisible = false;
//templatecells[(((j * 3) + i) * 2) + 1].IsHitTestVisible = false;
//stackPanels[((j * 3) + i) * 2].Children.Clear();
//stackPanels[(((j * 3) + i) * 2) + 1].Children.Clear();
//BEGrid.Children.Remove(stackPanels[((j * 3) + i) * 2]);
//BEGrid.Children.Remove(stackPanels[(((j * 3) + i) * 2) + 1]);
//stackPanels[((j * 3) + i) * 2].Visibility = Visibility.Collapsed;
//stackPanels[(((j * 3) + i) * 2) + 1].Visibility = Visibility.Collapsed;
}
else
{
var creator = Helper.InsertSpaceBeforeUpperCase(dict[$"b{i + 1}Ersteller{j + 1}"]);
pickers[((j * 3) + i) * 2].ToolTip = $"Gesperrt durch {creator}";
pickers[(((j * 3) + i) * 2) + 1].ToolTip = $"Gesperrt durch {creator}";
buttons[((j * 3) + i) * 2].ToolTip = $"Gesperrt durch {creator}";
buttons[(((j * 3) + i) * 2) + 1].ToolTip = $"Gesperrt durch {creator}";
cells[((j * 3) + i) * 2].ToolTip = $"Gesperrt durch {creator}";
cells[(((j * 3) + i) * 2) + 1].ToolTip = $"Gesperrt durch {creator}";
}
}
}
}
private async void dgBelegung_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
if (e.EditingElement.GetType() == typeof(TextBox) || e.EditingElement.GetType() == typeof(TextBlock))
{
try
{
var header = e.Column.Header;
var newValue = "";
if (e.EditingElement.GetType() == typeof(TextBox))
newValue = (e.EditingElement as TextBox).Text;
else
newValue = (e.EditingElement as TextBlock).Text;
var id = (e.Row.Item as DataRowView).Row.ItemArray[0];
var col = header.ToString().Split(' ')[0].ToLower();
switch (header)
{
case "B1 Projekt":
if (!string.IsNullOrWhiteSpace(newValue))
await SQL.WriteSQL($"UPDATE zkup.`be-belegung` SET b1Projekt = '{newValue}', `{col}Ersteller` = '{Environment.UserName}' WHERE `idbe-belegung` = '{id}'");
else
await SQL.WriteSQL($"UPDATE zkup.`be-belegung` SET b1Projekt = '{newValue}', `{col}Ersteller` = '' WHERE `idbe-belegung` = '{id}'");
break;
case "B1 Projektleiter":
if (!string.IsNullOrWhiteSpace(newValue))
await SQL.WriteSQL($"UPDATE zkup.`be-belegung` SET b1Projektleiter = '{newValue}', `{col}Ersteller` = '{Environment.UserName}' WHERE `idbe-belegung` = '{id}'");
else
await SQL.WriteSQL($"UPDATE zkup.`be-belegung` SET b1Projektleiter = '{newValue}', `{col}Ersteller` = '' WHERE `idbe-belegung` = '{id}'");
break;
case "B2 Projekt":
if (!string.IsNullOrWhiteSpace(newValue))
await SQL.WriteSQL($"UPDATE zkup.`be-belegung` SET b2Projekt = '{newValue}', `{col}Ersteller` = '{Environment.UserName}' WHERE `idbe-belegung` = '{id}'");
else
await SQL.WriteSQL($"UPDATE zkup.`be-belegung` SET b2Projekt = '{newValue}', `{col}Ersteller` = '' WHERE `idbe-belegung` = '{id}'");
break;
case "B2 Projektleiter":
if (!string.IsNullOrWhiteSpace(newValue))
await SQL.WriteSQL($"UPDATE zkup.`be-belegung` SET b2Projektleiter = '{newValue}', `{col}Ersteller` = '{Environment.UserName}' WHERE `idbe-belegung` = '{id}'");
else
await SQL.WriteSQL($"UPDATE zkup.`be-belegung` SET b2Projektleiter = '{newValue}', `{col}Ersteller` = '' WHERE `idbe-belegung` = '{id}'");
break;
case "B3 Projekt":
if (!string.IsNullOrWhiteSpace(newValue))
await SQL.WriteSQL($"UPDATE zkup.`be-belegung` SET b3Projekt = '{newValue}', `{col}Ersteller` = '{Environment.UserName}' WHERE `idbe-belegung` = '{id}'");
else
await SQL.WriteSQL($"UPDATE zkup.`be-belegung` SET b3Projekt = '{newValue}', `{col}Ersteller` = '' WHERE `idbe-belegung` = '{id}'");
break;
case "B3 Projektleiter":
if (!string.IsNullOrWhiteSpace(newValue))
await SQL.WriteSQL($"UPDATE zkup.`be-belegung` SET b3Projektleiter = '{newValue}', `{col}Ersteller` = '{Environment.UserName}' WHERE `idbe-belegung` = '{id}'");
else
await SQL.WriteSQL($"UPDATE zkup.`be-belegung` SET b3Projektleiter = '{newValue}', `{col}Ersteller` = '' WHERE `idbe-belegung` = '{id}'");
break;
}
//}
//}
dgBelegung.RowValidationErrorTemplate = new ControlTemplate();
}
catch (Exception ex)
{
Log.WriteLog(ex.ToString());
MessageBox.Show($"Es ist ein Fehler aufgetreten\n\n{ex.Message}", "Schwerer Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
}
private async void DatePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
{
var picker = (sender as DatePicker);
var id = (int)((System.Data.DataRowView)picker.DataContext).Row.ItemArray[0];
var Children = Helper.FindVisualChildren<DatePicker>(this).ToList();
if (picker.GetBindingExpression(DatePicker.SelectedDateProperty).ResolvedSourcePropertyName.EndsWith("bis"))
{
if (Children[(Children.IndexOf(picker) - 1)].SelectedDate > picker.SelectedDate)
{
e.Handled = true;
MessageBox.Show("Datum 'bis' muss größer als Datum 'von' sein!", "Ungültige Eingabe", MessageBoxButton.OK, MessageBoxImage.Warning);
picker.SelectedDate = null;
return;
}
}
else if (picker.GetBindingExpression(DatePicker.SelectedDateProperty).ResolvedSourcePropertyName.EndsWith("von"))
{
if (Children[(Children.IndexOf(picker) + 1)].SelectedDate < picker.SelectedDate)
{
e.Handled = true;
MessageBox.Show("Datum 'von' muss kleiner als Datum 'bis' sein!", "Ungültige Eingabe", MessageBoxButton.OK, MessageBoxImage.Warning);
picker.SelectedDate = null;
return;
}
}
var col = picker.GetBindingExpression(DatePicker.SelectedDateProperty).ResolvedSourcePropertyName.Replace("von", "").Replace("bis", "");
if (picker.SelectedDate != null)
await SQL.WriteSQL($"UPDATE `be-belegung` SET `{picker.GetBindingExpression(DatePicker.SelectedDateProperty).ResolvedSourcePropertyName}` = '{(sender as DatePicker).SelectedDate.Value.ToString("yyyy-MM-dd")}', `{col}Ersteller` = '{Environment.UserName}' WHERE `idbe-belegung` = {id}");
else
await SQL.WriteSQL($"UPDATE `be-belegung` SET `{picker.GetBindingExpression(DatePicker.SelectedDateProperty).ResolvedSourcePropertyName}` = null, `{col}Ersteller` = '' WHERE `idbe-belegung` = {id}");
LockUsedDates(false, id);
}
private void ButtonDelDate_Click(object sender, RoutedEventArgs e)
{
if ((sender as Button).IsEnabled == true)
(((sender as Button).Parent as StackPanel).Children[0] as DatePicker).SelectedDate = null;
else
e.Handled = true;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
DisableFields();
foreach (var child in Helper.FindVisualChildren<DatePicker>(this))
{
child.SelectedDateChanged += DatePicker_SelectedDateChanged;
child.DateValidationError += DatePicker_DateValidationError;
}
LockUsedDates(true);
ClearHistoricDates();
}
private void ClearHistoricDates()
{
var datePickerChildren = Helper.FindVisualChildren<DatePicker>(this).ToList();
var textBoxChildren = Helper.FindVisualChildren<DataGridCell>(dgBelegung).Where(p => p.IsReadOnly == false).ToList();
bool hasChanged = false;
foreach (var child in datePickerChildren)
{
if (child.GetBindingExpression(DatePicker.SelectedDateProperty).ResolvedSourcePropertyName.EndsWith("bis"))
{
if (child.SelectedDate.HasValue && child.SelectedDate.Value < DateTime.Now.Date)
{
child.SelectedDate = null;
var childIndex = (datePickerChildren.IndexOf(child));
datePickerChildren[(childIndex - 1)].SelectedDate = null;
(textBoxChildren[childIndex].Content as TextBlock).Text = null;
dgBelegung_CellEditEnding(textBoxChildren[childIndex], new DataGridCellEditEndingEventArgs(textBoxChildren[childIndex].Column, DataGridRow.GetRowContainingElement(textBoxChildren[childIndex]), textBoxChildren[childIndex].Content as TextBlock, DataGridEditAction.Commit));
(textBoxChildren[childIndex - 1].Content as TextBlock).Text = null;
dgBelegung_CellEditEnding(textBoxChildren[childIndex - 1], new DataGridCellEditEndingEventArgs(textBoxChildren[childIndex - 1].Column, DataGridRow.GetRowContainingElement(textBoxChildren[childIndex - 1]), textBoxChildren[childIndex - 1].Content as TextBlock, DataGridEditAction.Commit));
hasChanged = true;
}
}
}
if(hasChanged)
{
belegung = SQL.ReadSQL($"SELECT * FROM zkup.`be-belegung`", belegung).Result;
dgBelegung.DataContext = belegung;
}
}
private void LockUsedDates(bool onLoad, int id = 0)
{
var Children = Helper.FindVisualChildren<DatePicker>(this).ToList();
if (onLoad)
{
foreach (var child in Children)
{
if (!child.SelectedDate.HasValue)
{
var usedDates = (dgBelegung.Items[(int)((System.Data.DataRowView)child.DataContext).Row.ItemArray[0] - 1] as DataRowView).Row.ItemArray.OfType<DateTime>().Where(p => p != null).OrderBy(p => p).ToList();
//System.Diagnostics.Debug.WriteLine(usedDates.Count() % 2);
if (usedDates.Count() % 2 == 0)
{
DateTime firstDate = DateTime.Now;
for (var i = 0; i < usedDates.Count(); i++)
{
if (i % 2 == 0)
firstDate = usedDates[i];
if (i % 2 != 0)
{
DateTime secondDate = usedDates[i];
CalendarDateRange range = new CalendarDateRange(firstDate, secondDate);
child.BlackoutDates.Add(range);
}
}
}
}
}
}
else
{
var LineChilds = Children.Where(p => ((int)(p.DataContext as DataRowView).Row.ItemArray[0] == id)).ToList();
var usedDates = LineChilds.OfType<DatePicker>().Where(p => p.SelectedDate != null).OrderBy(p => p.SelectedDate).Select(p => p.SelectedDate.Value).ToList();
if (usedDates.Count() % 2 == 0)
{
foreach (var child in Helper.FindVisualChildren<DatePicker>(this))
child.SelectedDateChanged -= DatePicker_SelectedDateChanged;
LineChilds.ForEach(p => p.BlackoutDates.Clear());
foreach (var child in Helper.FindVisualChildren<DatePicker>(this))
child.SelectedDateChanged += DatePicker_SelectedDateChanged;
foreach (var child in LineChilds)
{
//var id = (int)((System.Data.DataRowView)child.DataContext).Row.ItemArray[0] - 1;
DateTime firstDate = DateTime.Now;
for (var i = 0; i < usedDates.Count(); i++)
{
if (i % 2 == 0)
firstDate = usedDates[i];
if (i % 2 != 0)
{
DateTime secondDate = usedDates[i];
CalendarDateRange range = new CalendarDateRange(firstDate, secondDate);
if (child.BlackoutDates.Contains(firstDate))
System.Diagnostics.Debug.WriteLine("Oh nooo");
var date = child.SelectedDate;
if (date.HasValue)
{
if (!(child.SelectedDate.Value >= range.Start && child.SelectedDate.Value <= range.End))
child.BlackoutDates.Add(range);
}
else
child.BlackoutDates.Add(range);
}
}
}
}
}
}
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
var Children = Helper.FindVisualChildren<DatePicker>(this).Where(p => p.SelectedDate != null).ToList();
if (Children.Count() % 2 != 0)
{
e.Cancel = true;
MessageBox.Show("Datumsfelder nicht vollständig!\nEs muss zwingend ein 'von' und ein 'bis' Datum für jeden Eintrag angegeben werden\n" +
"Das Fenster kann vor vervollständigung nicht geschlossen werden", "Achtung", MessageBoxButton.OK, MessageBoxImage.Warning);
}
if (HasHalfFilledDates())
e.Cancel = true;
}
private bool HasHalfFilledDates()
{
//var id = (int)((System.Data.DataRowView)picker.DataContext).Row.ItemArray[0];
var Children = Helper.FindVisualChildren<DatePicker>(this).ToList();
foreach (var picker in Children)
{
if (picker.GetBindingExpression(DatePicker.SelectedDateProperty).ResolvedSourcePropertyName.EndsWith("bis"))
{
if (picker.SelectedDate.HasValue && !Children[(Children.IndexOf(picker) - 1)].SelectedDate.HasValue)
{
MessageBox.Show("Datumsfelder nicht vollständig!\nEs muss zwingend ein 'von' und ein 'bis' Datum für jeden Eintrag angegeben werden\n" +
"Das Fenster kann vor vervollständigung nicht geschlossen werden", "Achtung", MessageBoxButton.OK, MessageBoxImage.Warning);
return true;
}
}
else if (picker.GetBindingExpression(DatePicker.SelectedDateProperty).ResolvedSourcePropertyName.EndsWith("von"))
{
if (picker.SelectedDate.HasValue && !Children[(Children.IndexOf(picker) + 1)].SelectedDate.HasValue)
{
MessageBox.Show("Datumsfelder nicht vollständig!\nEs muss zwingend ein 'von' und ein 'bis' Datum für jeden Eintrag angegeben werden\n" +
"Das Fenster kann vor vervollständigung nicht geschlossen werden", "Achtung", MessageBoxButton.OK, MessageBoxImage.Warning);
return true;
}
}
}
return false;
}
BEImage BeI;
private void OpenImage_Click(object sender, MouseButtonEventArgs e)
{
if (BeI != null && BeI.IsLoaded)
{
BeI.changePicture(DataGridRow.GetRowContainingElement(sender as DataGridCell).GetIndex() + 1);
}
else
{
BeI = new BEImage(DataGridRow.GetRowContainingElement(sender as DataGridCell).GetIndex() + 1);
BeI.Owner = this;
BeI.Show();
}
}
private void StackPanel_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (((sender as StackPanel).Children[0] as DatePicker).IsEnabled == false && ((sender as StackPanel).Children[0] as DatePicker).ToolTip != null)
{
floatingTip.Placement = System.Windows.Controls.Primitives.PlacementMode.Mouse;
(floatingTip.Child as TextBlock).Text = $" {((sender as StackPanel).Children[0] as DatePicker).ToolTip.ToString()} ";
floatingTip.IsOpen = true;
}
}
private void Window_MouseMove(object sender, MouseEventArgs e)
{
if (floatingTip.IsOpen)
floatingTip.IsOpen = false;
}
private void DatePicker_DateValidationError(object sender, DatePickerDateValidationErrorEventArgs e)
{
MessageBox.Show("Bereits belegtes oder ungültiges Datum eingegeben", "Ungültiges Datum", MessageBoxButton.OK, MessageBoxImage.Warning);
}
}
}

331
ZKuP/Belegung2.xaml Normal file
View File

@ -0,0 +1,331 @@
<Window x:Class="ZKuP.Belegung2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ZKuP"
mc:Ignorable="d"
Title="BE-Flächenbelegung" Height="450" Width="1077.69" MaxWidth="1900" MaxHeight="620" Loaded="Window_Loaded" Cursor="Wait">
<Grid>
<ScrollViewer HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible">
<StackPanel x:Name="grid" Orientation="Vertical">
<StackPanel Orientation="Horizontal" Margin="0,5">
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Text="BE" Width="35" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Text="Bereich" Width="120" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Text="B1 von" Width="120" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Text="B1 bis" Width="120" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Text="B1 Projekt" Width="180" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Text="B1 Projektleiter" Width="150" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Text="B2 von" Width="120" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Text="B2 bis" Width="120" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Text="B2 Projekt" Width="180" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Text="B2 Projektleiter" Width="150" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Text="B3 von" Width="120" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Text="B3 bis" Width="120" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Text="B3 Projekt" Width="180" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Text="B3 Projektleiter" Width="150" TextAlignment="Center"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Tag="1">
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" MouseLeftButtonDown="OpenImage_Click" Text="1" Width="35" Height="45" Padding="0,8" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" MouseLeftButtonDown="OpenImage_Click" Text="ICE (West)" Width="120" Padding="0,8" Height="45" TextAlignment="Center"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Tag="2">
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" MouseLeftButtonDown="OpenImage_Click" Text="2" Width="35" Height="45" Padding="0,8" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" MouseLeftButtonDown="OpenImage_Click" Text="ICE (West)" Width="120" Padding="0,8" Height="45" TextAlignment="Center"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Tag="3">
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" MouseLeftButtonDown="OpenImage_Click" Text="3" Width="35" Height="45" Padding="0,8" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" MouseLeftButtonDown="OpenImage_Click" Text="ICE (West)" Width="120" Padding="0,8" Height="45" TextAlignment="Center"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Tag="4">
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" MouseLeftButtonDown="OpenImage_Click" Text="4" Width="35" Height="45" Padding="0,8" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" MouseLeftButtonDown="OpenImage_Click" Text="ICE (West)" Width="120" Padding="0,8" Height="45" TextAlignment="Center"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Tag="5">
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" MouseLeftButtonDown="OpenImage_Click" Text="5" Width="35" Height="45" Padding="0,8" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" MouseLeftButtonDown="OpenImage_Click" Text="ICE (West)" Width="120" Padding="0,8" Height="45" TextAlignment="Center"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Tag="6">
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" MouseLeftButtonDown="OpenImage_Click" Text="6" Width="35" Height="45" Padding="0,8" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" MouseLeftButtonDown="OpenImage_Click" Text="Lokhalle (Ost)" Width="120" Padding="0,8" Height="45" TextAlignment="Center"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Tag="7">
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" MouseLeftButtonDown="OpenImage_Click" Text="7" Width="35" Height="45" Padding="0,8" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" MouseLeftButtonDown="OpenImage_Click" Text="Lokhalle (Ost)" TextDecorations="Strikethrough" Width="120" Padding="0,8" Height="45" TextAlignment="Center"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Tag="8">
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" MouseLeftButtonDown="OpenImage_Click" Text="8" Width="35" Height="45" Padding="0,8" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" MouseLeftButtonDown="OpenImage_Click" Text="Schichtparkplatz" Width="120" Padding="0,8" Height="45" TextAlignment="Center"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Tag="9">
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" MouseLeftButtonDown="OpenImage_Click" Text="9" Width="35" Height="45" Padding="0,8" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" MouseLeftButtonDown="OpenImage_Click" Text="Kantine" Width="120" Padding="0,8" Height="45" TextAlignment="Center"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Tag="10">
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" MouseLeftButtonDown="OpenImage_Click" Text="10" Width="35" Height="45" Padding="0,8" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" MouseLeftButtonDown="OpenImage_Click" Text="Gebäude G" Width="120" Padding="0,8" Height="45" TextAlignment="Center"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Tag="11">
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" MouseLeftButtonDown="OpenImage_Click" Text="11" Width="35" Height="45" Padding="0,8" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" MouseLeftButtonDown="OpenImage_Click" Text="Gaslager" Width="120" Padding="0,8" Height="45" TextAlignment="Center"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Tag="12">
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" MouseLeftButtonDown="OpenImage_Click" Text="12" Width="35" Height="45" Padding="0,8" TextAlignment="Center"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" MouseLeftButtonDown="OpenImage_Click" Text="Feuerwehrzufahrt Süd" Width="120" Padding="0,8" Height="45" TextAlignment="Center"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<DatePicker Padding="1,12" Height="45" Width="100" IsEnabled="False"/>
<Button Width="20" Height="45" Content="✕" FontSize="12" Padding="3" HorizontalContentAlignment="Left" FontWeight="Bold" Foreground="Red" Click="ButtonDelDate_Click" IsEnabled="False"/>
<TextBox Width="180" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
<TextBox Width="150" Height="45" TextWrapping="Wrap" LostKeyboardFocus="TextBox_LostKeyboardFocus" IsEnabled="False"/>
</StackPanel>
</StackPanel>
</ScrollViewer>
</Grid>
</Window>

357
ZKuP/Belegung2.xaml.cs Normal file
View File

@ -0,0 +1,357 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace ZKuP
{
/// <summary>
/// Interaktionslogik für Belegung2.xaml
/// </summary>
public partial class Belegung2 : Window
{
DataTable belegung = new DataTable("Belegung");
DataTable ersteller = new DataTable("Ersteller");
public Belegung2()
{
InitializeComponent();
Init();
}
private async void Init()
{
belegung = await SQL.ReadSQL($"SELECT * FROM zkup.`be-belegung`", belegung);
FillRows();
DisableFields();
}
private void FillRows()
{
var Children = Helper.FindVisualChildren<StackPanel>(grid).ToList();
DataTable dates = new DataTable();
dates = new System.Data.DataView(belegung).ToTable(false, new string[] { "b1von", "b1bis", "b2von", "b2bis", "b3von", "b3bis" });
DataTable textboxes = new DataTable();
textboxes = new System.Data.DataView(belegung).ToTable(false, new string[] { "b1Projekt", "b1Projektleiter", "b2Projekt", "b2Projektleiter", "b3Projekt", "b3Projektleiter" });
DataTable users = new DataTable();
users = new DataView(belegung).ToTable(false, new string[] { "b1Ersteller", "b2Ersteller", "b3Ersteller" });
var count = 0;
foreach (StackPanel sp in Children)
{
var count2 = 0;
if (sp.Tag != null)
{
foreach (DatePicker child in sp.Children.OfType<DatePicker>())
{
DateTime date;
DateTime.TryParse(dates.Rows[count].ItemArray[count2].ToString(), out date);
if (date.Date.Year != 1)
child.SelectedDate = date.Date;
else child.SelectedDate = null;
count2++;
}
count2 = 0;
foreach (TextBox child in sp.Children.OfType<TextBox>())
{
child.Text = textboxes.Rows[count].ItemArray[count2].ToString();
count2++;
}
count++;
}
}
}
private async void DisableFields()
{
Dictionary<string, string> dict = new Dictionary<string, string>();
ersteller = await SQL.ReadSQL($"SELECT b1Ersteller, b2Ersteller, b3Ersteller FROM zkup.`be-belegung`", ersteller);
for (var j = 1; j <= 12; j++)
{
for (var i = 1; i <= 3; i++)
{
dict.Add($"b{i}Ersteller{j}", ersteller.Rows[j - 1][$"b{i}Ersteller"].ToString());
}
}
foreach (var sp in Helper.FindVisualChildren<StackPanel>(grid).Where(p => p.Tag != null))
{
var x = sp.Children;
for (var i = 1; i < x.Count - 1; i++)
{
var z = $"b{Math.Ceiling((float)i / 6)}Ersteller{sp.Tag}";
var y = dict[z];
if (y == "" || y == Environment.UserName)
{
x[i + 1].IsEnabled = true;
}
else
{
var creator = Helper.InsertSpaceBeforeUpperCase(y);
x[i + 1].SetValue(ToolTipService.ShowOnDisabledProperty, true);
switch (x[i + 1].GetType().Name)
{
case nameof(DatePicker):
(x[i + 1] as DatePicker).ToolTip = $"Gesperrt durch {creator}";
break;
case nameof(TextBox):
(x[i + 1] as TextBox).ToolTip = $"Gesperrt durch {creator}";
break;
case nameof(Button):
(x[i + 1] as Button).ToolTip = $"Gesperrt durch {creator}";
break;
}
}
}
}
}
private async void TextBox_LostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
TextChanged(e.OldFocus);
}
private async void TextChanged(IInputElement e)
{
var box = (e as TextBox);
var SP = (box.Parent as StackPanel);
var SPindex = Convert.ToInt32(SP.Tag);
var boxIndex = SP.Children.IndexOf(box) / 6;
var boxOneTwo = Math.Ceiling(Math.Ceiling(SP.Children.IndexOf(box) / 6f) / boxIndex);
string ProjektOderLeiter;
ProjektOderLeiter = boxOneTwo == 1 ? "Projekt" : "Projektleiter";
if (!string.IsNullOrWhiteSpace(box.Text))
await SQL.WriteSQL($"UPDATE zkup.`be-belegung` SET b{boxIndex}{ProjektOderLeiter} = '{box.Text}', `b{boxIndex}Ersteller` = '{Environment.UserName}' WHERE `idbe-belegung` = '{SPindex}'");
else
await SQL.WriteSQL($"UPDATE zkup.`be-belegung` SET b{boxIndex}{ProjektOderLeiter} = '{box.Text}', `b{boxIndex}Ersteller` = '' WHERE `idbe-belegung` = '{SPindex}'");
}
private async void DatePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
{
var box = (sender as DatePicker);
var SP = (box.Parent as StackPanel);
var SPindex = Convert.ToInt32(SP.Tag);
var boxIndex = (SP.Children.IndexOf(box) + 4) / 6;
var boxOneTwo = Math.Ceiling(Math.Ceiling((SP.Children.IndexOf(box) + 4f) / 6f) / boxIndex);
string vonOderBis;
vonOderBis = boxOneTwo == 1 ? "von" : "bis";
if (vonOderBis == "bis")
{
if ((SP.Children[SP.Children.IndexOf(box) - 2] as DatePicker).SelectedDate > box.SelectedDate)
{
e.Handled = true;
MessageBox.Show("Datum 'bis' muss größer als Datum 'von' sein!", "Ungültige Eingabe", MessageBoxButton.OK, MessageBoxImage.Warning);
box.SelectedDate = null;
return;
}
}
else if (vonOderBis == "von")
{
if ((SP.Children[SP.Children.IndexOf(box) + 2] as DatePicker).SelectedDate < box.SelectedDate)
{
e.Handled = true;
MessageBox.Show("Datum 'von' muss kleiner als Datum 'bis' sein!", "Ungültige Eingabe", MessageBoxButton.OK, MessageBoxImage.Warning);
box.SelectedDate = null;
return;
}
}
if (box.SelectedDate != null)
await SQL.WriteSQL($"UPDATE `be-belegung` SET `b{boxIndex}{vonOderBis}` = '{box.SelectedDate.Value.ToString("yyyy-MM-dd")}', `b{boxIndex}Ersteller` = '{Environment.UserName}' WHERE `idbe-belegung` = {SPindex}");
else
await SQL.WriteSQL($"UPDATE `be-belegung` SET `b{boxIndex}{vonOderBis}` = null, `b{boxIndex}Ersteller` = '' WHERE `idbe-belegung` = {SPindex}");
LockUsedDates();
}
private void ClearHistoricDates()
{
bool hasChanged = false;
foreach(var tb in Helper.FindVisualChildren<TextBox>(grid))
{
if (tb.Name != "PART_TextBox")
tb.TextChanged += Tb_TextChanged;
}
foreach (var childSPs in grid.Children)
{
foreach (var child in (childSPs as StackPanel).Children.OfType<DatePicker>())
{
var box = child;
var SP = (box.Parent as StackPanel);
var SPindex = Convert.ToInt32(SP.Tag);
var boxIndex = (SP.Children.IndexOf(box) + 4) / 6;
var boxOneTwo = Math.Ceiling(Math.Ceiling((SP.Children.IndexOf(box) + 4f) / 6f) / boxIndex);
if (boxOneTwo != 1)
{
if (child.SelectedDate.HasValue && child.SelectedDate.Value < DateTime.Now.Date)
{
child.SelectedDate = null;
var childIndex = (SP.Children.IndexOf(child));
(SP.Children[(childIndex - 2)] as DatePicker).SelectedDate = null;
(SP.Children[childIndex + 2] as TextBox).Text = null;
(SP.Children[childIndex + 3] as TextBox).Text = null;
hasChanged = true;
}
}
}
}
foreach (var tb in Helper.FindVisualChildren<TextBox>(grid))
{
if (tb.Name != "PART_TextBox")
tb.TextChanged -= Tb_TextChanged;
}
if (hasChanged)
{
belegung = SQL.ReadSQL($"SELECT * FROM zkup.`be-belegung`", belegung).Result;
FillRows();
DisableFields();
}
}
private void LockUsedDates()
{
foreach (var childSPs in grid.Children)
{
DateTime? firstDate = null;
DateTime? secondDate = null;
CalendarDateRange range = new CalendarDateRange();
(childSPs as StackPanel).Children.OfType<DatePicker>().ToList().ForEach(p => p.BlackoutDates.Clear());
foreach (var child in (childSPs as StackPanel).Children.OfType<DatePicker>())
{
var box = child;
var SP = (box.Parent as StackPanel);
var boxIndex = (SP.Children.IndexOf(box) + 4) / 6;
var boxOneTwo = Math.Ceiling(Math.Ceiling((SP.Children.IndexOf(box) + 4f) / 6f) / boxIndex);
if (box.SelectedDate.HasValue && boxOneTwo == 1)
{
firstDate = box.SelectedDate.Value;
}
else if (box.SelectedDate.HasValue && boxOneTwo != 1)
{
secondDate = box.SelectedDate.Value;
if (firstDate.HasValue && secondDate.HasValue)
range = new CalendarDateRange(firstDate.Value, secondDate.Value);
}
foreach (var picker in (childSPs as StackPanel).Children.OfType<DatePicker>())
{
var year = range.Start.Year;
var hasValue = picker.SelectedDate.HasValue;
if (year != 1 && year != 0 && (!hasValue || !(range.Start <= picker.SelectedDate.Value & range.End >= picker.SelectedDate.Value)))
{
picker.BlackoutDates.Add(range);
}
}
}
}
}
private void Tb_TextChanged(object sender, TextChangedEventArgs e)
{
TextChanged(e.Source as IInputElement);
}
private void ButtonDelDate_Click(object sender, RoutedEventArgs e)
{
int index = ((sender as Button).Parent as StackPanel).Children.IndexOf(sender as Button);
DatePicker previousDP = VisualTreeHelper.GetChild((sender as Button).Parent, index - 1) as DatePicker;
if ((sender as Button).IsEnabled == true)
{
previousDP.SelectedDate = null;
}
else
e.Handled = true;
}
BEImage BeI;
private void OpenImage_Click(object sender, MouseButtonEventArgs e)
{
if (BeI != null && BeI.IsLoaded)
{
BeI.changePicture(Convert.ToInt32((((sender as TextBlock).Parent as StackPanel).Children[0] as TextBlock).Text));
}
else
{
BeI = new BEImage(Convert.ToInt32((((sender as TextBlock).Parent as StackPanel).Children[0] as TextBlock).Text));
BeI.Owner = this;
BeI.Show();
}
}
private void DatePicker_DateValidationError(object sender, DatePickerDateValidationErrorEventArgs e)
{
MessageBox.Show("Bereits belegtes oder ungültiges Datum eingegeben", "Ungültiges Datum", MessageBoxButton.OK, MessageBoxImage.Warning);
}
private async void Window_Loaded(object sender, RoutedEventArgs e)
{
foreach (var child in Helper.FindVisualChildren<DatePicker>(this))
{
child.SelectedDateChanged += DatePicker_SelectedDateChanged;
child.DateValidationError += DatePicker_DateValidationError;
}
ClearHistoricDates();
LockUsedDates();
this.Cursor = Cursors.Arrow;
}
}
}

View File

@ -5,18 +5,127 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ZKuP"
mc:Ignorable="d"
Title="Karten" Height="450" Width="800">
Title="Karten" Height="530" Width="943.5" ResizeMode="NoResize">
<Grid>
<DataGrid x:Name="dgCards" Margin="10,35,10,10" ItemsSource="{Binding Path=., Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" CanUserAddRows="False" AutoGenerateColumns="False" CanUserDeleteRows="False" PreviewKeyDown="dgCards_PreviewKeyDown" SelectionChanged="dgCards_SelectionChanged">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding kartennr}" ClipboardContentBinding="{x:Null}" Header="Kartennummer" Width="*"/>
<DataGridTextColumn Binding="{Binding farbe}" ClipboardContentBinding="{x:Null}" Header="Farbe" Width="*"/>
<DataGridTextColumn Binding="{Binding benutzer}" ClipboardContentBinding="{x:Null}" Header="Firma / Benutzer" Width="*"/>
<DataGridTextColumn Binding="{Binding telnr}" ClipboardContentBinding="{x:Null}" Header="Telefonnummer" Width="*"/>
</DataGrid.Columns>
</DataGrid>
<Button x:Name="btnAdd" Content="Karte hinzufügen" Margin="0,10,10,0" VerticalAlignment="Top" Click="btnAdd_Click" HorizontalAlignment="Right" Width="152"/>
<Button x:Name="btnDelete" Content="Markierte Karte löschen" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="135" IsEnabled="False" Click="btnDelete_Click"/>
<TabControl>
<TabItem Header="Grün/Rot Karten" Margin="6,0,-6,0" Width="460" HorizontalAlignment="Left" Padding="0" Background="#252F3B">
<Grid>
<DataGrid x:Name="dgCards" Margin="10,40,10,10" ItemsSource="{Binding Path=., Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" CanUserAddRows="False" AutoGenerateColumns="False" CanUserDeleteRows="False" PreviewKeyDown="dgCards_PreviewKeyDown" SelectionChanged="dgCards_SelectionChanged">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding kartennr}" ClipboardContentBinding="{x:Null}" Header="Kartennummer" Width="*"/>
<DataGridTextColumn Binding="{Binding farbe}" ClipboardContentBinding="{x:Null}" Header="Farbe" Width="*"/>
<DataGridTextColumn Binding="{Binding benutzer}" ClipboardContentBinding="{x:Null}" Header="Firma / Benutzer" Width="*"/>
<DataGridTextColumn Binding="{Binding telnr}" ClipboardContentBinding="{x:Null}" Header="Telefonnummer" Width="*"/>
</DataGrid.Columns>
</DataGrid>
<Button x:Name="btnAdd" Content="Karte hinzufügen" Height="25" Padding="-2" Margin="0,10,10,0" VerticalAlignment="Top" Click="btnAdd_Click" HorizontalAlignment="Right" Width="152"/>
<Button x:Name="btnDelete" Content="Markierte Karte löschen" Height="25" Padding="-2" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="150" IsEnabled="False" Click="btnDelete_Click"/>
</Grid>
</TabItem>
<TabItem Margin="0,0,0,0" HorizontalAlignment="Right" Width="460" Background="#252F3B">
<TabItem.Header>
<Image Source="/Resources/mcfit.png" Height="39" Width="265"/>
</TabItem.Header>
<Grid>
<Border BorderBrush="Black" BorderThickness="1" HorizontalAlignment="Left" Height="110" Margin="5,8,0,0" VerticalAlignment="Top" Width="915" Background="#19FF0000"/>
<TextBlock Text="McFIT Karte ausgeben" Margin="10,10" FontWeight="Bold"/>
<TextBlock Text="Karte" Margin="10,30,0,0"/>
<TextBlock Text="Vorname" Margin="321,30,0,0"/>
<TextBlock Text="Name" Margin="160,30,0,0"/>
<TextBlock Text="Abteilung" Margin="479,30,0,0"/>
<TextBlock Text="Handynummer" Margin="571,30,0,0"/>
<TextBlock Text="Email" Margin="731,30,0,0"/>
<ComboBox x:Name="cBNameAusgabe" Height="22" Width="154" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="160,48,0,0" SelectionChanged="cBNameAusgabe_SelectionChanged"/>
<TextBox x:Name="tbAusVorname" Width="155" Height="22" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="322,48,0,0" IsEnabled="False"/>
<TextBox x:Name="tbAusNachname" Width="155" Height="22" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="161,48,0,0" TextChanged="tbAusNachname_TextChanged"/>
<TextBox x:Name="tbAusAbteilung" Width="87" Height="22" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="480,48,0,0" IsEnabled="False"/>
<TextBox x:Name="tbAusHandy" Width="155" Height="22" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="572,48,0,0" IsEnabled="False"/>
<TextBox x:Name="tbAusEmail" Width="176" Height="22" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="732,48,0,0" IsEnabled="False"/>
<ComboBox x:Name="cBAusKarte" HorizontalAlignment="Left" Margin="10,48" VerticalAlignment="Top" Width="120" IsReadOnly="False">
<ComboBoxItem Content=""/>
<ComboBoxItem Content="Karte 1"/>
<ComboBoxItem Content="Karte 2"/>
<ComboBoxItem Content="Karte 3"/>
<ComboBoxItem Content="Karte 4"/>
<ComboBoxItem Content="Karte 5"/>
</ComboBox>
<Button x:Name="btnAusgebenUnterschrift" Content="Unterschrift / Karte ausgeben" Margin="6,87,3,0" Height="30" VerticalAlignment="Top" Click="btnAusgebenUnterschrift_Click"/>
<Border BorderBrush="Black" BorderThickness="1" HorizontalAlignment="Left" Height="110" Margin="5,123,0,0" VerticalAlignment="Top" Width="915" Background="#1900A016"/>
<TextBlock Text="McFIT Karte zurücknehmen" FontWeight="Bold" Margin="10,125"/>
<TextBlock Text="Karte" Margin="10,151,0,0"/>
<TextBlock Text="Vorname" Margin="321,151,0,0"/>
<TextBlock Text="Name" Margin="160,151,0,0"/>
<TextBlock Text="Abteilung" Margin="479,151,0,0"/>
<TextBlock Text="Handynummer" Margin="571,151,0,0"/>
<TextBlock Text="Email" Margin="731,151,0,0"/>
<TextBox x:Name="tbZurVorname" Width="155" Height="22" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="322,169,0,0" IsReadOnly="True" Background="{x:Null}"/>
<TextBox x:Name="tbZurNachname" Width="155" Height="22" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="161,169,0,0" IsReadOnly="True" Background="{x:Null}"/>
<TextBox x:Name="tbZurAbteilung" Width="87" Height="22" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="480,169,0,0" IsReadOnly="True" Background="{x:Null}"/>
<TextBox x:Name="tbZurHandy" Width="155" Height="22" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="572,169,0,0" IsReadOnly="True" Background="{x:Null}"/>
<TextBox x:Name="tbZurEmail" Width="176" Height="22" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="732,169,0,0" IsReadOnly="True" Background="{x:Null}"/>
<ComboBox x:Name="cBZurKarte" HorizontalAlignment="Left" Margin="10,169,0,0" VerticalAlignment="Top" Width="120" IsReadOnly="True" SelectionChanged="cBZurKarte_SelectionChanged">
<ComboBoxItem Content=""/>
<ComboBoxItem Content="Karte 1"/>
<ComboBoxItem Content="Karte 2"/>
<ComboBoxItem Content="Karte 3"/>
<ComboBoxItem Content="Karte 4"/>
<ComboBoxItem Content="Karte 5"/>
</ComboBox>
<Button x:Name="btnZuruecknehmen" Content="Karte zurückgenommen" Margin="6,202,3,0" Height="30" VerticalAlignment="Top" Click="btnZuruecknehmen_Click"/>
<DataGrid x:Name="dgMcFit" Margin="5,254,5,5" ItemsSource="{Binding Path=., Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" IsReadOnly="True" CanUserAddRows="False" AutoGenerateColumns="False" CanUserDeleteRows="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Kartennr}" ClipboardContentBinding="{x:Null}" Header="Nr" Width="38"/>
<DataGridTextColumn Binding="{Binding Vorname}" ClipboardContentBinding="{x:Null}" Header="Vorname" Width="*"/>
<DataGridTextColumn Binding="{Binding Nachname}" ClipboardContentBinding="{x:Null}" Header="Name" Width="*"/>
<DataGridTextColumn Binding="{Binding Abteilung}" ClipboardContentBinding="{x:Null}" Header="Abteilung" Width="85"/>
<DataGridTextColumn Binding="{Binding Handynr}" ClipboardContentBinding="{x:Null}" Header="Handy" Width="*"/>
<DataGridTextColumn Binding="{Binding Email}" ClipboardContentBinding="{x:Null}" Header="Email" Width="*"/>
<DataGridTextColumn Binding="{Binding AusgabeTimestamp, StringFormat=\{0:dd.MM.yyyy HH:mm\}}" ClipboardContentBinding="{x:Null}" Header="Ausgegeben" Width="100">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextAlignment" Value="Center" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding ZurueckTimestamp, StringFormat=\{0:dd.MM.yyyy HH:mm\}}" ClipboardContentBinding="{x:Null}" Header="Zurückgegeben" Width="120">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextAlignment" Value="Center" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridCheckBoxColumn Binding="{Binding AktuellAusgegeben}" ClipboardContentBinding="{x:Null}" Width="40">
<DataGridCheckBoxColumn.Header>
<TextBlock Text="AA" ToolTip="Aktuell Ausgegeben?"/>
</DataGridCheckBoxColumn.Header>
</DataGridCheckBoxColumn>
<DataGridTemplateColumn ClipboardContentBinding="{x:Null}" Header="Unterschrift" Width="110">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button x:Name="btnSignature" Content="Unterschrift" Click="btnSignature_Click"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</TabItem>
</TabControl>
</Grid>
</Window>

View File

@ -11,6 +11,7 @@ using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Windows.Threading;
namespace ZKuP
{
@ -20,6 +21,12 @@ namespace ZKuP
public partial class Cards : Window
{
System.Data.DataTable karten = new System.Data.DataTable("karten");
System.Data.DataTable mcFit = new System.Data.DataTable("mcFit");
DispatcherTimer textInputTimer = new DispatcherTimer();
byte[] _signature = null;
public Cards()
@ -28,6 +35,12 @@ namespace ZKuP
karten = SQL.ReadSQL("Select * from zkup.karten", karten).Result;
dgCards.DataContext = karten;
mcFit = SQL.ReadSQL("SELECT * FROM zkup.mcFit", mcFit).Result;
dgMcFit.DataContext = mcFit;
textInputTimer.Interval = TimeSpan.FromSeconds(0.5);
textInputTimer.Tick += TextInputTimer_Tick;
}
private async void dgCards_PreviewKeyDown(object sender, KeyEventArgs e)
@ -42,7 +55,7 @@ namespace ZKuP
{
await SQL.WriteSQL($"DELETE FROM zkup.karten WHERE `kartennr` = '{arr[1]}'");
karten = SQL.ReadSQL("Select * FROM zkup.karten", karten).Result;
karten = await SQL.ReadSQL("Select * FROM zkup.karten", karten);
dgCards.DataContext = karten;
}
}
@ -78,9 +91,148 @@ namespace ZKuP
await SQL.WriteSQL($"DELETE FROM zkup.karten WHERE `kartennr` = '{arr[1]}'");
karten = SQL.ReadSQL("Select * FROM zkup.karten", karten).Result;
karten = await SQL.ReadSQL("Select * FROM zkup.karten", karten);
dgCards.DataContext = karten;
}
}
//
//
//
//
// McFIT
//
//
//
TextBox lastTextBox = null;
private async void TextInputTimer_Tick(object sender, EventArgs e)
{
textInputTimer.Stop();
var cBItemSource = await SQL.ReadListStringMultipleColumns($"SELECT idmcFitUsers, Name, Vorname FROM zkup.mcFitUsers WHERE `Name` LIKE '{lastTextBox.Text}%'");
List<string> temp = new List<string>();
foreach (var line in cBItemSource)
temp.Add(line.Replace(";", " "));
cBNameAusgabe.ItemsSource = temp;
cBNameAusgabe.IsDropDownOpen = true;
}
private void tbAusNachname_TextChanged(object sender, TextChangedEventArgs e)
{
lastTextBox = (sender as TextBox);
textInputTimer.Start();
}
private async void cBNameAusgabe_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (cBNameAusgabe != null && cBNameAusgabe.SelectedItem != null)
{
var result = await SQL.ReadListStringMultipleColumns($"SELECT Name,Vorname,Abteilung,Handynr,Email FROM zkup.mcFitUsers WHERE idmcFitUsers = '{cBNameAusgabe.SelectedItem.ToString().Split(' ')[0]}'", 5);
tbAusNachname.TextChanged -= tbAusNachname_TextChanged;
tbAusNachname.Text = result.First().Split(';')[0];
tbAusVorname.Text = result.First().Split(';')[1];
tbAusAbteilung.Text = result.First().Split(';')[2];
tbAusHandy.Text = result.First().Split(';')[3];
tbAusEmail.Text = result.First().Split(';')[4];
tbAusNachname.TextChanged += tbAusNachname_TextChanged;
}
}
private async void cBZurKarte_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
int Kartennr = Convert.ToInt32(cBZurKarte.SelectedValue.ToString().Split(' ')[2]);
var result = await SQL.ReadListStringMultipleColumns($"SELECT Nachname,Vorname,Abteilung,Handynr,Email FROM zkup.mcFit WHERE Kartennr = '{Kartennr}'", 5);
tbZurNachname.Text = result.First().Split(';')[0];
tbZurVorname.Text = result.First().Split(';')[1];
tbZurAbteilung.Text = result.First().Split(';')[2];
tbZurHandy.Text = result.First().Split(';')[3];
tbZurEmail.Text = result.First().Split(';')[4];
}
private async void btnAusgebenUnterschrift_Click(object sender, RoutedEventArgs e)
{
var name = tbAusVorname.Text + " " + tbAusNachname.Text;
if (signoPad._stPad.DeviceGetCount() > 0)
{
if (tbAusVorname.Text != "" &&
tbAusNachname.Text != "" &&
tbAusAbteilung.Text != "" &&
tbAusHandy.Text != "" &&
tbAusEmail.Text != "")
{
var sig = new Signature(Signature.DisclaimerType.McFit, name, tbAusAbteilung.Text, tbAusHandy.Text);
if (sig.ShowDialog() == false)
{
_signature = sig.ResultByte;
if (_signature != null)
{
int Kartennr = Convert.ToInt32(cBAusKarte.SelectedValue.ToString().Split(' ')[2]);
await SQL.WriteSQL($"UPDATE zkup.mcFit SET Vorname = '{tbAusVorname.Text}', Nachname = '{tbAusNachname.Text}', Abteilung = '{tbAusAbteilung.Text}', Handynr = '{tbAusHandy.Text}', Email = '{tbAusEmail.Text}', AusgabeTimestamp = '{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}', ZurueckTimestamp = null, AktuellAusgegeben = '1', Signature = @signature WHERE Kartennr = '{Kartennr}'", _signature);
mcFit = SQL.ReadSQL("SELECT * FROM zkup.mcFit", mcFit).Result;
dgMcFit.DataContext = mcFit;
}
}
}
else
{
MessageBox.Show("Karte auswählen und alle Felder ausfüllen!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
else
MessageBox.Show("Kein Unterschriftenpad gefunden\nMeldung 0x01", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
}
private async void btnZuruecknehmen_Click(object sender, RoutedEventArgs e)
{
int Kartennr = Convert.ToInt32(cBZurKarte.SelectedValue.ToString().Split(' ')[2]);
await SQL.WriteSQL($"UPDATE zkup.mcFit SET ZurueckTimestamp = '{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}', AktuellAusgegeben = '0' WHERE Kartennr = '{Kartennr}'");
mcFit = SQL.ReadSQL("SELECT * FROM zkup.mcFit", mcFit).Result;
dgMcFit.DataContext = mcFit;
}
private void btnSignature_Click(object sender, RoutedEventArgs e)
{
var signBtn = ((sender as Button).DataContext) as System.Data.DataRowView;
var i = SQL.ReadSingleByteArr($"SELECT Signature FROM zkup.mcFit WHERE Kartennr = '{(signBtn).Row.ItemArray[0].ToString()}'");
BitmapImage image = null;
if (i != null)
image = Helper.ConvertBitmapToImage(i);
else
image = new BitmapImage(new Uri(@"/Resources/NoSignature.png", UriKind.Relative));
var iv = new ImageView(image);
iv.Owner = this;
iv.ShowDialog();
}
}
}

View File

@ -0,0 +1,21 @@
<Window x:Class="ZKuP.CheckKennzeichen"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ZKuP"
mc:Ignorable="d"
Title=" Kennzeichen überprüfen" Height="450" Width="600" WindowStyle="ToolWindow" ResizeMode="NoResize">
<Grid>
<Button x:Name="btnSearch" Content="Suchen" HorizontalAlignment="Left" Margin="176,10,0,0" VerticalAlignment="Top" Width="75" Height="25" Padding="-2" Click="btnSearch_Click"/>
<TextBox x:Name="tbKennzeichen" HorizontalAlignment="Left" Height="23" Margin="10,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="160" PreviewKeyDown="tbKennzeichen_PreviewKeyDown"/>
<DataGrid x:Name="dgKennzeichen" Margin="10,55,10,10" ItemsSource="{Binding .}" CanUserDeleteRows="False" CanUserAddRows="False" CanUserReorderColumns="False">
<DataGrid.Columns>
<!--<DataGridTextColumn Binding="{Binding Kennzeichen}" ClipboardContentBinding="{x:Null}" Header="Kennzeichen" Width="80"/>
<DataGridTextColumn Binding="{Binding Name}" ClipboardContentBinding="{x:Null}" Header="Name" Width="*"/>
<DataGridTextColumn Binding="{Binding Ansprechpartner}" ClipboardContentBinding="{x:Null}" Header="Ansprechpartner" Width="*"/>-->
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>

View File

@ -0,0 +1,52 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace ZKuP
{
/// <summary>
/// Interaktionslogik für CheckKennzeichen.xaml
/// </summary>
public partial class CheckKennzeichen : Window
{
public CheckKennzeichen()
{
InitializeComponent();
}
private void btnSearch_Click(object sender, RoutedEventArgs e)
{
Search();
}
private void tbKennzeichen_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
Search();
}
private void Search()
{
if (!string.IsNullOrWhiteSpace(tbKennzeichen.Text))
{
var list = SQL.ReadSQL($"SELECT Kennzeichen, Name, Ansprechpartner, DATE_FORMAT(Zutritt, \"%d.%m.%y %I:%i\") AS \"Zutritt\" FROM zkup.zutritte WHERE Kennzeichen LIKE '%{tbKennzeichen.Text}%'").Result;
if (list.Rows.Count == 0)
list.Rows.Add("Keine Ergebnisse...");
dgKennzeichen.DataContext = list;
}
}
}
}

View File

@ -5,13 +5,36 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ZKuP"
mc:Ignorable="d"
Title="Parkausweise überprüfen" Height="450" MinHeight="300" Width="320" MinWidth="320">
Title="Parkausweise überprüfen" Height="450" MinHeight="300" Width="800" MinWidth="320">
<Grid>
<TextBox x:Name="tbSearch" Margin="10,10,150,0" Height="25" Padding="2" VerticalAlignment="Top" PreviewGotKeyboardFocus="tbSearch_PreviewGotKeyboardFocus" PreviewLostKeyboardFocus="tbSearch_PreviewLostKeyboardFocus"/>
<TextBlock x:Name="lblSearch" Text="Kennzeichen suchen..." Margin="15,12,150,0" Height="25" VerticalAlignment="Top" Foreground="Gray" IsHitTestVisible="False" PreviewKeyDown="lblSearch_PreviewKeyDown"/>
<Button x:Name="btnSearch" Content="Suchen" Margin="155,10,10,0" Height="25" VerticalAlignment="Top" HorizontalAlignment="Right" Width="115" Click="btnSearch_Click"/>
<TextBox x:Name="tbSearch" Margin="10,10,250,0" Height="25" Padding="2" VerticalAlignment="Top" PreviewGotKeyboardFocus="tbSearch_PreviewGotKeyboardFocus" PreviewLostKeyboardFocus="tbSearch_PreviewLostKeyboardFocus"/>
<TextBlock x:Name="lblSearch" Text="Kennzeichen suchen..." Margin="15,12,260,0" Height="25" VerticalAlignment="Top" Foreground="Gray" IsHitTestVisible="False" PreviewKeyDown="lblSearch_PreviewKeyDown"/>
<Button x:Name="btnSearch" Content="Suchen" Margin="0,10,130,0" Height="25" Padding="-2" VerticalAlignment="Top" HorizontalAlignment="Right" Width="115" Click="btnSearch_Click"/>
<Button x:Name="btnExport" Content="Exportieren" Margin="0,10,10,0" Height="25" Padding="-2" VerticalAlignment="Top" HorizontalAlignment="Right" Width="115" Click="btnExport_Click"/>
<DataGrid Margin="10,45,10,10" x:Name="dgCheck" ItemsSource="{Binding .}" CanUserDeleteRows="False" CanUserAddRows="False" CanUserReorderColumns="False" ColumnWidth="*">
</DataGrid>
<Grid x:Name="gridSpinner" Background="{DynamicResource MahApps.Brushes.Window.Background}" Visibility="Collapsed">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<local:ucSpinnerPiston RenderTransformOrigin="0.5,0.5" Grid.Row="1">
<local:ucSpinnerPiston.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleX="3" ScaleY="3"/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</local:ucSpinnerPiston.RenderTransform>
</local:ucSpinnerPiston>
<TextBlock Grid.Row="2" Text="Excel Export wird geladen, bitte warten..." FontSize="16" HorizontalAlignment="Center" Foreground="{DynamicResource MahApps.Brushes.Text}"/>
</Grid>
</Grid>
</Window>

View File

@ -23,14 +23,14 @@ namespace ZKuP
{
InitializeComponent();
var list = SQL.ReadSQL($"SELECT Kennzeichen FROM zkup.parkausweise WHERE Genehmigt = '1'").Result;
var list = SQL.ReadSQL($"SELECT Kennzeichen, MA_Vorname AS Vorname, MA_Name AS Nachname, Telefon, Abteilung, Vorgesetzter FROM zkup.parkausweise WHERE Genehmigt = '1'").Result;
dgCheck.DataContext = list;
}
private void btnSearch_Click(object sender, RoutedEventArgs e)
{
var list = SQL.ReadSQL($"SELECT Kennzeichen FROM zkup.parkausweise WHERE Genehmigt = '1' AND Kennzeichen LIKE '%{tbSearch.Text}%'").Result;
var list = SQL.ReadSQL($"SELECT Kennzeichen, MA_Vorname AS Vorname, MA_Name AS Nachname, Telefon, Abteilung, Vorgesetzter FROM zkup.parkausweise WHERE Genehmigt = '1' AND Kennzeichen LIKE '%{tbSearch.Text}%'").Result;
dgCheck.DataContext = list;
}
@ -49,9 +49,23 @@ namespace ZKuP
{
if(e.Key == Key.Enter)
{
var list = SQL.ReadSQL($"SELECT Kennzeichen FROM zkup.parkausweise WHERE Genehmigt = '1' AND Kennzeichen LIKE '%{tbSearch.Text}%'").Result;
var list = SQL.ReadSQL($"SELECT Kennzeichen, MA_Vorname AS Vorname, MA_Name AS Nachname, Telefon, Abteilung, Vorgesetzter FROM zkup.parkausweise WHERE Genehmigt = '1' AND Kennzeichen LIKE '%{tbSearch.Text}%'").Result;
dgCheck.DataContext = list;
}
}
private async void btnExport_Click(object sender, RoutedEventArgs e)
{
gridSpinner.Visibility = Visibility.Visible;
await Task.Run(() =>
{
var res = SQL.ReadSQL($"SELECT Kennzeichen, MA_Vorname AS Vorname, MA_Name AS Nachname, Telefon, Abteilung, Vorgesetzter FROM zkup.parkausweise WHERE Gedruckt = '1'").Result;
var ex = new ExcelExporter();
ex.Export(res);
});
gridSpinner.Visibility = Visibility.Collapsed;
}
}
}

View File

@ -1,11 +1,12 @@
<Window x:Class="ZKuP.CreateFirma"
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ZKuP"
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls" x:Class="ZKuP.CreateFirma"
mc:Ignorable="d"
Title="Firmen verwalten" Height="661" Width="1378" ResizeMode="NoResize"
Title="Firmen verwalten" Height="682" Width="1378"
WindowStartupLocation="CenterOwner">
<Window.Resources>
@ -191,39 +192,59 @@
<Grid x:Name="grid">
<TextBox x:Name="tbName" HorizontalAlignment="Left" Height="23" Margin="10,57,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="340" TabIndex="1" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<TextBlock HorizontalAlignment="Left" Margin="10,36,0,0" TextWrapping="Wrap" VerticalAlignment="Top"><Run Text="Name der Firma"/></TextBlock>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" HorizontalAlignment="Left" Margin="10,36,0,0" TextWrapping="Wrap" VerticalAlignment="Top"><Run Text="Name der Firma"/></TextBlock>
<TextBox x:Name="tbVerantwortlicher_MA" HorizontalAlignment="Left" Height="23" Margin="10,106,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="340" TabIndex="2" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<TextBlock HorizontalAlignment="Left" Margin="10,85,0,0" TextWrapping="Wrap" VerticalAlignment="Top"><Run Text="Verantwortlicher Mitarbeiter der Firma"/></TextBlock>
<TextBox x:Name="tbTel_Firma" HorizontalAlignment="Left" Height="23" Margin="10,155,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="340" TabIndex="3" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<TextBlock HorizontalAlignment="Left" Margin="10,134,0,0" TextWrapping="Wrap" VerticalAlignment="Top"><Run Text="Telefonnummer Mitarbeiter der Firma"/></TextBlock>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" HorizontalAlignment="Left" Margin="10,85,0,0" TextWrapping="Wrap" VerticalAlignment="Top"><Run Text="Verantwortlicher Mitarbeiter der Firma"/></TextBlock>
<TextBox x:Name="tbTel_Firma" HorizontalAlignment="Left" Height="23" Margin="10,155,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="340" TabIndex="3" PreviewKeyDown="TextBoxes_PreviewKeyDown" PreviewTextInput="tbTel_Firma_PreviewTextInput"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" HorizontalAlignment="Left" Margin="10,134,0,0" TextWrapping="Wrap" VerticalAlignment="Top"><Run Text="Telefonnummer Mitarbeiter der Firma"/></TextBlock>
<TextBox x:Name="tbAnzahl_Begleiter" HorizontalAlignment="Left" Height="23" Margin="10,204,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="340" TabIndex="4" PreviewKeyDown="TextBoxes_PreviewKeyDown" PreviewTextInput="tbAnzahl_Begleiter_PreviewTextInput" ToolTip="Nur Zahlen und max. 2 Stellen" CommandManager.PreviewExecuted="Textboxes_PreviewExecuted" ContextMenu="{x:Null}"/>
<TextBlock HorizontalAlignment="Left" Margin="10,183,0,0" TextWrapping="Wrap" Text="Anzahl Begleitpersonen" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Margin="10,330,0,0" TextWrapping="Wrap" Text="Arbeitsbeginn ab" VerticalAlignment="Top"/>
<TextBlock x:Name="lbl1" HorizontalAlignment="Left" Margin="10,380,0,0" TextWrapping="Wrap" Text="Personen in Baumaßnahme eingewiesen bis" VerticalAlignment="Top"/>
<ComboBox x:Name="cbAnsprechpartner_Intern" HorizontalAlignment="Left" Height="23" Margin="10,504,0,0" Text="" VerticalAlignment="Top" Width="340" SelectionChanged="CbAnsprechpartner_Intern_SelectionChanged" TabIndex="13"/>
<TextBlock HorizontalAlignment="Left" Margin="10,483,0,0" TextWrapping="Wrap" Text="Ansprechpartner intern" VerticalAlignment="Top"/>
<TextBox x:Name="tbTel_Nr_Ansprechpartner_Intern" HorizontalAlignment="Left" Height="23" Margin="10,553,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="340" TabIndex="14" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<TextBlock HorizontalAlignment="Left" Margin="10,532,0,0" TextWrapping="Wrap" Text="Telefonnummer Ansprechpartner" VerticalAlignment="Top"/>
<DatePicker x:Name="dpArbeitsbeginn" HorizontalAlignment="Left" Margin="10,351,0,0" VerticalAlignment="Top" TabIndex="7" PreviewKeyDown="DpArbeitsbeginn_PreviewKeyDown" IsTabStop="True"/>
<DatePicker x:Name="dpEinweisung_Bis" HorizontalAlignment="Left" Margin="10,401,0,0" VerticalAlignment="Top" Width="340" TabIndex="9" IsTabStop="True" Focusable="True" PreviewKeyDown="DpEinweisung_Bis_PreviewKeyDown">
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" HorizontalAlignment="Left" Margin="10,183,0,0" TextWrapping="Wrap" Text="Anzahl Begleitpersonen" VerticalAlignment="Top"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" HorizontalAlignment="Left" Margin="10,379,0,0" TextWrapping="Wrap" Text="Arbeitsbeginn ab" VerticalAlignment="Top"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" x:Name="lbl1" HorizontalAlignment="Left" Margin="10,429,0,0" TextWrapping="Wrap" Text="Personen in Baumaßnahme eingewiesen bis" VerticalAlignment="Top"/>
<ComboBox x:Name="cbAnsprechpartner_Intern" HorizontalAlignment="Left" Height="23" Margin="10,553,0,0" Text="" VerticalAlignment="Top" Width="340" SelectionChanged="CbAnsprechpartner_Intern_SelectionChanged" TabIndex="16"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" HorizontalAlignment="Left" Margin="10,532,0,0" TextWrapping="Wrap" Text="Ansprechpartner intern" VerticalAlignment="Top"/>
<TextBox x:Name="tbTel_Nr_Ansprechpartner_Intern" HorizontalAlignment="Left" Height="23" Margin="10,602,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="340" TabIndex="14" PreviewKeyDown="TextBoxes_PreviewKeyDown" PreviewTextInput="tbTel_Nr_Ansprechpartner_Intern_PreviewTextInput"/>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" HorizontalAlignment="Left" Margin="10,581,0,0" TextWrapping="Wrap" Text="Telefonnummer Ansprechpartner" VerticalAlignment="Top"/>
<DatePicker x:Name="dpArbeitsbeginn" HorizontalAlignment="Left" Margin="10,400,0,0" VerticalAlignment="Top" TabIndex="8" PreviewKeyDown="DpArbeitsbeginn_PreviewKeyDown" IsTabStop="True" DateValidationError="dpArbeitsbeginn_DateValidationError"/>
<DatePicker x:Name="dpEinweisung_Bis" HorizontalAlignment="Left" Margin="10,450,0,0" VerticalAlignment="Top" Width="340" TabIndex="10" IsTabStop="True" Focusable="True" PreviewKeyDown="DpEinweisung_Bis_PreviewKeyDown" DateValidationError="dpEinweisung_Bis_DateValidationError">
<DatePicker.Resources>
<Style x:Key="dpEinweisungStyle" TargetType="DatePickerTextBox">
<Style x:Key="dpEinweisungStyle" TargetType="{x:Type DatePickerTextBox}">
<Setter Property="Text" Value="Datum auswählen →"/>
<Setter Property="IsReadOnly" Value="True"/>
</Style>
</DatePicker.Resources>
</DatePicker>
<Button x:Name="btnAdd" Content="Hinzufügen&#xD;&#xA; →" HorizontalAlignment="Left" Margin="355,36,0,0" VerticalAlignment="Top" Width="75" Height="553" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Click="btnAdd_Click" TabIndex="15"/>
<DataGrid x:Name="dgFirmen" Margin="435,36,10,43" KeyboardNavigation.TabNavigation="None" ItemsSource="{Binding Path=., Mode=OneWay}" AutoGenerateColumns="False" CanUserAddRows="False" IsTabStop="False" HorizontalScrollBarVisibility="Visible" CellEditEnding="DgFirmen_CellEditEnding" CanUserDeleteRows="False" PreviewKeyDown="DgFirmen_PreviewKeyDown" BeginningEdit="dgFirmen_BeginningEdit" SelectionChanged="dgFirmen_SelectionChanged" SelectionMode="Single" PreparingCellForEdit="dgFirmen_PreparingCellForEdit" ToolTip="Daten können per Doppelklick geändert werden">
<ComboBox x:Name="cbBE" HorizontalAlignment="Left" Height="23" Margin="10,349,0,0" Text="" VerticalAlignment="Top" Width="340" TabIndex="7">
<ComboBoxItem Content=""/>
<ComboBoxItem Content="BE-Fläche 1 (ICE-West/Containerburg)"/>
<ComboBoxItem Content="BE-Fläche 2 (ICE-West/MaWi/Gleisabstellung)"/>
<ComboBoxItem Content="BE-Fläche 3 (MaWi-Rampe)"/>
<ComboBoxItem Content="BE-Fläche 4 (Aufgang Friedenheimer-Brücke)"/>
<ComboBoxItem Content="BE-Fläche 5 (Stellwerk)"/>
<ComboBoxItem Content="BE-Fläche 6 (Lokhalle Gleisbereich Süd-Ost)"/>
<ComboBoxItem Content="BE-Fläche 7 (Lokhalle Gleisbereich Nord-Ost)"/>
<ComboBoxItem Content="BE-Fläche 8 (Schichtparkplatz)"/>
<ComboBoxItem Content="BE-Fläche 9 (Kantine)"/>
<ComboBoxItem Content="BE-Fläche 10 (Gebäude G)"/>
<ComboBoxItem Content="BE-Fläche 11 (Gaslager)"/>
<ComboBoxItem Content="BE-Fläche 12 (Feuerwehrzufahrt Süd)"/>
</ComboBox>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" HorizontalAlignment="Left" Margin="10,328,0,0" TextWrapping="Wrap" Text="Gebuchte BE-Fläche" VerticalAlignment="Top"/>
<Button x:Name="btnAdd" Content="Hinzufügen&#xA; →" HorizontalAlignment="Left" FontSize="12" Padding="-2" Margin="355,36,0,0" VerticalAlignment="Top" Width="75" Height="580" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Click="btnAdd_Click" TabIndex="15"/>
<DataGrid x:Name="dgFirmen" Margin="435,36,10,43" KeyboardNavigation.TabNavigation="None" ItemsSource="{Binding ., Mode=OneWay}" AutoGenerateColumns="False" CanUserAddRows="False" IsTabStop="False" HorizontalScrollBarVisibility="Visible" CellEditEnding="DgFirmen_CellEditEnding" CanUserDeleteRows="False" PreviewKeyDown="DgFirmen_PreviewKeyDown" BeginningEdit="dgFirmen_BeginningEdit" SelectionChanged="dgFirmen_SelectionChanged" SelectionMode="Single" PreparingCellForEdit="dgFirmen_PreparingCellForEdit" ToolTip="Daten können per Doppelklick geändert werden">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<DataTrigger Binding="{Binding Örtliche_Einweisung_bis, StringFormat=\{0:dd.MM.yyyy\}}" Value="01.01.1902">
<Setter Property="Background" Value="Red"/>
</DataTrigger>
<DataTrigger Binding="{Binding Örtliche_Einweisung_bis, StringFormat=\{0:dd.MM.yyyy\}}" Value="01.01.1903">
<Setter Property="Background" Value="LightYellow"/>
<Setter Property="Background" Value="#CCFFA200"/>
<Setter Property="Foreground" Value="Black"/>
</DataTrigger>
</Style.Triggers>
</Style>
@ -239,14 +260,12 @@
</Trigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsSelected}" Value="True" />
<Condition Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}, Path=IsKeyboardFocusWithin}" Value="False" />
<Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="True" />
<Condition Binding="{Binding IsKeyboardFocusWithin, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}, Mode=FindAncestor}}" Value="False" />
</MultiDataTrigger.Conditions>
<MultiDataTrigger.Setters>
<Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" />
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}" />
<Setter Property="BorderBrush" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" />
</MultiDataTrigger.Setters>
<Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" />
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}" />
<Setter Property="BorderBrush" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
@ -268,14 +287,19 @@
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Tel_Nr_Verantwortlicher_Firma}" ClipboardContentBinding="{x:Null}" Header="Tel. Firma">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<DataGridTemplateColumn ClipboardContentBinding="{x:Null}" Header="Tel. Firma"><!--Binding="{Binding Tel_Nr_Verantwortlicher_Firma}"-->
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Tel_Nr_Verantwortlicher_Firma}" Background="Transparent" BorderThickness="0" VerticalAlignment="Center" HorizontalAlignment="Left" HorizontalContentAlignment="Center" Padding="5" PreviewTextInput="tbTel_Firma_PreviewTextInput"/>
</DataTemplate>
<!--<Style TargetType="{x:Type TextBlock}">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Padding" Value="5,0,0,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<EventSetter Event="PreviewTextInput" Handler="tbTel_Firma_PreviewTextInput"/>
</Style>-->
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding Anzahl_Begleiter}" ClipboardContentBinding="{x:Null}" Header="Anz. Begleitp.">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
@ -300,7 +324,33 @@
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Arbeitsbeginn, StringFormat=\{0:dd.MM.yyyy\}}" ClipboardContentBinding="{x:Null}" Header="Arbeitsbeginn">
<DataGridTemplateColumn ClipboardContentBinding="{x:Null}" Header="Arbeitsbeginn" Width="100">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DatePicker x:Name="dpDataGridArbeitsbeginn" Width="98" SelectedDate="{Binding Arbeitsbeginn, StringFormat=\{0:dd.MM.yyyy\}}" ToolTip="Datum über Kalender ändern" CalendarOpened="dpDataGridArbeitsbeginn_CalendarOpened" CalendarClosed="dpDataGridArbeitsbeginn_CalendarClosed" DateValidationError="dpArbeitsbeginn_DateValidationError">
<DatePicker.Resources>
<Style TargetType="{x:Type DatePickerTextBox}">
<Setter Property="IsReadOnly" Value="True"/>
</Style>
</DatePicker.Resources>
</DatePicker>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn ClipboardContentBinding="{x:Null}" Header="Arbeitsende" Width="100">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DatePicker x:Name="dpDataGridArbeitsende" Width="98" SelectedDate="{Binding Arbeitsende, StringFormat=\{0:dd.MM.yyyy\}}" ToolTip="Datum über Kalender ändern" CalendarOpened="dpDataGridArbeitsende_CalendarOpened" CalendarClosed="dpDataGridArbeitsende_CalendarClosed" DateValidationError="dpArbeitsende_DateValidationError">
<DatePicker.Resources>
<Style TargetType="{x:Type DatePickerTextBox}">
<Setter Property="IsReadOnly" Value="True"/>
</Style>
</DatePicker.Resources>
</DatePicker>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!--<DataGridTextColumn Binding="{Binding Arbeitsbeginn, StringFormat=\{0:dd.MM.yyyy\}}" ClipboardContentBinding="{x:Null}" Header="Arbeitsbeginn">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextAlignment" Value="Center"/>
@ -315,21 +365,43 @@
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Örtliche_Einweisung_bis, StringFormat=\{0:dd.MM.yyyy\}}" Header="Unterwiesen bis">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<!--<Setter Property="Background" Value="{Binding Örtliche_Einweisung_bis, StringFormat=\{0:dd.MM.yyyy\}, Converter={StaticResource ConvertDateToBackground}}"/>-->
<Setter Property="TextAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGridTextColumn>-->
<DataGridTemplateColumn Header="Unterwiesen bis">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<DatePicker x:Name="dpDataGridEinweisung" Width="98" SelectedDate="{Binding Örtliche_Einweisung_bis, StringFormat=\{0:dd.MM.yyyy\}}" ToolTip="Datum über Kalender ändern" CalendarOpened="dpDataGridEinweisung_CalendarOpened" CalendarClosed="dpDataGridEinweisung_CalendarClosed" DateValidationError="dpEinweisung_Bis_DateValidationError">
<DatePicker.Resources>
<Style TargetType="{x:Type DatePickerTextBox}">
<Setter Property="IsReadOnly" Value="True"/>
</Style>
</DatePicker.Resources>
</DatePicker>
<Button x:Name="btnDpDgEinweisungWoche" Width="15" Content="W" FontSize="12" Padding="-2" Foreground="Black" ToolTip="Unterweisung: Heute + 1 Woche" ToolTipOpening="btnDpDgEinweisung_ToolTipOpening" Click="btnDpDgEinweisung_Click"/>
<Button x:Name="btnDpDgEinweisungMonat" Width="15" Content="M" FontSize="12" Padding="-2" Foreground="Black" ToolTip="Unterweisung: Heute + 1 Monat" ToolTipOpening="btnDpDgEinweisung_ToolTipOpening" Click="btnDpDgEinweisung_Click"/>
<Button x:Name="btnDpDgEinweisungJahr" Width="15" Content="J" FontSize="12" Padding="-2" Foreground="Black" ToolTip="Unterweisung: Heute + 1 Jahr" ToolTipOpening="btnDpDgEinweisung_ToolTipOpening" Click="btnDpDgEinweisung_Click"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="BE-Fläche" MinWidth="150">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox x:Name="dg_cbBE" Template="{StaticResource ComboBoxControlTemplate1}" ItemsSource="{Binding BEItems, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:CreateFirma}}}" SelectedItem="{Binding BE, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" DropDownClosed="dg_cbBE_DropDownClosed" DropDownOpened="dg_cbBE_DropDownOpened">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!--<DataGridTextColumn Binding="{Binding Ansprechpartner_Intern}" ClipboardContentBinding="{x:Null}" Header="Anspr. intern"/>-->
<DataGridTemplateColumn Header="Anspr. intern" MinWidth="150">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox x:Name="dg_cbASP" Template="{DynamicResource ComboBoxControlTemplate1}" ItemsSource="{Binding asp, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:CreateFirma}}}" SelectedItem="{Binding Ansprechpartner_Intern, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" DropDownClosed="dg_cbAsp_DropDownClosed" DropDownOpened="dg_cbASP_DropDownOpened">
<ComboBox x:Name="dg_cbASP" Template="{StaticResource ComboBoxControlTemplate1}" ItemsSource="{Binding asp, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:CreateFirma}}}" SelectedItem="{Binding Ansprechpartner_Intern, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" DropDownClosed="dg_cbAsp_DropDownClosed" DropDownOpened="dg_cbASP_DropDownOpened">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}"/>
@ -349,22 +421,22 @@
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
<Button x:Name="btnClose" Content="Schließen" Margin="0,0,10,10" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="98" Height="28" Click="BtnClose_Click" TabIndex="16"/>
<Button x:Name="btnClose" Content="Schließen" FontSize="12" Padding="-2" Margin="0,0,10,10" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="98" Height="28" Click="BtnClose_Click" TabIndex="16"/>
<TextBox x:Name="tbAnzahl_Fzg" HorizontalAlignment="Left" Height="23" Margin="10,253,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="340" TabIndex="5" PreviewKeyDown="TextBoxes_PreviewKeyDown" PreviewTextInput="tbAnzahl_Fzg_PreviewTextInput" ToolTip="Nur Zahlen und max. 2 Stellen" CommandManager.PreviewExecuted="Textboxes_PreviewExecuted" ContextMenu="{x:Null}"/>
<TextBlock HorizontalAlignment="Left" Margin="10,232,0,0" TextWrapping="Wrap" VerticalAlignment="Top"><Run Text="Anzahl "/><Run Text="Fahrzeuge"/></TextBlock>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,232,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Text="Anzahl Fahrzeuge"/>
<TextBox x:Name="tbBeauftragte_Leistung" HorizontalAlignment="Left" Height="23" Margin="10,302,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="340" TabIndex="6" PreviewKeyDown="TbBeauftragte_Leistung_PreviewKeyDown"/>
<TextBlock HorizontalAlignment="Left" Margin="10,281,0,0" TextWrapping="Wrap" Text="Beauftragte Leistung" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Margin="170,330,0,0" TextWrapping="Wrap" Text="Arbeitsende bis" VerticalAlignment="Top"/>
<DatePicker x:Name="dpArbeitsende" HorizontalAlignment="Left" Margin="170,351,0,0" VerticalAlignment="Top" TabIndex="8" PreviewKeyDown="DpArbeitsende_PreviewKeyDown" IsTabStop="True"/>
<Button x:Name="btnEinweisung_1Jahr" Content="↑ Für ein Jahr" HorizontalAlignment="Left" Margin="245,425,0,0" VerticalAlignment="Top" Width="105" Click="BtnEinweisung_PreValues_Click" Padding="1" Height="24" TabIndex="12" ToolTip="Firma hat bereits eine Einweisung bekommen&#xA;Ablauf in einem Jahr wird automatisch eingetragen"/>
<Button x:Name="btnEinweisung_1Monat" Content="↑ Für einen Monat" HorizontalAlignment="Left" Margin="124,425,0,0" VerticalAlignment="Top" Width="116" Click="BtnEinweisung_PreValues_Click" Padding="1" Height="24" TabIndex="11" ToolTip="Firma hat bereits eine Einweisung bekommen&#xA;Ablauf in einem Monat wird automatisch eingetragen"/>
<Button x:Name="btnEinweisung_1Woche" Content="↑ Für eine Woche" HorizontalAlignment="Left" Margin="10,425,0,0" VerticalAlignment="Top" Width="109" Click="BtnEinweisung_PreValues_Click" Padding="1" Height="24" TabIndex="10" ToolTip="Firma hat bereits eine Einweisung bekommen&#xA;Ablauf in einer Woche wird automatisch eingetragen"/>
<Button x:Name="btnEinweisungFolgt" Content="↑ Einweisung folgt" HorizontalAlignment="Left" Margin="10,454,0,0" VerticalAlignment="Top" Width="165" Padding="1" Height="24" TabIndex="12" Click="BtnEinweisung_PreValues_Click" BorderBrush="#FFF50707" Background="#FFFF9191" ToolTip="Für Firmen die eine Einweisung (durch Projektleiter oä.) bekommen, aber bis jetzt keine haben"/>
<Button x:Name="btnDelete" Content="Markierte Firma löschen" Margin="0,10,10,0" VerticalAlignment="Top" HorizontalAlignment="Right" Width="187" Click="btnDelete_Click" IsEnabled="False"/>
<Button x:Name="btnBegleitung" Content="↑ Nur in Begleitung" HorizontalAlignment="Left" Margin="180,454,0,0" VerticalAlignment="Top" Width="170" Height="24" Background="#CCFFA200" BorderBrush="#FFFF8B00" Click="BtnEinweisung_PreValues_Click" ToolTip="Für Fimen die sich nur in Begleitung auf dem Gelände bewegen dürfen"/>
<Button x:Name="btnHelp" Content="Hilfe zur Tabelle" HorizontalAlignment="Left" Margin="435,11,0,0" VerticalAlignment="Top" Width="160" Click="btnHelp_Click"/>
<Canvas x:Name="canvasHelp" HorizontalAlignment="Center" Height="370" Margin="0" VerticalAlignment="Center" Width="600" Background="WhiteSmoke" Visibility="Collapsed">
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,281,0,0" TextWrapping="Wrap" Text="Beauftragte Leistung" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="170,379,0,0" TextWrapping="Wrap" Text="Arbeitsende bis" VerticalAlignment="Top"/>
<DatePicker x:Name="dpArbeitsende" HorizontalAlignment="Left" Margin="170,400,0,0" VerticalAlignment="Top" TabIndex="9" PreviewKeyDown="DpArbeitsende_PreviewKeyDown" IsTabStop="True" DateValidationError="dpArbeitsende_DateValidationError"/>
<Button x:Name="btnEinweisung_1Jahr" Content="↑ Für ein Jahr" FontSize="12" Padding="-2" HorizontalAlignment="Left" Margin="245,477,0,0" VerticalAlignment="Top" Width="105" Click="BtnEinweisung_PreValues_Click" Height="24" TabIndex="13" ToolTip="Firma hat bereits eine Einweisung bekommen&#xA;Ablauf in einem Jahr wird automatisch eingetragen"/>
<Button x:Name="btnEinweisung_1Monat" Content="↑ Für einen Monat" FontSize="12" Padding="-2" HorizontalAlignment="Left" Margin="124,477,0,0" VerticalAlignment="Top" Width="116" Click="BtnEinweisung_PreValues_Click" Height="24" TabIndex="12" ToolTip="Firma hat bereits eine Einweisung bekommen&#xA;Ablauf in einem Monat wird automatisch eingetragen"/>
<Button x:Name="btnEinweisung_1Woche" Content="↑ Für eine Woche" FontSize="12" Padding="-2" HorizontalAlignment="Left" Margin="10,477,0,0" VerticalAlignment="Top" Width="109" Click="BtnEinweisung_PreValues_Click" Height="24" TabIndex="11" ToolTip="Firma hat bereits eine Einweisung bekommen&#xA;Ablauf in einer Woche wird automatisch eingetragen"/>
<Button x:Name="btnEinweisungFolgt" Content="↑ Einweisung folgt" FontSize="12" Padding="-2" HorizontalAlignment="Left" Margin="10,503,0,0" VerticalAlignment="Top" Width="165" Height="24" TabIndex="14" Click="BtnEinweisung_PreValues_Click" BorderBrush="#FFF50707" Background="#FFFF9191" ToolTip="Für Firmen die eine Einweisung (durch Projektleiter oä.) bekommen, aber bis jetzt keine haben"/>
<Button x:Name="btnDelete" Content="Markierte Firma löschen" FontSize="12" Padding="-2" Margin="0,10,10,0" Height="23" VerticalAlignment="Top" HorizontalAlignment="Right" Width="187" Click="btnDelete_Click" IsEnabled="False"/>
<Button x:Name="btnBegleitung" Content="↑ Nur in Begleitung" FontSize="12" Padding="-2" HorizontalAlignment="Left" Margin="180,503,0,0" VerticalAlignment="Top" Width="170" Height="24" Background="#CCFFA200" BorderBrush="#FFFF8B00" Click="BtnEinweisung_PreValues_Click" ToolTip="Für Fimen die sich nur in Begleitung auf dem Gelände bewegen dürfen" TabIndex="15"/>
<Button x:Name="btnHelp" Content="Hilfe zur Tabelle" FontSize="12" Padding="-2" HorizontalAlignment="Left" Margin="435,11,0,0" Height="23" VerticalAlignment="Top" Width="160" Click="btnHelp_Click"/>
<Canvas x:Name="canvasHelp" Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" HorizontalAlignment="Center" Height="370" Margin="0" VerticalAlignment="Center" Width="600" Visibility="Collapsed">
<RichTextBox Height="350" Canvas.Left="10" Canvas.Top="10" Width="580" Background="{x:Null}" IsReadOnlyCaretVisible="True" Focusable="False" AllowDrop="False">
<FlowDocument>
<Paragraph>
@ -387,6 +459,7 @@
</Paragraph>
<Paragraph LineHeight="6">
<Run Foreground="Red" Text="Rote Zeilen "/>
<Run Text=" "/>
<Run Text="stehen für Einträge die mit &quot;Einweisung folgt&quot; angelegt wurden"/>
</Paragraph>
<Paragraph LineHeight="6" Margin="20,Auto,Auto,Auto">
@ -400,10 +473,12 @@
</Paragraph>
<Paragraph LineHeight="6" Margin="0,Auto,Auto,Auto">
<Run Foreground="#FFFFB533" Text="Gelbe Zeilen "/>
<Run Text=" "/>
<Run Text="stehen für Einträge die mit &quot;Nur in Begleitung&quot; angelegt wurden"/>
</Paragraph>
<Paragraph LineHeight="6" Margin="0,Auto,Auto,Auto" TextIndent="20">
<Run Text=" "/>
<Run Text=" "/>
<Run Foreground="Red" Text="Diese Firmen dürfen sich nur in Begleitung eines internen MA auf dem Gelände bewegen!"/>
</Paragraph>
<Paragraph LineHeight="6" Margin="0,Auto,Auto,Auto">
@ -414,14 +489,18 @@
</Paragraph>
<Paragraph LineHeight="6" Margin="0,Auto,Auto,Auto">
<Run Foreground="Red" Text="Änderungen werden in der Datenbank protokolliert!!"/>
</Paragraph>
</FlowDocument>
</RichTextBox>
<Button x:Name="btnCloseHelp" Content="Schließen" Width="96" HorizontalAlignment="Right" VerticalAlignment="Bottom" Canvas.Left="494" Canvas.Top="340" Click="btnCloseHelp_Click"/>
</Canvas>
<TextBlock x:Name="lblSearch" HorizontalAlignment="Left" Margin="625,15,0,0" TextWrapping="Wrap" Text="Suchen..." VerticalAlignment="Top" Height="16" Width="177" Foreground="Gray" Visibility="Visible"/>
<TextBox x:Name="tbSearch" HorizontalAlignment="Left" Margin="618,11,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="182" Height="23" TextChanged="TextBox_TextChanged" Background="Transparent" Visibility="Visible"/>
<mah:ProgressRing x:Name="searchProgress" HorizontalAlignment="Left" Margin="807,11,0,0" VerticalAlignment="Top" Height="23" Width="23" IsActive="True" Visibility="Collapsed"/>
</Grid>
</Window>

View File

@ -42,7 +42,14 @@ namespace ZKuP
set { aspVar = value; OnPropertyChanged(); }
}
//public List<string> Ansprechpartner { get; set; }
private List<string> BEitems;
public List<string> BEItems
{
get { return BEitems; }
set { BEitems = value; OnPropertyChanged(); }
}
System.Windows.Threading.DispatcherTimer searchTimer = new System.Windows.Threading.DispatcherTimer();
public CreateFirma()
@ -53,20 +60,26 @@ namespace ZKuP
updateList();
dgFirmen.Items.SortDescriptions.Clear();
dgFirmen.Items.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
dgFirmen.UpdateLayout();
Dispatcher.Invoke(() => dgFirmen.Columns.FirstOrDefault(c => c.Header.ToString() == "Name").SortDirection = ListSortDirection.Ascending);
asp = SQL.ReadListString("SELECT Name FROM zkup.ansprechpartner").Result;
asp = asp.OrderBy(p => p).ToList();
searchTimer.Interval = TimeSpan.FromSeconds(0.5);
searchTimer.Tick += SearchTimer_Tick;
cbAnsprechpartner_Intern.ItemsSource = asp;
BEItems = cbBE.Items.OfType<ComboBoxItem>().Select(p => p.Content.ToString()).ToList();
dpEinweisung_Bis.DisplayDateEnd = DateTime.Now + TimeSpan.FromDays(365);
}
private void updateList()
{
if (MainWindow.LoggedInRole == Roles.Admin || MainWindow.LoggedInRole == Roles.Pförtner)
if (MainWindow.LoggedInRole == Roles.Admin || MainWindow.LoggedInRole == Roles.Pförtner || MainWindow.LoggedInRole == Roles.Controller)
{
requestListAdmin();
}
@ -80,8 +93,11 @@ namespace ZKuP
{
firmen = SQL.ReadSQL($"SELECT * FROM zkup.firmen WHERE Ersteller = '{Environment.UserName}' " +
$"OR Ersteller = '{Environment.UserDomainName}{Environment.UserName}' " +
$"OR Ersteller = '{SQL.ReadSingleValue($"SELECT Vertreter FROM zkup.ansprechpartner WHERE Name = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'")}' " +
$"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'"
$"OR Ersteller = '{SQL.ReadSingleValue($"SELECT Vertreter FROM zkup.ansprechpartner WHERE Name = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
$"OR Ersteller = '{Environment.UserDomainName}{SQL.ReadSingleValue($"SELECT Vertreter FROM zkup.ansprechpartner WHERE Name = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
$"OR Ersteller = '{SQL.ReadSingleValue($"SELECT Name FROM zkup.ansprechpartner WHERE Vertreter = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
$"OR Ersteller = '{Environment.UserDomainName}{SQL.ReadSingleValue($"SELECT Name FROM zkup.ansprechpartner WHERE Vertreter = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
$"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}' ORDER BY Name ASC"
, firmen).Result;
FirmaView = Firma.DataTableToFirma(firmen);
dgFirmen.DataContext = firmen;
@ -89,9 +105,9 @@ namespace ZKuP
private void requestListAdmin()
{
firmen = SQL.ReadSQL("SELECT * FROM zkup.firmen", firmen).Result;
FirmaView = Firma.DataTableToFirma(firmen);
dgFirmen.DataContext = firmen;
firmen = SQL.ReadSQL("SELECT * FROM zkup.firmen ORDER BY Name ASC", firmen).Result;
FirmaView = Firma.DataTableToFirma(firmen);
dgFirmen.DataContext = firmen;
}
@ -105,170 +121,206 @@ namespace ZKuP
}
bool added = false;
private async void btnAdd_Click(object sender, RoutedEventArgs e)
{
if (string.IsNullOrWhiteSpace(tbName.Text))
try
{
MessageBox.Show("Namen eintragen!", "Fehler");
return;
}
else if (string.IsNullOrWhiteSpace(tbVerantwortlicher_MA.Text))
{
MessageBox.Show("Verantwortlichen MA eintragen!", "Fehler");
return;
}
else if (string.IsNullOrWhiteSpace(tbTel_Firma.Text))
{
MessageBox.Show("Telefonnummer der Firma eintragen!", "Fehler");
return;
}
else if (!dpArbeitsbeginn.SelectedDate.HasValue)
{
MessageBox.Show("Arbeitsbeginn eintragen!", "Fehler");
return;
}
else if (!dpArbeitsende.SelectedDate.HasValue)
{
MessageBox.Show("Arbeitsende eintragen!", "Fehler");
return;
}
else if (string.IsNullOrWhiteSpace(tbAnzahl_Fzg.Text))
{
MessageBox.Show("Anzahl Fahrzeuge eintragen!", "Fehler");
return;
}
else if (string.IsNullOrWhiteSpace(tbBeauftragte_Leistung.Text))
{
MessageBox.Show("Beauftragte Leistung eintragen!", "Fehler");
return;
}
else if (!dpEinweisung_Bis.SelectedDate.HasValue && (GetDPText() != "...Einweisung folgt..." && GetDPText() != "...Nur in Begleitung..."))
{
MessageBox.Show("'Einweisung bis' eintragen", "Fehler");
return;
}
else if (cbAnsprechpartner_Intern.SelectedIndex == -1)
{
MessageBox.Show("'Ansprechpartner intern' auswählen!", "Fehler");
return;
}
else if (!dpEinweisung_Bis.SelectedDate.HasValue && GetDPText() == "...Einweisung folgt...")
{
if (dpArbeitsende.SelectedDate.Value < dpArbeitsbeginn.SelectedDate.Value)
if (string.IsNullOrWhiteSpace(tbName.Text))
{
MessageBox.Show(this, "Arbeitsende darf nicht kleiner als Arbeitsbeginn sein", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
MessageBox.Show("Namen eintragen!", "Fehler");
return;
}
else if (dpArbeitsbeginn.SelectedDate.Value > dpArbeitsende.SelectedDate.Value)
else if (string.IsNullOrWhiteSpace(tbVerantwortlicher_MA.Text))
{
MessageBox.Show(this, "Arbeitsbeginn darf nicht größer als Arbeitsende sein", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
MessageBox.Show("Verantwortlichen MA eintragen!", "Fehler");
return;
}
else
else if (tbVerantwortlicher_MA.Text.ToList<char>().Distinct().Count() < 5)
{
if (MessageBox.Show(this, "Einweisung muss durchgeführt und manuell nachgetragen werden!!\n\nMit dem Hinzufügen fortfahren?", "Achtung!", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
MessageBox.Show("Verantwortlicher MA der Firma muss qualifiziert angegeben werden!\nFalls kein Verantwortlicher der Firma bekannt ist, den Namen des Erstellers eintragen", "Fehler");
return;
}
else if (string.IsNullOrWhiteSpace(tbTel_Firma.Text))
{
MessageBox.Show("Telefonnummer der Firma eintragen!", "Fehler");
return;
}
else if (tbTel_Firma.Text.ToList<char>().Distinct().Count() < 5)
{
MessageBox.Show("Telefonnummer der Firma muss qualifiziert angegeben werden!\nFalls keine Nummer des MA der Firma bekannt, die Nummer des Erstellers eintragen", "Fehler");
return;
}
else if (!System.Text.RegularExpressions.Regex.IsMatch(tbTel_Firma.Text, "^[0-9()+\\-/ ]*$"))
{
MessageBox.Show("Telefonnummer der Firma muss qualifiziert angegeben werden!\nFalls keine Nummer des MA der Firma bekannt, die Nummer des Erstellers eintragen", "Fehler");
return;
}
else if (!dpArbeitsbeginn.SelectedDate.HasValue)
{
MessageBox.Show("Arbeitsbeginn eintragen!", "Fehler");
return;
}
else if (!dpArbeitsende.SelectedDate.HasValue)
{
MessageBox.Show("Arbeitsende eintragen!", "Fehler");
return;
}
else if (string.IsNullOrWhiteSpace(tbAnzahl_Fzg.Text))
{
MessageBox.Show("Anzahl Fahrzeuge eintragen!", "Fehler");
return;
}
else if (string.IsNullOrWhiteSpace(tbBeauftragte_Leistung.Text))
{
MessageBox.Show("Beauftragte Leistung eintragen!", "Fehler");
return;
}
else if (tbBeauftragte_Leistung.Text.ToList<char>().Distinct().Count() < 3)
{
MessageBox.Show("Beauftragte Leistung muss qualifiziert angegeben werden!", "Fehler");
return;
}
else if (!dpEinweisung_Bis.SelectedDate.HasValue && (GetDPText() != "...Einweisung folgt..." && GetDPText() != "...Nur in Begleitung..."))
{
MessageBox.Show("'Einweisung bis' eintragen", "Fehler");
return;
}
else if (cbAnsprechpartner_Intern.SelectedIndex == -1)
{
MessageBox.Show("'Ansprechpartner intern' auswählen!", "Fehler");
return;
}
else if (!dpEinweisung_Bis.SelectedDate.HasValue && GetDPText() == "...Einweisung folgt...")
{
if (dpArbeitsende.SelectedDate.Value < dpArbeitsbeginn.SelectedDate.Value)
{
if (!System.Text.RegularExpressions.Regex.IsMatch(tbAnzahl_Begleiter.Text, "^[0-9]*$"))
MessageBox.Show(this, "Arbeitsende darf nicht kleiner als Arbeitsbeginn sein", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
else if (dpArbeitsbeginn.SelectedDate.Value > dpArbeitsende.SelectedDate.Value)
{
MessageBox.Show(this, "Arbeitsbeginn darf nicht größer als Arbeitsende sein", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
else
{
if (MessageBox.Show(this, "Einweisung muss durchgeführt und manuell nachgetragen werden!!\n\nMit dem Hinzufügen fortfahren?", "Achtung!", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
{
MessageBox.Show(this, "Anzahl Begleiter darf nur Zahlen enthalten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
else if (!System.Text.RegularExpressions.Regex.IsMatch(tbAnzahl_Fzg.Text, "^[0-9]*$"))
{
MessageBox.Show(this, "Anzahl Fzg. darf nur Zahlen enthalten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
else
{
await SQL.WriteSQL("INSERT INTO firmen (Name,Verantwortlicher_MA_Firma,Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleiter,Anzahl_Fzg,Beauftragte_Leistung,Arbeitsbeginn,Arbeitsende,Örtliche_Einweisung_bis,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Ersteller) VALUES " +
$"('{tbName.Text}','{tbVerantwortlicher_MA.Text}','{tbTel_Firma.Text}','{tbAnzahl_Begleiter.Text}','{tbAnzahl_Fzg.Text}','{tbBeauftragte_Leistung.Text}','{dpArbeitsbeginn.SelectedDate.Value.ToString("yyyy-MM-dd")}','{dpArbeitsende.SelectedDate.Value.ToString("yyyy-MM-dd")}','1902-01-01','{cbAnsprechpartner_Intern.Text}','{tbTel_Nr_Ansprechpartner_Intern.Text}','{Environment.UserName}')");
if (!System.Text.RegularExpressions.Regex.IsMatch(tbAnzahl_Begleiter.Text, "^[0-9]*$"))
{
MessageBox.Show(this, "Anzahl Begleiter darf nur Zahlen enthalten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
else if (!System.Text.RegularExpressions.Regex.IsMatch(tbAnzahl_Fzg.Text, "^[0-9]*$"))
{
MessageBox.Show(this, "Anzahl Fzg. darf nur Zahlen enthalten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
else
{
await SQL.WriteSQL("INSERT INTO firmen (Name,Verantwortlicher_MA_Firma,Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleiter,Anzahl_Fzg,Beauftragte_Leistung,Arbeitsbeginn,Arbeitsende,Örtliche_Einweisung_bis,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Ersteller) VALUES " +
$"('{tbName.Text}','{tbVerantwortlicher_MA.Text}','{tbTel_Firma.Text}','{tbAnzahl_Begleiter.Text}','{tbAnzahl_Fzg.Text}','{tbBeauftragte_Leistung.Text}','{dpArbeitsbeginn.SelectedDate.Value.ToString("yyyy-MM-dd")}','{dpArbeitsende.SelectedDate.Value.ToString("yyyy-MM-dd")}','1902-01-01','{cbAnsprechpartner_Intern.Text}','{tbTel_Nr_Ansprechpartner_Intern.Text}','{Environment.UserName}')");
updateList();
updateList();
dgFirmen.ScrollIntoView(dgFirmen.Items[dgFirmen.Items.Count - 1]); //scroll to last
dgFirmen.UpdateLayout();
ResetInput();
dgFirmen.ScrollIntoView(dgFirmen.Items[dgFirmen.Items.Count - 1]); //scroll to last
dgFirmen.UpdateLayout();
ResetInput();
}
}
}
}
}
else if (!dpEinweisung_Bis.SelectedDate.HasValue && GetDPText() == "...Nur in Begleitung...")
{
if (dpArbeitsende.SelectedDate.Value < dpArbeitsbeginn.SelectedDate.Value)
else if (!dpEinweisung_Bis.SelectedDate.HasValue && GetDPText() == "...Nur in Begleitung...")
{
MessageBox.Show(this, "Arbeitsende darf nicht kleiner als Arbeitsbeginn sein", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
else if (dpArbeitsbeginn.SelectedDate.Value > dpArbeitsende.SelectedDate.Value)
{
MessageBox.Show(this, "Arbeitsbeginn darf nicht größer als Arbeitsende sein", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
else
{
if (MessageBox.Show(this, "Firmen dürfen sich nur in Begleitung auf dem Gelände bewegen!!\n\nMit dem Hinzufügen fortfahren?", "Achtung!", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
if (dpArbeitsende.SelectedDate.Value < dpArbeitsbeginn.SelectedDate.Value)
{
if (!System.Text.RegularExpressions.Regex.IsMatch(tbAnzahl_Begleiter.Text, "^[0-9]*$"))
MessageBox.Show(this, "Arbeitsende darf nicht kleiner als Arbeitsbeginn sein", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
else if (dpArbeitsbeginn.SelectedDate.Value > dpArbeitsende.SelectedDate.Value)
{
MessageBox.Show(this, "Arbeitsbeginn darf nicht größer als Arbeitsende sein", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
else
{
if (MessageBox.Show(this, "Firmen dürfen sich nur in Begleitung auf dem Gelände bewegen!!\n\nMit dem Hinzufügen fortfahren?", "Achtung!", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
{
MessageBox.Show(this, "Anzahl Begleiter darf nur Zahlen enthalten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
else if (!System.Text.RegularExpressions.Regex.IsMatch(tbAnzahl_Fzg.Text, "^[0-9]*$"))
{
MessageBox.Show(this, "Anzahl Fzg. darf nur Zahlen enthalten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
else
{
await SQL.WriteSQL("INSERT INTO firmen (Name,Verantwortlicher_MA_Firma,Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleiter,Anzahl_Fzg,Beauftragte_Leistung,Arbeitsbeginn,Arbeitsende,Örtliche_Einweisung_bis,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Ersteller) VALUES " +
$"('{tbName.Text}','{tbVerantwortlicher_MA.Text}','{tbTel_Firma.Text}','{tbAnzahl_Begleiter.Text}','{tbAnzahl_Fzg.Text}','{tbBeauftragte_Leistung.Text}','{dpArbeitsbeginn.SelectedDate.Value.ToString("yyyy-MM-dd")}','{dpArbeitsende.SelectedDate.Value.ToString("yyyy-MM-dd")}','1903-01-01','{cbAnsprechpartner_Intern.Text}','{tbTel_Nr_Ansprechpartner_Intern.Text}','{Environment.UserName}')");
if (!System.Text.RegularExpressions.Regex.IsMatch(tbAnzahl_Begleiter.Text, "^[0-9]*$"))
{
MessageBox.Show(this, "Anzahl Begleiter darf nur Zahlen enthalten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
else if (!System.Text.RegularExpressions.Regex.IsMatch(tbAnzahl_Fzg.Text, "^[0-9]*$"))
{
MessageBox.Show(this, "Anzahl Fzg. darf nur Zahlen enthalten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
else
{
await SQL.WriteSQL("INSERT INTO firmen (Name,Verantwortlicher_MA_Firma,Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleiter,Anzahl_Fzg,Beauftragte_Leistung,Arbeitsbeginn,Arbeitsende,Örtliche_Einweisung_bis,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Ersteller) VALUES " +
$"('{tbName.Text}','{tbVerantwortlicher_MA.Text}','{tbTel_Firma.Text}','{tbAnzahl_Begleiter.Text}','{tbAnzahl_Fzg.Text}','{tbBeauftragte_Leistung.Text}','{dpArbeitsbeginn.SelectedDate.Value.ToString("yyyy-MM-dd")}','{dpArbeitsende.SelectedDate.Value.ToString("yyyy-MM-dd")}','1903-01-01','{cbAnsprechpartner_Intern.Text}','{tbTel_Nr_Ansprechpartner_Intern.Text}','{Environment.UserName}')");
updateList();
updateList();
dgFirmen.ScrollIntoView(dgFirmen.Items[dgFirmen.Items.Count - 1]); //scroll to last
dgFirmen.UpdateLayout();
ResetInput();
dgFirmen.ScrollIntoView(dgFirmen.Items[dgFirmen.Items.Count - 1]); //scroll to last
dgFirmen.UpdateLayout();
ResetInput();
}
}
}
}
}
else
{
if (!System.Text.RegularExpressions.Regex.IsMatch(tbAnzahl_Begleiter.Text, "^[0-9]*$"))
{
MessageBox.Show(this, "Anzahl Begleiter darf nur Zahlen enthalten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
else if (!System.Text.RegularExpressions.Regex.IsMatch(tbAnzahl_Fzg.Text, "^[0-9]*$"))
{
MessageBox.Show(this, "Anzahl Fzg. darf nur Zahlen enthalten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
else if (dpArbeitsende.SelectedDate.Value < dpArbeitsbeginn.SelectedDate.Value)
{
MessageBox.Show(this, "Arbeitsende darf nicht kleiner als Arbeitsbeginn sein", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
else if (dpArbeitsbeginn.SelectedDate.Value > dpArbeitsende.SelectedDate.Value)
{
MessageBox.Show(this, "Arbeitsbeginn darf nicht größer als Arbeitsende sein", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
else
{
await SQL.WriteSQL("INSERT INTO firmen (Name,Verantwortlicher_MA_Firma,Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleiter,Anzahl_Fzg,Beauftragte_Leistung,Arbeitsbeginn,Arbeitsende,Örtliche_Einweisung_bis,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,Ersteller) VALUES " +
$"('{tbName.Text}','{tbVerantwortlicher_MA.Text}','{tbTel_Firma.Text}','{tbAnzahl_Begleiter.Text}','{tbAnzahl_Fzg.Text}','{tbBeauftragte_Leistung.Text}','{dpArbeitsbeginn.SelectedDate.Value.ToString("yyyy-MM-dd")}','{dpArbeitsende.SelectedDate.Value.ToString("yyyy-MM-dd")}','{dpEinweisung_Bis.SelectedDate.Value.ToString("yyyy-MM-dd")}','{cbAnsprechpartner_Intern.Text}','{tbTel_Nr_Ansprechpartner_Intern.Text}','{Environment.UserName}')");
if (!System.Text.RegularExpressions.Regex.IsMatch(tbAnzahl_Begleiter.Text, "^[0-9]*$"))
{
MessageBox.Show(this, "Anzahl Begleiter darf nur Zahlen enthalten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
else if (!System.Text.RegularExpressions.Regex.IsMatch(tbAnzahl_Fzg.Text, "^[0-9]*$"))
{
MessageBox.Show(this, "Anzahl Fzg. darf nur Zahlen enthalten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
else if (dpArbeitsende.SelectedDate.Value < dpArbeitsbeginn.SelectedDate.Value)
{
MessageBox.Show(this, "Arbeitsende darf nicht kleiner als Arbeitsbeginn sein", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
else if (dpArbeitsbeginn.SelectedDate.Value > dpArbeitsende.SelectedDate.Value)
{
MessageBox.Show(this, "Arbeitsbeginn darf nicht größer als Arbeitsende sein", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
else
{
await SQL.WriteSQL("INSERT INTO firmen (Name,Verantwortlicher_MA_Firma,Tel_Nr_Verantwortlicher_Firma,Anzahl_Begleiter,Anzahl_Fzg,Beauftragte_Leistung,Arbeitsbeginn,Arbeitsende,Örtliche_Einweisung_bis,Ansprechpartner_Intern,Tel_Nr_Ansprechpartner_Intern,BE,BEint,Ersteller) VALUES " +
$"('{tbName.Text}','{tbVerantwortlicher_MA.Text}','{tbTel_Firma.Text}','{tbAnzahl_Begleiter.Text}','{tbAnzahl_Fzg.Text}','{tbBeauftragte_Leistung.Text}','{dpArbeitsbeginn.SelectedDate.Value.ToString("yyyy-MM-dd")}','{dpArbeitsende.SelectedDate.Value.ToString("yyyy-MM-dd")}','{dpEinweisung_Bis.SelectedDate.Value.ToString("yyyy-MM-dd")}','{cbAnsprechpartner_Intern.Text}','{tbTel_Nr_Ansprechpartner_Intern.Text}','{cbBE.Text}','{cbBE.SelectedIndex}','{Environment.UserName}')");
updateList();
updateList();
dgFirmen.ScrollIntoView(dgFirmen.Items[dgFirmen.Items.Count - 1]); //scroll to last
dgFirmen.UpdateLayout();
ResetInput();
dgFirmen.ScrollIntoView(dgFirmen.Items[dgFirmen.Items.Count - 1]); //scroll to last
dgFirmen.UpdateLayout();
ResetInput();
}
}
added = true;
}
catch (Exception)
{
}
finally
{
timer.Interval = TimeSpan.FromMilliseconds(50);
timer.Tick += Timer_Tick;
timer.Start();
}
}
@ -283,13 +335,14 @@ namespace ZKuP
dpArbeitsbeginn.Text = "";
dpArbeitsende.Text = "";
dpEinweisung_Bis.Text = "";
cbBE.SelectedIndex = -1;
cbAnsprechpartner_Intern.SelectedIndex = -1;
tbTel_Nr_Ansprechpartner_Intern.Text = "";
}
private void CbAnsprechpartner_Intern_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string test = SQL.ReadSingleValueAsync($"SELECT Tel_Nr FROM zkup.ansprechpartner WHERE Name='{cbAnsprechpartner_Intern.SelectedValue}'").Result;
string test = SQL.ReadSingleValue($"SELECT Tel_Nr FROM zkup.ansprechpartner WHERE Name='{cbAnsprechpartner_Intern.SelectedValue}'");
tbTel_Nr_Ansprechpartner_Intern.Text = test;
}
@ -315,10 +368,8 @@ namespace ZKuP
private async void DgFirmen_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
try
{
var header = e.Column.Header;
var newValue = (e.EditingElement as TextBox).Text;
@ -361,8 +412,24 @@ namespace ZKuP
await SQL.WriteSQL($"UPDATE firmen SET Verantwortlicher_MA_Firma = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
break;
case "Tel. Firma":
await SQL.WriteSQL($"UPDATE firmen SET Tel_Nr_Verantwortlicher_Firma = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
break;
if (!System.Text.RegularExpressions.Regex.IsMatch(newValue, "^[0-9()+\\-/ ]*$"))
{
MessageBox.Show("Telefonnummer der Firma muss qualifiziert angegeben werden!\nFalls keine Nummer des MA der Firma bekannt, die Nummer des Erstellers eintragen", "Fehler");
break;
//new Popup() { Child = new TextBlock() { Text = $"'{tbTel_Firma.Text.Last()}' ist kein gültiges Zeichen\nTelefonnummer muss qualifiziert eingetragen werden!", Foreground = new SolidColorBrush(Colors.White), Margin = new Thickness(5) }, IsOpen = true, StaysOpen = false, Placement = PlacementMode.Mouse };
//break;
}
if (newValue.ToList<char>().Distinct().Count() < 5)
{
MessageBox.Show("Telefonnummer der Firma muss qualifiziert angegeben werden!\nFalls keine Nummer des MA der Firma bekannt, die Nummer des Erstellers eintragen", "Fehler");
break;
}
else
{
await SQL.WriteSQL($"UPDATE firmen SET Tel_Nr_Verantwortlicher_Firma = '{newValue}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
break;
}
case "Anz. Begleitp.":
if (!System.Text.RegularExpressions.Regex.IsMatch(newValue, "^[0-9]*$"))
MessageBox.Show(this, "Anzahl Begleiter darf nur Zahlen enthalten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
@ -420,7 +487,6 @@ namespace ZKuP
dgFirmen.ScrollIntoView(dgFirmen.Items[index]);
}
catch (Exception ex)
{
Log.WriteLog(ex.ToString());
@ -446,16 +512,32 @@ namespace ZKuP
{
try
{
if (index > 0 && dgFirmen.Items.Count >= index)
if (added)
{
var max = 0;
for (var i = 0; i < dgFirmen.Items.Count; i++)
{
var j = (int)(dgFirmen.Items[i] as System.Data.DataRowView).Row.ItemArray[0];
if (max < j)
{
max = j;
index = i;
}
}
dgFirmen.SelectedIndex = index;
dgFirmen.ScrollIntoView(dgFirmen.Items[index], dgFirmen.Columns[0]);
//DataGridRow row = (DataGridRow)dgFirmen.ItemContainerGenerator.ContainerFromIndex(index - 1);
//row.Focusable = true;
//row.MoveFocus(new TraversalRequest(FocusNavigationDirection.Right));
added = false;
}
else
{
if (index > 0 && dgFirmen.Items.Count >= index)
{
dgFirmen.SelectedIndex = index;
dgFirmen.ScrollIntoView(dgFirmen.Items[index], dgFirmen.Columns[0]);
}
}
}
catch (Exception ex)
@ -601,7 +683,7 @@ namespace ZKuP
var row = dg.SelectedItem as DataRowView;
var arr = row.Row.ItemArray;
if (MessageBox.Show(this, $"Markierte Firma wirklich entfernen?", "Firma entfernen?", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes)
if (MessageBox.Show(this, $"Markierte Firma '{arr[1]}' wirklich entfernen?", "Firma entfernen?", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes)
{
deleteRow(arr);
}
@ -688,6 +770,59 @@ namespace ZKuP
}
private void dg_cbBE_DropDownOpened(object sender, EventArgs e)
{
oldValue = (sender as ComboBox) != null ? (sender as ComboBox).Text : "";
}
private async void dg_cbBE_DropDownClosed(object sender, EventArgs e)
{
var box = sender as ComboBox;
DataGridRow dataGridRow = Helper.FindParent<DataGridRow>(box);
int index = dataGridRow.GetIndex();
var id = ((System.Data.DataRowView)dataGridRow.DataContext).Row.ItemArray[0];
if ((sender as ComboBox).SelectedIndex != -1 && (sender as ComboBox).SelectedItem.ToString() != "")
{
if (oldValue != box.Text)
{
if (MessageBox.Show(this, $"Möchten Sie den Eintrag '{oldValue}' in der Spalte 'BE-Fläche' sicher zu '{box.Text}' ändern?", "Sicher ändern?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
await SQL.WriteSQL($"UPDATE firmen SET BE = '{box.Text}',BEint = '{box.SelectedIndex}', Bearbeiter = '{Environment.UserName}' WHERE idfirmen = '{id}'");
updateList();
dgFirmen.RowValidationErrorTemplate = new ControlTemplate();
dgFirmen.SelectedIndex = (index);
dgFirmen.ScrollIntoView(dgFirmen.Items[index]);
}
}
}
else if((sender as ComboBox).SelectedIndex != -1 && (sender as ComboBox).SelectedItem.ToString() == "")
{
if (oldValue != box.Text)
{
if (MessageBox.Show(this, $"Möchten Sie den Eintrag '{oldValue}' in der Spalte 'BE-Fläche' sicher leeren?", "Sicher ändern?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
await SQL.WriteSQL($"UPDATE firmen SET BE = '{box.Text}',BEint = '{box.SelectedIndex}', Bearbeiter = '{Environment.UserName}' WHERE idfirmen = '{id}'");
updateList();
dgFirmen.RowValidationErrorTemplate = new ControlTemplate();
dgFirmen.SelectedIndex = (index);
dgFirmen.ScrollIntoView(dgFirmen.Items[index]);
}
}
}
}
private void btnHelp_Click(object sender, RoutedEventArgs e)
{
canvasHelp.Visibility = Visibility.Visible;
@ -717,12 +852,238 @@ namespace ZKuP
e.Handled = true;
}
}
}
private void tbTel_Nr_Ansprechpartner_Intern_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
if (Helper.OverMaxLength((sender as TextBox).Text, 45))
{
e.Handled = true;
MessageBox.Show("Maximal 45 Zeichen!", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
private void dpArbeitsbeginn_DateValidationError(object sender, DatePickerDateValidationErrorEventArgs e)
{
MessageBox.Show("Kein gültiges Datumsformat in Feld 'Arbeitsbeginn'", "Fehler", MessageBoxButton.OK, MessageBoxImage.Warning);
}
private void dpEinweisung_Bis_DateValidationError(object sender, DatePickerDateValidationErrorEventArgs e)
{
MessageBox.Show("Kein gültiges Datumsformat in Feld 'Einweisung bis'", "Fehler", MessageBoxButton.OK, MessageBoxImage.Warning);
}
private void dpArbeitsende_DateValidationError(object sender, DatePickerDateValidationErrorEventArgs e)
{
MessageBox.Show("Kein gültiges Datumsformat in Feld 'Arbeitsende'", "Fehler", MessageBoxButton.OK, MessageBoxImage.Warning);
}
private void dpDataGridArbeitsbeginn_CalendarOpened(object sender, RoutedEventArgs e)
{
oldValue = (sender as DatePicker).Text;
}
private async void dpDataGridArbeitsbeginn_CalendarClosed(object sender, RoutedEventArgs e)
{
if (oldValue != (sender as DatePicker).Text && (sender as DatePicker).SelectedDate.HasValue)
{
if (MessageBox.Show(this, $"Möchten Sie den Eintrag '{oldValue}' in der Spalte 'Arbeitsbeginn' sicher zu '{(sender as DatePicker).Text}' ändern?", "Sicher ändern?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
var dp = sender as DatePicker;
DataGridRow dataGridRow = Helper.FindParent<DataGridRow>(dp);
int index = dataGridRow.GetIndex();
var id = (DataGridRow.GetRowContainingElement((sender as DatePicker)).Item as DataRowView).Row.ItemArray[0];
await SQL.WriteSQL($"UPDATE zkup.firmen SET Arbeitsbeginn = '{(sender as DatePicker).SelectedDate.Value.ToString("yyyy-MM-dd")}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
if (Convert.ToDateTime(SQL.ReadSingleValue($"SELECT Arbeitsende FROM zkup.firmen WHERE idFirmen = '{id}'")) < (sender as DatePicker).SelectedDate.Value)
{
MessageBox.Show(this, "Arbeitsende darf nicht kleiner als Arbeitsbeginn sein\nDatum wird automatisch angepasst", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
await SQL.WriteSQL($"UPDATE zkup.firmen SET Arbeitsende = '{(sender as DatePicker).SelectedDate.Value.ToString("yyyy-MM-dd")}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
}
updateList();
dgFirmen.SelectedIndex = (index);
dgFirmen.ScrollIntoView(dgFirmen.Items[index]);
}
else (sender as DatePicker).SelectedDate = Convert.ToDateTime(oldValue);
}
}
private void dpDataGridArbeitsende_CalendarOpened(object sender, RoutedEventArgs e)
{
oldValue = (sender as DatePicker).Text;
}
private async void dpDataGridArbeitsende_CalendarClosed(object sender, RoutedEventArgs e)
{
if (oldValue != (sender as DatePicker).Text && (sender as DatePicker).SelectedDate.HasValue)
{
if (MessageBox.Show(this, $"Möchten Sie den Eintrag '{oldValue}' in der Spalte 'Arbeitsende' sicher zu '{(sender as DatePicker).Text}' ändern?", "Sicher ändern?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
var dp = sender as DatePicker;
DataGridRow dataGridRow = Helper.FindParent<DataGridRow>(dp);
int index = dataGridRow.GetIndex();
var id = (DataGridRow.GetRowContainingElement((sender as DatePicker)).Item as DataRowView).Row.ItemArray[0];
await SQL.WriteSQL($"UPDATE zkup.firmen SET Arbeitsende = '{(sender as DatePicker).SelectedDate.Value.ToString("yyyy-MM-dd")}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
if (Convert.ToDateTime(SQL.ReadSingleValue($"SELECT Arbeitsbeginn FROM zkup.firmen WHERE idFirmen = '{id}'")) > (sender as DatePicker).SelectedDate.Value)
{
MessageBox.Show(this, "Arbeitsbeginn darf nicht größer als Arbeitsende sein\nDatum wird automatisch angepasst", "Achtung!", MessageBoxButton.OK, MessageBoxImage.Warning);
await SQL.WriteSQL($"UPDATE zkup.firmen SET Arbeitsbeginn = '{(sender as DatePicker).SelectedDate.Value.ToString("yyyy-MM-dd")}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
}
updateList();
dgFirmen.SelectedIndex = (index);
dgFirmen.ScrollIntoView(dgFirmen.Items[index]);
}
else
{
DateTime result = DateTime.Now;
var date = DateTime.TryParse(oldValue, out result);
if (date)
(sender as DatePicker).SelectedDate = result;
else MessageBox.Show("Fehlerhaftes Datum gewählt", "Fehlerhaftes Datum", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
}
private void dpDataGridEinweisung_CalendarOpened(object sender, RoutedEventArgs e)
{
oldValue = (sender as DatePicker).Text;
}
private async void dpDataGridEinweisung_CalendarClosed(object sender, RoutedEventArgs e)
{
if (oldValue != (sender as DatePicker).Text)
{
if (MessageBox.Show(this, $"Möchten Sie den Eintrag '{oldValue}' in der Spalte 'Einweisung bis' sicher zu '{(sender as DatePicker).Text}' ändern?", "Sicher ändern?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
var dp = sender as DatePicker;
DataGridRow dataGridRow = Helper.FindParent<DataGridRow>(dp);
int index = dataGridRow.GetIndex();
var id = (DataGridRow.GetRowContainingElement((sender as DatePicker)).Item as DataRowView).Row.ItemArray[0];
await SQL.WriteSQL($"UPDATE zkup.firmen SET Örtliche_Einweisung_bis = '{(sender as DatePicker).SelectedDate.Value.ToString("yyyy-MM-dd")}', Bearbeiter = '{Environment.UserName}' WHERE idFirmen = '{id}'");
updateList();
dgFirmen.SelectedIndex = (index);
dgFirmen.ScrollIntoView(dgFirmen.Items[index]);
}
else (sender as DatePicker).SelectedDate = Convert.ToDateTime(oldValue);
}
}
private void btnDpDgEinweisung_ToolTipOpening(object sender, ToolTipEventArgs e)
{
string unit = "";
string date = "";
switch((sender as Button).Name)
{
case "btnDpDgEinweisungWoche":
unit = "Woche";
date = DateTime.Now.Date.AddDays(7).ToShortDateString();
break;
case "btnDpDgEinweisungMonat":
unit = "Monat";
date = DateTime.Now.Date.AddMonths(1).ToShortDateString();
break;
case "btnDpDgEinweisungJahr":
unit = "Jahr";
date = DateTime.Now.Date.AddYears(1).ToShortDateString();
break;
default:
unit = "Woche";
date = DateTime.Now.Date.AddDays(7).ToShortDateString();
break;
}
(sender as Button).ToolTip = $"Setzt das Einweisungsdatum auf Heute + 1 {unit} ({date})";
}
private void btnDpDgEinweisung_Click(object sender, RoutedEventArgs e)
{
var btn = sender as Button;
DataGridRow dataGridRow = Helper.FindParent<DataGridRow>(btn);
var dp = (dgFirmen.Columns[8].GetCellContent(dataGridRow) as ContentPresenter).ContentTemplate.FindName("dpDataGridEinweisung", (dgFirmen.Columns[8].GetCellContent(dataGridRow) as ContentPresenter)) as DatePicker;
oldValue = dp.Text;
switch (btn.Name)
{
case "btnDpDgEinweisungWoche":
dp.SelectedDate = DateTime.Now.Date.AddDays(7);
break;
case "btnDpDgEinweisungMonat":
dp.SelectedDate = DateTime.Now.Date.AddMonths(1);
break;
case "btnDpDgEinweisungJahr":
dp.SelectedDate = DateTime.Now.Date.AddYears(1);
break;
default:
dp.SelectedDate = DateTime.Now.Date.AddDays(7);
break;
}
dpDataGridEinweisung_CalendarClosed(dp, null);
}
string searchTerm = "";
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
if (searchTerm == "")
{
lblSearch.Visibility = Visibility.Visible;
searchProgress.Visibility = Visibility.Visible;
}
else
{
lblSearch.Visibility = Visibility.Collapsed;
searchProgress.Visibility = Visibility.Visible;
}
searchTerm = (sender as TextBox).Text;
searchTimer.Start();
}
private void SearchTimer_Tick(object sender, EventArgs e)
{
if (searchTerm == "")
{
firmen.DefaultView.RowFilter = $"";
Task.Run(() => FirmaView = Firma.DataTableToFirma(firmen));
dgFirmen.DataContext = firmen;
}
else
{
firmen.DefaultView.RowFilter = $"Name LIKE '%{searchTerm}%' OR Verantwortlicher_MA_Firma LIKE '%{searchTerm}%'";
Task.Run(() => FirmaView = Firma.DataTableToFirma(firmen));
dgFirmen.DataContext = firmen;
}
searchProgress.Visibility = Visibility.Collapsed;
searchTimer.Stop();
}
private void tbTel_Firma_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
if (!System.Text.RegularExpressions.Regex.IsMatch(e.Text, "^[0-9()+\\-/ ]*$"))
{
e.Handled = true;
new Popup() { Child = new TextBlock() { Text = $"'{e.Text}' ist kein gültiges Zeichen\nTelefonnummer muss qualifiziert eingetragen werden!", Foreground = new SolidColorBrush(Colors.White), Margin = new Thickness(5) }, IsOpen = true, StaysOpen = false, Placement = PlacementMode.Mouse };
}
}
}
public class Firma
{
string Name;
public string Name;
string Verantwortlicher_MA_Firma;
string Tel_Nr_Verantwortlicher_Firma;
string Anzahl_Begleiter;

75
ZKuP/CreateMcFitUser.xaml Normal file
View File

@ -0,0 +1,75 @@
<Window x:Class="ZKuP.CreateMcFitUser"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ZKuP"
mc:Ignorable="d"
Title="McFit User erstellen" Height="599.907" Width="438" ResizeMode="NoResize">
<Grid>
<Grid>
<TextBlock HorizontalAlignment="Left" Height="23" Margin="10,41,0,0" TextWrapping="Wrap" Text="Vorname" VerticalAlignment="Top" Width="402" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<TextBlock HorizontalAlignment="Left" Height="23" Margin="10,103,0,0" TextWrapping="Wrap" Text="Nachname" VerticalAlignment="Top" Width="402" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<TextBlock HorizontalAlignment="Left" Height="23" Margin="10,161,0,0" TextWrapping="Wrap" Text="Abteilung" VerticalAlignment="Top" Width="402" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<TextBlock HorizontalAlignment="Left" Height="23" Margin="10,219,0,0" TextWrapping="Wrap" Text="Handynummer" VerticalAlignment="Top" Width="402" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<TextBlock HorizontalAlignment="Left" Height="23" Margin="10,281,0,0" TextWrapping="Wrap" Text="Email" VerticalAlignment="Top" Width="402" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<TextBox x:Name="tbVorname" HorizontalAlignment="Left" Height="23" Margin="10,64,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="402"/>
<TextBox x:Name="tbNachname" HorizontalAlignment="Left" Height="23" Margin="10,126,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="402"/>
<TextBox x:Name="tbAbteilung" HorizontalAlignment="Left" Height="23" Margin="10,184,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="402" TextChanged="tbAbteilung_TextChanged"/>
<TextBox x:Name="tbHandynr" HorizontalAlignment="Left" Height="23" Margin="10,242,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="402"/>
<TextBox x:Name="tbEmail" HorizontalAlignment="Left" Height="23" Margin="10,304,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="402"/>
<Button x:Name="btnAddUser" Content="Benutzer erstellen" Margin="10,432,10,10" Click="btnAddUser_Click"/>
</Grid>
<Grid x:Name="gridMcFitDisclaimer" Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" Visibility="Visible">
<RichTextBox Margin="10,10,10,54" IsReadOnly="True">
<FlowDocument>
<Paragraph FontSize="14.6666666666667" FontFamily="Calibri" Margin="0,0,0,10.67" TextAlignment="Left">
<Run Text="Einwilligungserklärung gemäß DSGVO in die Verarbeitung von Daten durch P.FBW-M."/>
</Paragraph>
<Paragraph FontSize="14.6666666666667" FontFamily="Calibri" Margin="0,0,0,10.67" TextAlignment="Left">
<Span>
<Run Text="Zur Überprüfung ob eine Berechtigung für die Nutzung der McFit Mitgliedskarte vorliegt und zur Nachverfolgung der Karte werden folgende personenbezogen Daten verarbeitet: "/>
</Span>
<Run Text=" "/>
<Span FontSize="14.6666666666667" FontFamily="Calibri">
<LineBreak/>
</Span>
<Run Text=" "/>
<Run Text="Name, Vorname, Abteilung, private Handynummer,Email"/>
</Paragraph>
<Paragraph FontSize="14.6666666666667" FontFamily="Calibri" Margin="0,0,0,10.67" TextAlignment="Left">
<Run Text="Die oben genannten Daten werden zum Zweck der Prüfung auf berechtig und Nachverfolgung der Aus- und Rückgabe erhoben und zudem auf den Servern von P.FBW-M gespeichert. Die Daten können nur von berechtigten Personen eingesehen und bearbeitet werden. Sollten weitere Daten benötigt werden, braucht es dafür separat wieder eine Zustimmung des Nutzers."/>
</Paragraph>
<Paragraph FontSize="14.6666666666667" FontFamily="Calibri" Margin="0,0,0,10.67" TextAlignment="Left">
<Span TextDecorations="Underline">
<Run Text="Widerrufsrecht:"/>
</Span>
<Run Text=" "/>
<Run Text=" Der Zustimmende hat das Recht, diese Einwilligung jederzeit ohne Angabe einer Begründung mit Wirkung für die Zukunft zu widerrufen. Hierfür genügt eine E-Mail an"/>
</Paragraph>
<Paragraph FontSize="14.6666666666667" FontFamily="Calibri" Margin="0,0,0,10.67" TextAlignment="Left">
<Hyperlink NavigateUri="mailto:Infrastuktur-Werk-M%C3%BCnchen@deutschebahn.com">
<Span Foreground="#FF0563C1" TextDecorations="Underline">
<Run Text="Infrastuktur-Werk-München@deutschebahn.com"/>
</Span>
</Hyperlink>
</Paragraph>
<Paragraph FontSize="14.6666666666667" FontFamily="Calibri" Margin="0,0,0,10.67" TextAlignment="Left">
<Run Text="Die Rechtmäßigkeit, der aufgrund der Einwilligung bis zum Widerruf erfolgten Verarbeitung wird durch den Wiederruf nicht berührt. "/>
</Paragraph>
<Paragraph FontSize="14.6666666666667" FontFamily="Calibri" Margin="0,0,0,10.67" TextAlignment="Left">
<Run/>
</Paragraph>
<Paragraph FontSize="14.6666666666667" FontFamily="Calibri" Margin="0,0,0,10.67" TextAlignment="Center">
<Run Foreground="Red" FontWeight="Bold" Text="Bei Verlust der Karte sind die dadurch entstehenden Kosten vom Mitarbeiter zu tragen."/>
</Paragraph>
</FlowDocument>
</RichTextBox>
<Button x:Name="btnAccept" Content="Akzeptieren" Height="35" Margin="10,0,0,14" Click="btnAccept_Click" VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="175"/>
<Button x:Name="btnDecline" Content="Ablehnen" Height="35" Margin="0,0,10,14" Width="175" Click="btnDecline_Click" VerticalAlignment="Bottom" HorizontalAlignment="Right"/>
</Grid>
</Grid>
</Window>

View File

@ -0,0 +1,72 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace ZKuP
{
/// <summary>
/// Interaktionslogik für CreateMcFitUser.xaml
/// </summary>
public partial class CreateMcFitUser : Window
{
public CreateMcFitUser()
{
InitializeComponent();
gridMcFitDisclaimer.Visibility = Visibility.Visible;
}
private void btnAccept_Click(object sender, RoutedEventArgs e)
{
gridMcFitDisclaimer.Visibility = Visibility.Collapsed;
}
private void btnDecline_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
private async void btnAddUser_Click(object sender, RoutedEventArgs e)
{
if(tbVorname.Text != "" &&
tbNachname.Text != "" &&
tbAbteilung.Text != "" &&
tbHandynr.Text != "" &&
tbEmail.Text != "")
{
await SQL.WriteSQL($"INSERT INTO zkup.mcFitUsers (Vorname, Name, Abteilung, Handynr, Email) VALUES ('{tbVorname.Text}','{tbNachname.Text}','{tbAbteilung.Text}','{tbHandynr.Text}','{tbEmail.Text}')");
var exist = await SQL.RowExists("mcFitUsers", "Email", tbEmail.Text);
if (exist)
{
MessageBox.Show($"Der User für McFit:\n\n{tbVorname.Text} {tbNachname.Text}\n\nwurde erfolgreich erstellt", "User erfolgreich erstellt", MessageBoxButton.OK, MessageBoxImage.Information);
this.Close();
}
else
{
MessageBox.Show($"Der User für McFit:\n\n{tbVorname.Text} {tbNachname.Text}\n\nkonnte nicht erstellt werden\nBitte in einigen Minuten nochmal probieren\nBei fortlaufenden Problemen bitte an Marcus Bachler wenden", "User erfolgreich erstellt", MessageBoxButton.OK, MessageBoxImage.Error);
this.Close();
}
}
else
{
MessageBox.Show("Alle Felder müssen ausgefüllt werden", "Fehler", MessageBoxButton.OK, MessageBoxImage.Warning);
}
}
private void tbAbteilung_TextChanged(object sender, TextChangedEventArgs e)
{
}
}
}

View File

@ -0,0 +1,12 @@
<Window x:Class="ZKuP.CreateParkEmailUser"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ZKuP"
mc:Ignorable="d"
Title="CreateParkEmailUser" Height="450" Width="800">
<Grid>
</Grid>
</Window>

View File

@ -0,0 +1,27 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace ZKuP
{
/// <summary>
/// Interaktionslogik für CreateParkEmailUser.xaml
/// </summary>
public partial class CreateParkEmailUser : Window
{
public CreateParkEmailUser()
{
InitializeComponent();
}
}
}

View File

@ -5,7 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ZKuP"
mc:Ignorable="d"
Title="Parkausweis beantragen" Height="800" Width="330" MinWidth="330" MinHeight="707">
Title="Parkausweis beantragen" Height="810" Width="335" MinWidth="330" MinHeight="707">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
@ -23,22 +23,22 @@
<RowDefinition x:Name="CommentRow" Height="2*" />
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Margin="10,5,10,0" TextWrapping="Wrap" Text="Vorname*" VerticalAlignment="Top"/>
<TextBox x:Name="tbVorname" Margin="10,26,10,0" Padding="0,4,0,0" TextWrapping="Wrap" TextChanged="Textboxes_Changed" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<TextBlock Margin="10,5,10,0" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" TextWrapping="Wrap" Text="Vorname*" VerticalAlignment="Top"/>
<TextBox x:Name="tbVorname" Margin="10,26,10,0" Height="25" Padding="0,4,0,0" TextWrapping="Wrap" TextChanged="Textboxes_Changed" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<TextBlock Margin="10,5,10,0" TextWrapping="Wrap" Text="Nachname*" VerticalAlignment="Top" Grid.Row="1"/>
<TextBox x:Name="tbNachname" Margin="10,26,10,0" Padding="0,4,0,0" TextWrapping="Wrap" Grid.Row="1" TextChanged="Textboxes_Changed" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<TextBlock Margin="10,5,10,0" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" TextWrapping="Wrap" Text="Nachname*" VerticalAlignment="Top" Grid.Row="1"/>
<TextBox x:Name="tbNachname" Margin="10,26,10,0" Height="25" Padding="0,4,0,0" TextWrapping="Wrap" Grid.Row="1" TextChanged="Textboxes_Changed" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<TextBlock Margin="10,5,10,0" TextWrapping="Wrap" Text="E-Mail*" VerticalAlignment="Top" Grid.Row="2"/>
<TextBox x:Name="tbEmail" Margin="10,26,10,0" Padding="0,4,0,0" TextWrapping="Wrap" Grid.Row="2" TextChanged="Textboxes_Changed" PreviewKeyDown="TextBoxes_PreviewKeyDown" PreviewLostKeyboardFocus="tbEmail_PreviewLostKeyboardFocus"/>
<TextBlock Margin="10,5,10,0" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" TextWrapping="Wrap" Text="E-Mail*" VerticalAlignment="Top" Grid.Row="2"/>
<TextBox x:Name="tbEmail" Margin="10,26,10,0" Height="25" Padding="0,4,0,0" TextWrapping="Wrap" Grid.Row="2" TextChanged="Textboxes_Changed" PreviewKeyDown="TextBoxes_PreviewKeyDown" PreviewLostKeyboardFocus="tbEmail_PreviewLostKeyboardFocus"/>
<TextBlock Margin="10,5,10,0" TextWrapping="Wrap" Text="Telefon" VerticalAlignment="Top" Grid.Row="3"/>
<TextBox x:Name="tbTelefon" Margin="10,26,10,0" Padding="0,4,0,0" TextWrapping="Wrap" Grid.Row="3" TextChanged="Textboxes_Changed" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<TextBlock Margin="10,5,10,0" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" TextWrapping="Wrap" Text="Telefon*" VerticalAlignment="Top" Grid.Row="3"/>
<TextBox x:Name="tbTelefon" Margin="10,26,10,0" Height="25" Padding="0,4,0,0" TextWrapping="Wrap" Grid.Row="3" TextChanged="Textboxes_Changed" PreviewKeyDown="TextBoxes_PreviewKeyDown" PreviewLostKeyboardFocus="tbTelefon_PreviewLostKeyboardFocus"/>
<TextBlock Margin="10,5,10,0" TextWrapping="Wrap" Text="Abteilung*" VerticalAlignment="Top" Grid.Row="4"/>
<TextBox x:Name="tbAbteilung" Margin="10,26,10,0" Padding="0,4,0,0" TextWrapping="Wrap" Grid.Row="4" TextChanged="Textboxes_Changed" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<TextBlock Margin="10,5,10,0" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" TextWrapping="Wrap" Text="Abteilung*" VerticalAlignment="Top" Grid.Row="4"/>
<TextBox x:Name="tbAbteilung" Margin="10,26,10,0" Height="25" Padding="0,4,0,0" TextWrapping="Wrap" Grid.Row="4" TextChanged="Textboxes_Changed" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<TextBlock Margin="10,5,10,0" TextWrapping="Wrap" Text="Firma*" VerticalAlignment="Top" Grid.Row="5"/>
<TextBlock Margin="10,5,10,0" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" TextWrapping="Wrap" Text="Firma*" VerticalAlignment="Top" Grid.Row="5"/>
<ComboBox x:Name="cbFirma" Margin="10,27.5,10,0" Grid.Row="5">
<ComboBoxItem Content="DB Fernverkehr AG" IsSelected="True"/>
<ComboBoxItem Content="DB Netz AG"/>
@ -47,26 +47,26 @@
<ComboBoxItem Content="DB Regio AG"/>
</ComboBox>
<TextBlock Margin="10,5,10,0" TextWrapping="Wrap" Text="Private Adresse (Straße und Hausnummer)*" VerticalAlignment="Top" Grid.Row="6"/>
<TextBox x:Name="tbAdresse" Margin="10,26,10,0" Padding="0,4,0,0" TextWrapping="Wrap" Grid.Row="6" TextChanged="Textboxes_Changed" PreviewKeyDown="TextBoxes_PreviewKeyDown" PreviewLostKeyboardFocus="tbAdresse_PreviewLostKeyboardFocus"/>
<TextBlock Margin="10,5,10,0" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" TextWrapping="Wrap" Text="Private Adresse (Straße und Hausnummer)*" VerticalAlignment="Top" Grid.Row="6"/>
<TextBox x:Name="tbAdresse" Margin="10,26,10,0" Height="25" Padding="0,4,0,0" TextWrapping="Wrap" Grid.Row="6" TextChanged="Textboxes_Changed" PreviewKeyDown="TextBoxes_PreviewKeyDown" PreviewLostKeyboardFocus="tbAdresse_PreviewLostKeyboardFocus"/>
<TextBlock Margin="10,5,10,0" TextWrapping="Wrap" Text="Postleitzahl*" VerticalAlignment="Top" Grid.Row="7"/>
<TextBox x:Name="tbPLZ" Margin="10,26,10,0" Padding="0,4,0,0" TextWrapping="Wrap" Grid.Row="7" PreviewTextInput="tbPLZ_PreviewTextInput" TextInput="tbPLZ_TextInput" CommandManager.PreviewExecuted="tbPLZ_PreviewExecuted" TextChanged="tbPLZ_TextChanged" ContextMenu="{x:Null}"/>
<TextBlock Margin="10,5,10,0" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" TextWrapping="Wrap" Text="Postleitzahl*" VerticalAlignment="Top" Grid.Row="7"/>
<TextBox x:Name="tbPLZ" Margin="10,26,10,0" Height="25" Padding="0,4,0,0" TextWrapping="Wrap" Grid.Row="7" PreviewTextInput="tbPLZ_PreviewTextInput" TextInput="tbPLZ_TextInput" CommandManager.PreviewExecuted="tbPLZ_PreviewExecuted" TextChanged="tbPLZ_TextChanged" ContextMenu="{x:Null}"/>
<!---->
<TextBlock Margin="10,5,10,0" TextWrapping="Wrap" Text="Kennzeichen*" VerticalAlignment="Top" Grid.Row="8"/>
<TextBlock Margin="48,26,0,0" TextWrapping="Wrap" Grid.Row="8" Text="-" HorizontalAlignment="Left" Visibility="Visible" FontSize="14" FontWeight="SemiBold" Padding="0,2,0,0"/>
<TextBox x:Name="tbDTownKennzeichen" Margin="10,26,0,0" CharacterCasing="Upper" HorizontalAlignment="Left" Padding="0,4,0,0" TextWrapping="Wrap" Grid.Row="8" Visibility="Visible" PreviewKeyDown="TextBoxes_PreviewKeyDown" TextAlignment="Center" Width="37" PreviewTextInput="tbDTownKennzeichen_PreviewTextInput" TextChanged="Textboxes_Changed"/>
<TextBox x:Name="tbDCharsKennzeichen" Margin="55,26,0,0" CharacterCasing="Upper" HorizontalAlignment="Left" Padding="0,4,0,0" TextWrapping="Wrap" Grid.Row="8" Visibility="Visible" PreviewKeyDown="TextBoxes_PreviewKeyDown" TextAlignment="Center" Width="32" PreviewTextInput="tbDCharsKennzeichen_PreviewTextInput" TextChanged="Textboxes_Changed"/>
<TextBox x:Name="tbDDigitsKennzeichen" Margin="95,26,0,0" HorizontalAlignment="Left" Padding="0,4,0,0" TextWrapping="Wrap" Grid.Row="8" Visibility="Visible" PreviewKeyDown="TextBoxes_PreviewKeyDown" TextAlignment="Center" Width="39" PreviewTextInput="tbDDigitsKennzeichen_PreviewTextInput" TextChanged="Textboxes_Changed"/>
<TextBox x:Name="tbOtherKennzeichen" Margin="10,26,0,0" CharacterCasing="Upper" HorizontalAlignment="Left" Padding="0,4,0,0" TextWrapping="Wrap" Grid.Row="8" Visibility="Hidden" PreviewKeyDown="TextBoxes_PreviewKeyDown" TextChanged="Textboxes_Changed" Width="124"/>
<RadioButton x:Name="rbDKennzeichen" Content="Deutsches Kennzeichen" Margin="139,0,10,15" Grid.Row="8" VerticalAlignment="Bottom" IsChecked="True" Checked="rbDKennzeichen_Checked"/>
<RadioButton x:Name="rbOtherKennzeichen" Content="Ausländisches Kennzeichen" Margin="139,0,10,0" VerticalAlignment="Bottom" Grid.Row="8" Checked="rbOtherKennzeichen_Checked"/>
<TextBlock Margin="10,5,10,0" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" TextWrapping="Wrap" Text="Kennzeichen*" VerticalAlignment="Top" Grid.Row="8"/>
<TextBlock Margin="48,26,0,0" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" TextWrapping="Wrap" Grid.Row="8" Text="-" HorizontalAlignment="Left" Visibility="Visible" FontSize="14" FontWeight="SemiBold" Padding="0,2,0,0"/>
<TextBox x:Name="tbDTownKennzeichen" Height="25" Margin="10,26,0,0" CharacterCasing="Upper" HorizontalAlignment="Left" Padding="0,4,0,0" TextWrapping="Wrap" Grid.Row="8" Visibility="Visible" PreviewKeyDown="TextBoxes_PreviewKeyDown" TextAlignment="Center" Width="37" PreviewTextInput="tbDTownKennzeichen_PreviewTextInput" TextChanged="Textboxes_Changed"/>
<TextBox x:Name="tbDCharsKennzeichen" Height="25" Margin="55,26,0,0" CharacterCasing="Upper" HorizontalAlignment="Left" Padding="0,4,0,0" TextWrapping="Wrap" Grid.Row="8" Visibility="Visible" PreviewKeyDown="TextBoxes_PreviewKeyDown" TextAlignment="Center" Width="32" PreviewTextInput="tbDCharsKennzeichen_PreviewTextInput" TextChanged="Textboxes_Changed"/>
<TextBox x:Name="tbDDigitsKennzeichen" Height="25" Margin="95,26,0,0" HorizontalAlignment="Left" Padding="0,4,0,0" TextWrapping="Wrap" Grid.Row="8" Visibility="Visible" PreviewKeyDown="TextBoxes_PreviewKeyDown" TextAlignment="Center" Width="39" PreviewTextInput="tbDDigitsKennzeichen_PreviewTextInput" TextChanged="Textboxes_Changed"/>
<TextBox x:Name="tbOtherKennzeichen" Height="25" Margin="10,26,0,0" CharacterCasing="Upper" HorizontalAlignment="Left" Padding="0,4,0,0" TextWrapping="Wrap" Grid.Row="8" Visibility="Hidden" PreviewKeyDown="TextBoxes_PreviewKeyDown" TextChanged="Textboxes_Changed" Width="124"/>
<RadioButton x:Name="rbDKennzeichen" Content="Deutsches Kennzeichen" Height="25" Margin="139,0,10,12" Grid.Row="8" VerticalAlignment="Bottom" IsChecked="True" Checked="rbDKennzeichen_Checked"/>
<RadioButton x:Name="rbOtherKennzeichen" Content="Ausländisches Kennzeichen" Height="25" Margin="139,0,10,-9" VerticalAlignment="Bottom" Grid.Row="8" Checked="rbOtherKennzeichen_Checked"/>
<TextBlock Margin="10,5,10,0" TextWrapping="Wrap" Text="Vorgesetzter*" VerticalAlignment="Top" Grid.Row="9"/>
<TextBlock Margin="10,5,10,0" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" TextWrapping="Wrap" Text="Vorgesetzter*" VerticalAlignment="Top" Grid.Row="9"/>
<TextBox x:Name="tbVorgesetzter" Margin="10,26,10,0" Padding="0,4,0,0" TextWrapping="Wrap" Grid.Row="9" TextChanged="Textboxes_Changed" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<CheckBox x:Name="cBSchicht" Content="Beantrager in Wechsel- oder Schichtdienst tätig" ToolTip="Es sind nur Personen berechtigt für eine Parkkarte, die in Wechsel- oder Schichtdienst tätig sind" Grid.Row="10" VerticalAlignment="Center" Margin="10,18,10,10" HorizontalAlignment="Left" Height="24" Width="292" Checked="cBSchicht_Checked" Unchecked="cBSchicht_Unchecked"/>
<CheckBox x:Name="cBSchicht" Content="Beantrager in Wechsel- oder Schichtdienst tätig" Grid.Row="10" VerticalAlignment="Center" Margin="10,18,10,10" HorizontalAlignment="Left" Height="24" Width="292" Checked="cBSchicht_Checked" Unchecked="cBSchicht_Unchecked"/> <!--ToolTip="Es sind nur Personen berechtigt für eine Parkkarte, die in Wechsel- oder Schichtdienst tätig sind"-->
<CheckBox x:Name="cBCorrectness" Content="Hiermit bestätige ich die Richtigkeit &#xD;&#xA;und Vollständigkeit der Angaben" Grid.Row="11" HorizontalAlignment="Center" VerticalAlignment="Center" Unchecked="cBCorrectness_Unchecked" Checked="cBCorrectness_Checked"/>

View File

@ -22,6 +22,51 @@ namespace ZKuP
List<string> plz = new List<string>();
public bool special { get; private set; }
List<string> Abteilungen = new List<string>()
{
"P.FBW-M",
"P.FBW-M 1",
"P.FBW-M 11",
"P.FBW-M 2",
"P.FBW-M 21",
"P.FBW-M 23",
"P.FBW-M 3",
"P.FBW-M 313",
"P.FBW-M 314",
"P.FBW-M 315",
"P.FBW-M 32",
"P.FBW-M 33",
"P.FBW-M 34",
"P.FBW-M 341",
"P.FBW-M 342",
"P.FBW-M 35",
"P.FBW-M 4",
"P.FBW-M 41",
"P.FBW-M 411",
"P.FBW-M 43",
"P.FBW-M 431",
"P.FBW-M 432",
"P.FBW-M 433",
"P.FBW-M 44",
"P.FBW-M 441",
"P.FBW-M 443",
"P.FBW-M 45",
"P.FBW-M 451",
"P.FBW-M 453",
"P.FBW-M 46",
"P.FBW-M 461",
"P.FBW-M 465",
"P.FBW-M 5",
"P.FBW-M 52",
"P.FBW-M 6",
"P.FBW-M 61",
"P.FBW-M 7",
"P.FBW-M 73",
"P.FBW-M 731",
"P.FBW-M 74",
"P.FBW-M 742"
};
public CreateParkausweis(bool Special = false)
{
InitializeComponent();
@ -65,6 +110,11 @@ namespace ZKuP
tbEmail.Foreground = new SolidColorBrush(Colors.Black);
}
if (tbTelefon.Text.ToList<char>().Distinct().Count() > 4)
{
tbTelefon.Foreground = new SolidColorBrush(Colors.Black);
}
checkButton();
}
@ -79,12 +129,13 @@ namespace ZKuP
tbNachname.Text != "" &&
tbEmail.Text != "" &&
tbAbteilung.Text != "" &&
tbTelefon.Text != "" &&
tbAdresse.Text != "" &&
tbPLZ.Text != "" &&
tbVorgesetzter.Text != "" &&
cbFirma.SelectedIndex != -1 &&
cBCorrectness.IsChecked.Value == true &&
cBSchicht.IsChecked.Value == true &&
//cBSchicht.IsChecked.Value == true &&
(rbDKennzeichen.IsChecked.Value && (!string.IsNullOrWhiteSpace(tbDTownKennzeichen.Text)
&& !string.IsNullOrWhiteSpace(tbDCharsKennzeichen.Text)
&& !string.IsNullOrWhiteSpace(tbDDigitsKennzeichen.Text))
@ -102,16 +153,16 @@ namespace ZKuP
{
if (tbPLZ.Text.Length == 5 && !special)
{
foreach (var s in plz)
{
if (tbPLZ.Text == s)
{
MessageBox.Show(this, "Mitarbeiter im Stadtgebiet München sind nicht berechtigt Parkkarten zu beantragen!\n\nDie Angabe falscher Daten stellt einen fristlosen Kündigungsgrund dar!!", "Keine Berechtigung!", MessageBoxButton.OK, MessageBoxImage.Information);
tbPLZ.Text = "";
btnCreate.IsEnabled = false;
return;
}
}
//foreach (var s in plz)
//{
// if (tbPLZ.Text == s)
// {
// MessageBox.Show(this, "Mitarbeiter im Stadtgebiet München sind nicht berechtigt Parkkarten zu beantragen!\n\nDie Angabe falscher Daten stellt einen fristlosen Kündigungsgrund dar!!", "Keine Berechtigung!", MessageBoxButton.OK, MessageBoxImage.Information);
// tbPLZ.Text = "";
// btnCreate.IsEnabled = false;
// return;
// }
//}
checkButton();
}
@ -123,7 +174,13 @@ namespace ZKuP
private async void btnCreate_Click(object sender, RoutedEventArgs e)
{
if(!System.Text.RegularExpressions.Regex.IsMatch(tbPLZ.Text, @"^\d{5}$"))
if (tbTelefon.Text.ToList<char>().Distinct().Count() < 4)
{
MessageBox.Show("Telefonnummer muss qualifiziert ausgefüllt werden!", "Fehlerhafte Nummer", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
if (!System.Text.RegularExpressions.Regex.IsMatch(tbPLZ.Text, @"^\d{5}$"))
{
MessageBox.Show(this, "Postleitzahl muss exakt 5 Stellen haben und darf nur Zahlen enthalten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
return;
@ -160,6 +217,7 @@ namespace ZKuP
if (!(string.IsNullOrWhiteSpace(tbVorname.Text) &&
string.IsNullOrWhiteSpace(tbNachname.Text) &&
string.IsNullOrWhiteSpace(tbEmail.Text) &&
string.IsNullOrWhiteSpace(tbTelefon.Text) &&
string.IsNullOrWhiteSpace(tbAbteilung.Text) &&
string.IsNullOrWhiteSpace(tbAdresse.Text) &&
string.IsNullOrWhiteSpace(tbPLZ.Text) &&
@ -180,15 +238,37 @@ namespace ZKuP
{
await SQL.WriteSQL($"INSERT INTO parkausweise (MA_Vorname,MA_Name,Kennzeichen,Email,Telefon,Abteilung,Firma,Adresse,PLZ,Vorgesetzter,AcceptedCorrectness,Schicht,Bemerkung) VALUES ('{tbVorname.Text}','{tbNachname.Text}','{tbOtherKennzeichen.Text}','{tbEmail.Text}','{tbTelefon.Text}','{tbAbteilung.Text}','{cbFirma.Text}','{tbAdresse.Text}','{tbPLZ.Text}','{tbVorgesetzter.Text}','{_correctness}','{_schicht}','{_bemerkung}')");
var id = SQL.ReadSingleValue($"SELECT idparkausweise FROM zkup.parkausweise ORDER BY idparkausweise DESC LIMIT 1");
MessageBox.Show(this, $"Antrag erfolgreich abgeschickt\n\nIhre Karte hat die Nr. {id}", "Erfolg", MessageBoxButton.OK, MessageBoxImage.Information);
this.Close();
var name = SQL.ReadSingleValue($"SELECT MA_Name FROM zkup.parkausweise WHERE idparkausweise={id}");
if (name == tbNachname.Text)
{
MessageBox.Show(this, $"Antrag erfolgreich abgeschickt\n\nIhre Karte hat die Nr. {id}", "Erfolg", MessageBoxButton.OK, MessageBoxImage.Information);
this.Close();
}
else
{
MessageBox.Show(this, $"Antrag konnte nicht gesendet werden, bitte erneut versuchen\n\nSollte der Fehler weiterhin auftreten, bitte an Ihren Administrator wenden", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
}
else if (rbDKennzeichen.IsChecked.Value)
{
await SQL.WriteSQL($"INSERT INTO parkausweise (MA_Vorname,MA_Name,Kennzeichen,Email,Telefon,Abteilung,Firma,Adresse,PLZ,Vorgesetzter,AcceptedCorrectness,Schicht,Bemerkung) VALUES ('{tbVorname.Text}','{tbNachname.Text}','{tbDTownKennzeichen.Text}-{tbDCharsKennzeichen.Text} {tbDDigitsKennzeichen.Text}','{tbEmail.Text}','{tbTelefon.Text}','{tbAbteilung.Text}','{cbFirma.Text}','{tbAdresse.Text}','{tbPLZ.Text}','{tbVorgesetzter.Text}','{_correctness}','{_schicht}','{_bemerkung}')");
var id = SQL.ReadSingleValue($"SELECT idparkausweise FROM zkup.parkausweise ORDER BY idparkausweise DESC LIMIT 1");
MessageBox.Show(this, $"Antrag erfolgreich abgeschickt\n\nIhre Karte hat die Nr. {id}", "Erfolg", MessageBoxButton.OK, MessageBoxImage.Information);
this.Close();
var name = SQL.ReadSingleValue($"SELECT MA_Name FROM zkup.parkausweise WHERE idparkausweise={id}");
if (name == tbNachname.Text)
{
MessageBox.Show(this, $"Antrag erfolgreich abgeschickt\n\nIhre Karte hat die Nr. {id}", "Erfolg", MessageBoxButton.OK, MessageBoxImage.Information);
this.Close();
}
else
{
MessageBox.Show(this, $"Antrag konnte nicht gesendet werden, bitte erneut versuchen\n\nSollte der Fehler weiterhin auftreten, bitte an Ihren Administrator wenden", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
}
}
else MessageBox.Show(this, "Es müssen alle benötigten(*) Felder ausgefüllt werden", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
@ -372,6 +452,23 @@ namespace ZKuP
}
private void tbTelefon_PreviewLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
if (tbTelefon.Text.ToList<char>().Distinct().Count() < 4)
{
tbTelefon.Foreground = new SolidColorBrush(Colors.Red);
tbTelefon.ToolTip = "Telefonnummer muss qualifiziert ausgefüllt werden";
}
else
{
tbTelefon.Foreground = new SolidColorBrush(Colors.Black);
tbTelefon.ToolTip = "";
}
}
private void tbBemerkung_PreviewGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
lblBemerkung.Visibility = Visibility.Collapsed;
@ -382,5 +479,6 @@ namespace ZKuP
if (string.IsNullOrWhiteSpace(tbBemerkung.Text)) lblBemerkung.Visibility = Visibility.Visible;
else lblBemerkung.Visibility = Visibility.Collapsed;
}
}
}

View File

@ -5,28 +5,37 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ZKuP"
mc:Ignorable="d"
Title="Besucher erstellen" Height="626" Width="369" ResizeMode="NoResize"
Title="Besucher erstellen" Height="626" Width="620" ResizeMode="NoResize"
WindowStartupLocation="CenterOwner">
<Grid>
<TextBox x:Name="tbName" HorizontalAlignment="Left" Height="23" Margin="10,57,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="340" TabIndex="1" PreviewKeyDown="TextBoxes_PreviewKeyDown" Grid.ColumnSpan="2"/>
<TextBlock Margin="10,36,13,0" TextWrapping="Wrap" VerticalAlignment="Top" Grid.ColumnSpan="2"><Run Text="Name"/><Run Text=" des Besuchers / Firmenname des Besuchers"/></TextBlock>
<TextBox x:Name="tbVerantwortlicher_MA" HorizontalAlignment="Left" Height="23" Margin="10,106,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="340" TabIndex="2" PreviewKeyDown="TextBoxes_PreviewKeyDown" Grid.ColumnSpan="2"/>
<TextBlock Margin="10,85,13,0" TextWrapping="Wrap" VerticalAlignment="Top" Grid.ColumnSpan="2"><Run Text="Verantwortlicher Mitarbeiter"/><Run Text=" der Firma oder Intern"/></TextBlock>
<TextBox x:Name="tbTel_Besucher" HorizontalAlignment="Left" Height="23" Margin="10,155,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="340" TabIndex="3" PreviewKeyDown="TextBoxes_PreviewKeyDown" Grid.ColumnSpan="2"/>
<TextBlock HorizontalAlignment="Left" Margin="10,134,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Grid.ColumnSpan="2"><Run Text="Telefonnummer "/><Run Text="Besucher"/></TextBlock>
<TextBox x:Name="tbAnzahl_Begleiter" HorizontalAlignment="Left" Height="23" Margin="10,204,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="340" TabIndex="4" PreviewKeyDown="TbAnzahl_Begleiter_PreviewKeyDown" PreviewTextInput="tbAnzahl_Begleiter_PreviewTextInput" ToolTip="Nur Zahlen und max. 2 Stellen" Grid.ColumnSpan="2" AllowDrop="False" CommandManager.PreviewExecuted="Textboxes_PreviewExecuted" ContextMenu="{x:Null}"/>
<TextBlock HorizontalAlignment="Left" Margin="10,183,0,0" TextWrapping="Wrap" Text="Anzahl Begleitpersonen" VerticalAlignment="Top" Grid.ColumnSpan="2"/>
<TextBlock HorizontalAlignment="Left" Margin="10,232,0,0" TextWrapping="Wrap" Text="Besuchstag" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Margin="10,282,0,0" TextWrapping="Wrap" Text="Grund des Besuchs" VerticalAlignment="Top" Grid.ColumnSpan="2"/>
<TextBox x:Name="tbAnsprechp_Intern" HorizontalAlignment="Left" Height="23" Margin="10,401,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="340" TabIndex="8" PreviewKeyDown="TextBoxes_PreviewKeyDown" Grid.ColumnSpan="2"/>
<TextBlock HorizontalAlignment="Left" Margin="10,380,0,0" TextWrapping="Wrap" Text="Ansprechpartner intern" VerticalAlignment="Top" Grid.ColumnSpan="2"/>
<TextBox x:Name="tbTel_Ansprechp" HorizontalAlignment="Left" Height="23" Margin="10,450,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="340" TabIndex="9" PreviewKeyDown="TextBoxes_PreviewKeyDown" Grid.ColumnSpan="2"/>
<TextBlock HorizontalAlignment="Left" Margin="10,429,0,0" TextWrapping="Wrap" Text="Telefonnummer Ansprechpartner" VerticalAlignment="Top" Grid.ColumnSpan="2"/>
<DatePicker x:Name="dpBesuchstag" HorizontalAlignment="Left" Margin="10,253,0,0" VerticalAlignment="Top" TabIndex="5" PreviewKeyDown="DpBesuchstag_PreviewKeyDown" Grid.ColumnSpan="2"/>
<Button x:Name="btnAdd" Content="Besucher erstellen" HorizontalAlignment="Center" Margin="12,526,11,0" VerticalAlignment="Top" Width="340" Height="61" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Click="BtnAdd_Click" TabIndex="10" PreviewKeyDown="TextBoxes_PreviewKeyDown" Grid.ColumnSpan="2"/>
<TextBox x:Name="tbGrundDesBesuchs" Height="23" Margin="10,303,13,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" TabIndex="6" PreviewKeyDown="TextBoxes_PreviewKeyDown" Grid.ColumnSpan="2"/>
<TextBlock HorizontalAlignment="Left" Margin="10,331,0,0" TextWrapping="Wrap" Text="Örtlichkeit" VerticalAlignment="Top"/>
<TextBox x:Name="tbOertlichkeit" Height="23" Margin="12,352,11,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" TabIndex="7" PreviewKeyDown="TextBoxes_PreviewKeyDown" Grid.ColumnSpan="2"/>
<Button x:Name="btnMyVisitors" Content="Meine erstellten Besucher" Margin="10,478,13,0" VerticalAlignment="Top" Click="btnMyVisitors_Click" Grid.ColumnSpan="2" ToolTip="Nur bereits erstellte Besucher können eingesehen werden"/>
<TextBox x:Name="tbName" HorizontalAlignment="Left" Height="23" Margin="10,57,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="330" TabIndex="1" PreviewKeyDown="TextBoxes_PreviewKeyDown" Grid.ColumnSpan="2"/>
<TextBlock Margin="10,36,13,0" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" TextWrapping="Wrap" VerticalAlignment="Top" Grid.ColumnSpan="2"><Run Text="Name"/><Run Text=" des Besuchers / Firmenname des Besuchers"/></TextBlock>
<TextBox x:Name="tbVerantwortlicher_MA" HorizontalAlignment="Left" Height="23" Margin="10,106,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="330" TabIndex="2" PreviewKeyDown="TextBoxes_PreviewKeyDown" Grid.ColumnSpan="2"/>
<TextBlock Margin="10,85,13,0" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" TextWrapping="Wrap" VerticalAlignment="Top" Grid.ColumnSpan="2"><Run Text="Verantwortlicher Mitarbeiter"/><Run Text=" der Firma oder Intern"/></TextBlock>
<TextBox x:Name="tbTel_Besucher" HorizontalAlignment="Left" Height="23" Margin="10,155,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="330" TabIndex="3" PreviewKeyDown="TextBoxes_PreviewKeyDown" Grid.ColumnSpan="2"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,134,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Grid.ColumnSpan="2"><Run Text="Telefonnummer "/><Run Text="Besucher"/></TextBlock>
<TextBox x:Name="tbAnzahl_Begleiter" HorizontalAlignment="Left" Height="23" Margin="10,204,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="330" TabIndex="4" PreviewKeyDown="TbAnzahl_Begleiter_PreviewKeyDown" PreviewTextInput="tbAnzahl_Begleiter_PreviewTextInput" ToolTip="Nur Zahlen und max. 2 Stellen" Grid.ColumnSpan="2" AllowDrop="False" CommandManager.PreviewExecuted="Textboxes_PreviewExecuted" ContextMenu="{x:Null}"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,183,0,0" TextWrapping="Wrap" Text="Anzahl Begleitpersonen" VerticalAlignment="Top" Grid.ColumnSpan="2"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,232,0,0" TextWrapping="Wrap" Text="Besuchstag" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,282,0,0" TextWrapping="Wrap" Text="Grund des Besuchs" VerticalAlignment="Top" Grid.ColumnSpan="2"/>
<TextBox x:Name="tbAnsprechp_Intern" HorizontalAlignment="Left" Height="23" Margin="10,401,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="330" TabIndex="8" PreviewKeyDown="TextBoxes_PreviewKeyDown" Grid.ColumnSpan="2"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,380,0,0" TextWrapping="Wrap" Text="Ansprechpartner intern" VerticalAlignment="Top" Grid.ColumnSpan="2"/>
<TextBox x:Name="tbTel_Ansprechp" HorizontalAlignment="Left" Height="23" Margin="10,450,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="330" TabIndex="9" PreviewKeyDown="TextBoxes_PreviewKeyDown" Grid.ColumnSpan="2"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,429,0,0" TextWrapping="Wrap" Text="Telefonnummer Ansprechpartner" VerticalAlignment="Top" Grid.ColumnSpan="2"/>
<DatePicker x:Name="dpBesuchstag" HorizontalAlignment="Left" Margin="12,253,0,0" VerticalAlignment="Top" TabIndex="5" PreviewKeyDown="DpBesuchstag_PreviewKeyDown" Grid.ColumnSpan="2" DateValidationError="dpBesuchstag_DateValidationError"/>
<Button x:Name="btnAdd" Content="Besucher erstellen" HorizontalAlignment="Left" Margin="10,518,0,0" VerticalAlignment="Top" Width="330" Height="61" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Click="BtnAdd_Click" TabIndex="10" PreviewKeyDown="TextBoxes_PreviewKeyDown" Grid.ColumnSpan="2"/>
<TextBox x:Name="tbGrundDesBesuchs" HorizontalAlignment="Left" Height="23" Margin="10,303,0,0" TextWrapping="Wrap" Text="" Width="330" VerticalAlignment="Top" TabIndex="6" PreviewKeyDown="TextBoxes_PreviewKeyDown" Grid.ColumnSpan="2"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,331,0,0" TextWrapping="Wrap" Text="Örtlichkeit" Width="330" VerticalAlignment="Top"/>
<TextBox x:Name="tbOertlichkeit" Height="23" HorizontalAlignment="Left" Width="330" Margin="10,352,11,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" TabIndex="7" PreviewKeyDown="TextBoxes_PreviewKeyDown" Grid.ColumnSpan="2"/>
<Button x:Name="btnMyVisitors" Content="Meine erstellten Besucher" Margin="10,480,0,0" HorizontalAlignment="Left" Width="330" VerticalAlignment="Top" Click="btnMyVisitors_Click" Grid.ColumnSpan="2" ToolTip="Nur bereits erstellte Besucher können eingesehen werden"/>
<TextBlock Text="Besucher sind immer ohne KFZ!" Foreground="Red" FontSize="16" FontWeight="Bold" Margin="0,50,10,0" Height="50" VerticalAlignment="Top" HorizontalAlignment="Right"/>
<StackPanel Orientation="Vertical" HorizontalAlignment="Right" Margin="0,100,5,0" Width="250">
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" TextAlignment="Center"><Run Text="Besucher dürfen nicht mit Fahrzeugen"/><LineBreak/><Run Text="auf das Gelände fahren."/></TextBlock>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" TextAlignment="Center"><Run/><LineBreak/><Run Text="Wird ein Fahrzeug auf dem Gelände dringend"/><LineBreak/><Run Text="benötigt, so muss der Besucher als Firma"/><LineBreak/><Run Text="unter 'Firmen verwalten' eingetragen werden"/></TextBlock>
<TextBlock Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" TextAlignment="Center"><Run/><LineBreak/><Run Text="Wenn Ihnen der Button 'Firmen verwalten'"/><LineBreak/><Run Text="nicht angezeigt wird, wenden Sie sich bitte"/><LineBreak/><Run Text=" an Ihren Fremdfirmenkoordinator"/></TextBlock>
<TextBlock TextAlignment="Center" Foreground="Red" FontSize="16"><Run Text="&#xA;Besucher die hier mit Fahrzeugen"/><LineBreak/><Run Text="eingetragen wurden, werden "/><LineBreak/><Run Language="de-de" Text="r"/><Run Text="egelmäßig gelöscht und dann"/><LineBreak/><Run Text=" vom Pförtner nicht hereingelassen"/></TextBlock>
</StackPanel>
</Grid>
</Window>

View File

@ -137,5 +137,10 @@ namespace ZKuP
cVL.Owner = this;
cVL.ShowDialog();
}
private void dpBesuchstag_DateValidationError(object sender, DatePickerDateValidationErrorEventArgs e)
{
MessageBox.Show("Kein gültiges Datumsformat in Feld 'Besuchstag'", "Fehler", MessageBoxButton.OK, MessageBoxImage.Warning);
}
}
}

View File

@ -7,7 +7,7 @@
mc:Ignorable="d"
Title="Besucherliste" Height="450" Width="800">
<Grid>
<Button x:Name="btnDelete" Content="Markierten Besucher löschen" Margin="0,10,10,0" VerticalAlignment="Top" HorizontalAlignment="Right" Width="167" Click="btnDelete_Click" IsEnabled="False"/>
<Button x:Name="btnDelete" Content="Markierten Besucher löschen" FontSize="12" Padding="-2" Height="23" Margin="0,10,10,0" VerticalAlignment="Top" HorizontalAlignment="Right" Width="167" Click="btnDelete_Click" IsEnabled="False"/>
<DataGrid x:Name="dgVisitors" ItemsSource="{Binding Path=., Mode=OneWay}" KeyboardNavigation.TabNavigation="None" Margin="10,45,10,44" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="True" HorizontalScrollBarVisibility="Visible" PreviewKeyDown="DgVisitors_PreviewKeyDown" CellEditEnding="DgVisitors_CellEditEnding" BeginningEdit="DgVisitors_BeginningEdit" SelectionChanged="dgVisitors_SelectionChanged" PreparingCellForEdit="dgVisitors_PreparingCellForEdit" ToolTip="Daten können per Doppelklick geändert werden">
<DataGrid.Columns>

87
ZKuP/Crypto.cs Normal file
View File

@ -0,0 +1,87 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace ZKuP
{
internal class Crypto
{
static string salt = "55077213E9F039950CF476B5FF646510";
public static byte[] GetHashKey(string hashKey)
{
// Initialize
UTF8Encoding encoder = new UTF8Encoding();
// Get the salt
//string salt = Salt; //!string.IsNullOrEmpty(Salt) ? Salt : "I am a nice little salt";
byte[] saltBytes = encoder.GetBytes(salt);
// Setup the hasher
Rfc2898DeriveBytes rfc = new Rfc2898DeriveBytes(hashKey, saltBytes);
// Return the key
var b = rfc.GetBytes(16);
return b;
}
public static string Encrypt(byte[] key, string dataToEncrypt)
{
// Initialize
AesManaged encryptor = new AesManaged();
// Set the key
encryptor.Key = key;
encryptor.IV = key;
// create a memory stream
using (MemoryStream encryptionStream = new MemoryStream())
{
// Create the crypto stream
using (CryptoStream encrypt = new CryptoStream(encryptionStream, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
{
// Encrypt
byte[] utfD1 = UTF8Encoding.UTF8.GetBytes(dataToEncrypt);
encrypt.Write(utfD1, 0, utfD1.Length);
encrypt.FlushFinalBlock();
encrypt.Close();
// Return the encrypted data
return Convert.ToBase64String(encryptionStream.ToArray());
}
}
}
public static string Decrypt(byte[] key, string encryptedString)
{
// Initialize
AesManaged decryptor = new AesManaged();
byte[] encryptedData = Convert.FromBase64String(encryptedString);
// Set the key
decryptor.Key = key;
decryptor.IV = key;
// create a memory stream
using (MemoryStream decryptionStream = new MemoryStream())
{
// Create the crypto stream
using (CryptoStream decrypt = new CryptoStream(decryptionStream, decryptor.CreateDecryptor(), CryptoStreamMode.Write))
{
// Encrypt
decrypt.Write(encryptedData, 0, encryptedData.Length);
decrypt.Flush();
decrypt.Close();
// Return the unencrypted data
byte[] decryptedData = decryptionStream.ToArray();
return UTF8Encoding.UTF8.GetString(decryptedData, 0, decryptedData.Length);
}
}
}
//public static void createCryptoStrings()
//{
// Debug.WriteLine($"ip: {Crypto.Encrypt(Crypto.GetHashKey("25F2B0D01752AE26E3F67EED9824A3C6"), "10.20.98.34")}");
// Debug.WriteLine($"uid: {Crypto.Encrypt(Crypto.GetHashKey("B0B51FB2C09E99976749EA4EEF0AD754"), "ZK")}");
// Debug.WriteLine($"pwd: {Crypto.Encrypt(Crypto.GetHashKey("B73DD0426C4D45BFE20E0C70E72CCF13"), "ZKUser#2001")}");
// Debug.WriteLine($"db: {Crypto.Encrypt(Crypto.GetHashKey("3C2F062772F4D4348C8BAFB3B8F4BE80"), "zkup")}");
//}
}
}

View File

@ -19,22 +19,22 @@
<RowDefinition Height="0.8*"/>
<RowDefinition Height="0.8*"/>
</Grid.RowDefinitions>
<TextBlock Margin="10,10,10,0" TextWrapping="Wrap" Text="Lieferantenliste filtern:" VerticalAlignment="Top"/>
<TextBox x:Name="tbFilter" Margin="10,0,0,0" TextWrapping="Wrap" Height="23" VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="255"/>
<Button x:Name="btnFiltern" Content="Filtern" Margin="270,36,10,0" Click="btnFiltern_Click"/>
<TextBlock Margin="12,10,10,0" TextWrapping="Wrap" VerticalAlignment="Top" Grid.Row="1"><Run Text="Hinterlegte"/><Run Text=" Lieferanten"/><Run Text=":"/></TextBlock>
<TextBlock Margin="10,10,10,0" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" TextWrapping="Wrap" Text="Lieferantenliste filtern:" VerticalAlignment="Top"/>
<TextBox x:Name="tbFilter" Margin="10,0,0,0" TextWrapping="Wrap" Height="23" VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="255" KeyDown="tbFilter_KeyDown"/>
<Button x:Name="btnFiltern" Content="Filtern" FontSize="12" Padding="-2" Height="26" Margin="270,31,10,0" Click="btnFiltern_Click"/>
<TextBlock Margin="12,10,10,0" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" TextWrapping="Wrap" VerticalAlignment="Top" Grid.Row="1"><Run Text="Hinterlegte"/><Run Text=" Lieferanten"/><Run Text=":"/></TextBlock>
<ComboBox x:Name="cBLieferfirma" Margin="10,0" Height="21" VerticalAlignment="Bottom" SelectionChanged="cBLieferfirma_SelectionChanged" Grid.Row="1"/>
<TextBlock HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="Firma:" VerticalAlignment="Top" Grid.Row="2"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,10,0,0" TextWrapping="Wrap" Text="Firma:" VerticalAlignment="Top" Grid.Row="2"/>
<TextBox x:Name="tbFirma" Margin="10,31,10,0" TextWrapping="Wrap" Padding="2" Grid.Row="2" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<TextBlock HorizontalAlignment="Left" Margin="10,10,0,0" Grid.Row="3" TextWrapping="Wrap" Text="Fahrername:" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,10,0,0" Grid.Row="3" TextWrapping="Wrap" Text="Fahrername:" VerticalAlignment="Top"/>
<TextBox x:Name="tbFahrer" Margin="10,31,10,0" Grid.Row="3" TextWrapping="Wrap" Padding="3" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<TextBlock HorizontalAlignment="Left" Margin="10,10,0,0" Grid.Row="4" TextWrapping="Wrap" Text="Handynummer:" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,10,0,0" Grid.Row="4" TextWrapping="Wrap" Text="Handynummer:" VerticalAlignment="Top"/>
<TextBox x:Name="tbHandy" Margin="10,31,10,0" Grid.Row="4" TextWrapping="Wrap" Padding="2" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<TextBlock HorizontalAlignment="Left" Margin="10,10,0,0" Grid.Row="5" TextWrapping="Wrap" VerticalAlignment="Top"><Run Text="Kennzeichen:"/></TextBlock>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,10,0,0" Grid.Row="5" TextWrapping="Wrap" VerticalAlignment="Top"><Run Text="Kennzeichen:"/></TextBlock>
<TextBox x:Name="tbKennzeichen" Margin="10,31,10,0" Grid.Row="5" TextWrapping="Wrap" Padding="2" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<TextBlock HorizontalAlignment="Left" Margin="10,10,0,0" Grid.Row="6" TextWrapping="Wrap" Text="Parkplatz:" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,10,0,0" Grid.Row="6" TextWrapping="Wrap" Text="Parkplatz:" VerticalAlignment="Top"/>
<TextBox x:Name="tbParkplatz" Margin="10,31,10,0" Grid.Row="6" TextWrapping="Wrap" Padding="2" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<TextBlock HorizontalAlignment="Left" Margin="10,10,0,0" Grid.Row="7" TextWrapping="Wrap" Text="Bemerkung:" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,10,0,0" Grid.Row="7" TextWrapping="Wrap" Text="Bemerkung:" VerticalAlignment="Top"/>
<TextBox x:Name="tbBemerkung" Margin="10,35,10,10" Grid.Row="7" TextWrapping="Wrap" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<Button x:Name="btnSignature" Content="Unterschrift" Margin="10,5" Grid.Row="8" Click="btnSignature_Click"/>

View File

@ -22,25 +22,78 @@ namespace ZKuP
string query = "";
byte[] _signature = null;
bool _emergency = false;
public Delivery()
public Delivery(bool Emergency = false)
{
InitializeComponent();
var list = SQL.ReadListStringTwoColumns($"SELECT Firma, Fahrer FROM zkup.lieferanten", " Fahrer: ").Result;
list = list.OrderBy(p => p).ToList();
cBLieferfirma.ItemsSource = list;
_emergency = Emergency;
tbFilter.Focus();
if (_emergency)
{
//var list = SQL.ReadListStringTwoColumns($"SELECT Firma, Fahrer FROM zkup.lieferanten WHERE Firma LIKE 'DB%'", " Fahrer: ").Result;
//list = list.OrderBy(p => p).ToList();
//cBLieferfirma.ItemsSource = list;
var list = SQL.ReadListStringMultipleColumns($"SELECT Firma, Fahrer, Kennzeichen, ID FROM zkup.lieferanten WHERE Firma LIKE 'DB%'", 4, " Fahrer: ", " Kennz.: ", " ID: ").Result;
list = list.OrderBy(p => p).ToList();
cBLieferfirma.ItemsSource = list;
}
else
{
var list = SQL.ReadListStringMultipleColumns($"SELECT Firma, Fahrer, Kennzeichen, ID FROM zkup.lieferanten WHERE Firma NOT LIKE 'DB%'", 4, " Fahrer: ", " Kennz.: ", " ID: ").Result;
list = list.OrderBy(p => p).ToList();
cBLieferfirma.ItemsSource = list;
}
}
private void btnFiltern_Click(object sender, RoutedEventArgs e)
{
var list = SQL.ReadListStringTwoColumns($"SELECT Firma, Fahrer FROM zkup.lieferanten WHERE Firma LIKE '%{tbFilter.Text}%' OR Fahrer LIKE '%{tbFilter.Text}%'", " Fahrer: ").Result;
list = list.OrderBy(p => p).ToList();
cBLieferfirma.ItemsSource = list;
//var list = SQL.ReadListStringTwoColumns($"SELECT Firma, Fahrer FROM zkup.lieferanten WHERE Firma LIKE '%{tbFilter.Text}%' OR Fahrer LIKE '%{tbFilter.Text}%'", " Fahrer: ").Result;
//list = list.OrderBy(p => p).ToList();
//cBLieferfirma.ItemsSource = list;
if (_emergency)
{
var list = SQL.ReadListStringMultipleColumns($"SELECT Firma, Fahrer, Kennzeichen, ID FROM zkup.lieferanten WHERE Firma LIKE 'DB %{tbFilter.Text}%' OR (Firma LIKE 'DB%' AND Fahrer LIKE '%{tbFilter.Text}%') OR (Firma LIKE 'DB%' AND Kennzeichen LIKE '%{tbFilter.Text}%') OR (Firma LIKE 'DB%' AND ID LIKE '%{tbFilter.Text}%')", 4, " Fahrer: ", " Kennz.: ", " ID: ").Result;
list = list.OrderBy(p => p).ToList();
cBLieferfirma.ItemsSource = list;
}
else
{
var list = SQL.ReadListStringMultipleColumns($"SELECT Firma, Fahrer, Kennzeichen, ID FROM zkup.lieferanten WHERE Firma NOT LIKE 'DB%' AND (Fahrer LIKE '%{tbFilter.Text}%' OR Firma LIKE '%{tbFilter.Text}%' OR Kennzeichen LIKE '%{tbFilter.Text}%' OR ID LIKE '%{tbFilter.Text}%')", 4, " Fahrer: ", " Kennz.: ", " ID: ").Result;
list = list.OrderBy(p => p).ToList();
cBLieferfirma.ItemsSource = list;
}
cBLieferfirma.IsDropDownOpen = true;
cBLieferfirma.Focus();
}
private void tbFilter_KeyDown(object sender, KeyEventArgs e)
{
if(e.Key == Key.Enter)
{
if (_emergency)
{
var list = SQL.ReadListStringMultipleColumns($"SELECT Firma, Fahrer, Kennzeichen, ID FROM zkup.lieferanten WHERE Firma LIKE 'DB %{tbFilter.Text}%' OR (Firma LIKE 'DB%' AND Fahrer LIKE '%{tbFilter.Text}%') OR (Firma LIKE 'DB%' AND Kennzeichen LIKE '%{tbFilter.Text}%') OR (Firma LIKE 'DB%' AND ID LIKE '%{tbFilter.Text}%')", 4, " Fahrer: ", " Kennz.: ", " ID: ").Result;
list = list.OrderBy(p => p).ToList();
cBLieferfirma.ItemsSource = list;
}
else
{
var list = SQL.ReadListStringMultipleColumns($"SELECT Firma, Fahrer, Kennzeichen, ID FROM zkup.lieferanten WHERE Firma NOT LIKE 'DB%' AND (Fahrer LIKE '%{tbFilter.Text}%' OR Firma LIKE '%{tbFilter.Text}%' OR Kennzeichen LIKE '%{tbFilter.Text}%' OR ID LIKE '%{tbFilter.Text}%')", 4, " Fahrer: ", " Kennz.: ", " ID: ").Result;
list = list.OrderBy(p => p).ToList();
cBLieferfirma.ItemsSource = list;
}
cBLieferfirma.IsDropDownOpen = true;
cBLieferfirma.Focus();
}
}
private async void btnSignature_Click(object sender, RoutedEventArgs e)
@ -49,18 +102,23 @@ namespace ZKuP
{
if (!string.IsNullOrWhiteSpace(tbFahrer.Text) && !string.IsNullOrWhiteSpace(tbFirma.Text))
{
var sig = new Signature(tbFahrer.Text, tbFirma.Text, tbKennzeichen.Text, false);
if (sig.ShowDialog() == false)
if (signoPad._stPad.DeviceGetCount() > 0)
{
_signature = sig.ResultByte;
var sig = new Signature(Signature.DisclaimerType.Parken,tbFahrer.Text, tbFirma.Text, tbKennzeichen.Text, false);
if (sig.ShowDialog() == false)
{
_signature = sig.ResultByte;
}
}
else
MessageBox.Show("Kein Unterschriftenpad gefunden\nMeldung 0x03", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
}
else MessageBox.Show(this, "Firma und Fahrer müssen ausgefüllt werden", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
}
catch (Exception ex)
{
Log.WriteLog(ex.ToString());
MessageBox.Show($"Es ist ein Fehler aufgetreten\n\nInterne Meldung: {ex.Message}");
MessageBox.Show($"Es ist ein1 Fehler aufgetreten\n\nInterne Meldung: {ex.Message}");
}
}
@ -68,12 +126,17 @@ namespace ZKuP
private async void btnAdd_Click(object sender, RoutedEventArgs e)
{
int Kategorie = 3;
if (_emergency)
Kategorie = 4;
try
{
if (tbParkplatz.Text != "")
query = ($"INSERT INTO zutritte (Kategorie,Name,Zutritt,Pruefung_Zutritt,Pruefung_Einweisung,AnzahlPers,AnzahlFzg,Ansprechpartner,Kl_Unterweisung,Fzg_gemeldet,Kennzeichen,Bemerkung, signature_blob) VALUES ('3','Firma: {tbFirma.Text}, Fahrer: {tbFahrer.Text}','{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','--','--','1','1','{tbHandy.Text}','1','1','{tbKennzeichen.Text}','Parkplatz: {tbParkplatz.Text}\n\nBemerkung:\n{tbBemerkung.Text}', @signature)");
query = ($"INSERT INTO zutritte (Kategorie,Name,Zutritt,Pruefung_Zutritt,Pruefung_Einweisung,AnzahlPers,AnzahlFzg,Ansprechpartner,Kl_Unterweisung,Fzg_gemeldet,Kennzeichen,Bemerkung, signature_blob) VALUES ('{Kategorie}','Firma: {tbFirma.Text}, Fahrer: {tbFahrer.Text}','{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','--','--','1','1','{tbHandy.Text}','1','1','{tbKennzeichen.Text}','Parkplatz: {tbParkplatz.Text}\n\nBemerkung:\n{tbBemerkung.Text}', @signature)");
else
query = ($"INSERT INTO zutritte (Kategorie,Name,Zutritt,Pruefung_Zutritt,Pruefung_Einweisung,AnzahlPers,AnzahlFzg,Ansprechpartner,Kl_Unterweisung,Fzg_gemeldet,Kennzeichen,Bemerkung, signature_blob) VALUES ('3','Firma: {tbFirma.Text}, Fahrer: {tbFahrer.Text}','{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','--','--','1','1','{tbHandy.Text}','1','1','{tbKennzeichen.Text}','{tbBemerkung.Text}', @signature)");
query = ($"INSERT INTO zutritte (Kategorie,Name,Zutritt,Pruefung_Zutritt,Pruefung_Einweisung,AnzahlPers,AnzahlFzg,Ansprechpartner,Kl_Unterweisung,Fzg_gemeldet,Kennzeichen,Bemerkung, signature_blob) VALUES ('{Kategorie}','Firma: {tbFirma.Text}, Fahrer: {tbFahrer.Text}','{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}','--','--','1','1','{tbHandy.Text}','1','1','{tbKennzeichen.Text}','{tbBemerkung.Text}', @signature)");
await SQL.WriteSQL(query, _signature);
}
@ -89,19 +152,25 @@ namespace ZKuP
private async void cBLieferfirma_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
System.Data.DataTable result = new System.Data.DataTable();
string firma = (sender as ComboBox).SelectedItem.ToString().Split(new string[] { " Fahrer: " }, StringSplitOptions.None)[0];
string fahrer = (sender as ComboBox).SelectedItem.ToString().Split(new string[] { " Fahrer: " }, StringSplitOptions.None)[1];
if (fahrer != "")
result = await SQL.ReadSQL($"SELECT * FROM zkup.lieferanten WHERE Firma = '{firma}' AND Fahrer = '{fahrer}' LIMIT 1");
else
result = await SQL.ReadSQL($"SELECT * FROM zkup.lieferanten WHERE Firma = '{firma}' LIMIT 1");
if ((sender as ComboBox).SelectedItem != null)
{
string id = (sender as ComboBox).SelectedItem.ToString().Split(new string[] { " ID: " }, StringSplitOptions.None)[1].Trim(' ');
//string fahrer = (sender as ComboBox).SelectedItem.ToString().Split(new string[] { " Fahrer: " }, StringSplitOptions.None)[1].Split(new string[] { " Kennz.: " }, StringSplitOptions.None)[0].TrimEnd(' ');
//if (fahrer != "")
// result = await SQL.ReadSQL($"SELECT * FROM zkup.lieferanten WHERE Firma = '{firma}' AND Fahrer = '{fahrer}' LIMIT 1");
//else
// result = await SQL.ReadSQL($"SELECT * FROM zkup.lieferanten WHERE Firma = '{firma}' LIMIT 1");
result = await SQL.ReadSQL($"SELECT * FROM zkup.lieferanten WHERE ID = '{id}' LIMIT 1");
tbFirma.Text = result.Rows[0].ItemArray[0] != null ? result.Rows[0].ItemArray[0].ToString() : "";
tbFahrer.Text = result.Rows[0].ItemArray[1] != null ? result.Rows[0].ItemArray[1].ToString() : "";
tbHandy.Text = result.Rows[0].ItemArray[2] != null ? result.Rows[0].ItemArray[2].ToString() : "";
tbKennzeichen.Text = result.Rows[0].ItemArray[3] != null ? result.Rows[0].ItemArray[3].ToString() : "";
tbFirma.Text = result.Rows[0].ItemArray[0] != null ? result.Rows[0].ItemArray[0].ToString() : "";
tbFahrer.Text = result.Rows[0].ItemArray[1] != null ? result.Rows[0].ItemArray[1].ToString() : "";
tbHandy.Text = result.Rows[0].ItemArray[2] != null ? result.Rows[0].ItemArray[2].ToString() : "";
tbKennzeichen.Text = result.Rows[0].ItemArray[3] != null ? result.Rows[0].ItemArray[3].ToString() : "";
}
}
private void TextBoxes_PreviewKeyDown(object sender, KeyEventArgs e)
@ -117,6 +186,5 @@ namespace ZKuP
}
return;
}
}
}

97
ZKuP/Family.xaml Normal file
View File

@ -0,0 +1,97 @@
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ZKuP"
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls" x:Class="ZKuP.Family"
mc:Ignorable="d"
Title="Werksführung" Height="300" Width="500" WindowStartupLocation="CenterOwner">
<Window.Resources>
<local:ConvertToSlot x:Key="ConvertToSlot"></local:ConvertToSlot>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="1.5*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="Gewünschten Tag wählen:" Grid.RowSpan="2" Margin="10" HorizontalAlignment="Center" VerticalAlignment="Top" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<DatePicker x:Name="dPdate" Grid.RowSpan="2" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="30" SelectedDateChanged="dPdate_SelectedDateChanged"/>
<!--<TextBlock Text="Samstag" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="10" Height="30"/>
<TextBlock x:Name="lblDateSat" Text="Date Saturday" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="30" Height="30"/>
-->
<!--<TextBlock Text="Sonntag" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="10" Height="30"/>
<TextBlock x:Name="lblDateSun" Text="Date Sunday" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="30" Height="30"/>
-->
<StackPanel Orientation="Vertical" Grid.RowSpan="2" Grid.Column="0" Margin="0,20,0,0" VerticalAlignment="Center">
<Button x:Name="btnSatSlot1" Content="Datum wählen" Height="30" Margin="10" IsEnabled="False" Click="btnSatSlot1_Click"/>
<Button x:Name="btnSatSlot2" Content="Datum wählen" Height="30" Margin="10" IsEnabled="False" Click="btnSatSlot2_Click"/>
<Button x:Name="btnSatSlot3" Content="Datum wählen" Height="30" Margin="10" IsEnabled="False" Click="btnSatSlot3_Click"/>
</StackPanel>
<!--<StackPanel Orientation="Vertical" Grid.Column="1" VerticalAlignment="Center">
<Button x:Name="btnSunSlot1" Content="Führung 1" Height="30" Margin="10"/>
<Button x:Name="btnSunSlot2" Content="Führung 2" Height="30" Margin="10"/>
</StackPanel>-->
<TextBlock Text="Von Ihnen gebuchte Führungen:" Grid.Column="1" Margin="10" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<DataGrid x:Name="dgOwn" Grid.Column="1" Margin="10,30,10,10" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Datum" Binding="{Binding Date, ConverterCulture=de-DE, StringFormat=\{0:dddd dd.MM.yy\}}" Width="*">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Left"/>
<Setter Property="Margin" Value="10,0,10,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Zeitslot" Binding="{Binding Slot, Converter={StaticResource ConvertToSlot}}" Width="*">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Left"/>
<Setter Property="Margin" Value="10,0,10,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTemplateColumn Width="30">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Width="28" Content="3" Height="20" Foreground="Red" FontSize="20" Padding="1" FontFamily="Wingdings 2" ToolTip="Löschen" Click="Button_Click"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<!--<TextBlock Text="Alle gebuchten Führungen:" Grid.Column="1" Grid.Row="1" Margin="10" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<DataGrid x:Name="dgAll" Grid.Column="1" Grid.Row="1" Margin="10,30,10,10" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Datum" Binding="{Binding Date, ConverterCulture=de-DE, StringFormat=\{0:dd.MM.yy\}}" Width="*">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Left"/>
<Setter Property="Margin" Value="10,0,10,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Anz. gebucht" Binding="{Binding Count}" Width="*">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="Margin" Value="10,0,10,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>-->
</Grid>
</Window>

176
ZKuP/Family.xaml.cs Normal file
View File

@ -0,0 +1,176 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace ZKuP
{
/// <summary>
/// Interaktionslogik für Family.xaml
/// </summary>
public partial class Family : Window
{
DataTable dtOwn;
DataTable dtAll;
public Family()
{
InitializeComponent();
SetCalendar();
dgOwn.DataContext = dtOwn;
//dgAll.DataContext = dtAll;
QueryTables();
}
private void SetCalendar()
{
dPdate.DisplayDateStart = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek + 1);
dPdate.DisplayDateEnd = DateTime.Now + TimeSpan.FromDays(365);
var minDate = dPdate.DisplayDateStart.Value;
var maxDate = dPdate.DisplayDateEnd.Value;
for (var d = minDate; d <= maxDate && (DateTime.MaxValue - d.AddDays(7)).Days > 7; d = d.AddDays(7))
{
var range = new CalendarDateRange(d, d.AddDays(4));
dPdate.BlackoutDates.Add(range);
}
}
private async void QueryTables()
{
dtOwn = await SQL.ReadSQL($"SELECT `Date`, `Slot` FROM zkup.family WHERE `User` = '{Environment.UserName}'");
//dtAll = await SQL.ReadSQL($"SELECT `Date`, count(`Date`) AS Count FROM zkup.family GROUP BY `Date`");
dgOwn.ItemsSource = dtOwn.DefaultView;
//dgAll.ItemsSource = dtAll.DefaultView;
if(dPdate.SelectedDate.HasValue)
DateChanged(dPdate);
}
private void btnSatSlot1_Click(object sender, RoutedEventArgs e)
{
if (dPdate.SelectedDate.HasValue)
{
FamilyBooking fb1 = new FamilyBooking(1, dPdate.SelectedDate.Value);
fb1.Owner = this;
fb1.Closed += Child_Closed;
fb1.ShowDialog();
}
else
{
MessageBox.Show("Bitte zuerst Datum wählen", "Kein Datum gewählt", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
}
private void btnSatSlot2_Click(object sender, RoutedEventArgs e)
{
if (dPdate.SelectedDate.HasValue)
{
FamilyBooking fb2 = new FamilyBooking(2, dPdate.SelectedDate.Value);
fb2.Owner = this;
fb2.ShowDialog();
fb2.Closed += Child_Closed;
QueryTables();
}
else
{
MessageBox.Show("Bitte zuerst Datum wählen", "Kein Datum gewählt", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
}
private void btnSatSlot3_Click(object sender, RoutedEventArgs e)
{
if (dPdate.SelectedDate.HasValue)
{
FamilyBooking fb3 = new FamilyBooking(3, dPdate.SelectedDate.Value);
fb3.Owner = this;
fb3.ShowDialog();
fb3.Closed += Child_Closed;
QueryTables();
}
else
{
MessageBox.Show("Bitte zuerst Datum wählen", "Kein Datum gewählt", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
}
private void Child_Closed(object sender, EventArgs e)
{
QueryTables();
}
private void dPdate_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
{
DateChanged(sender);
}
private void DateChanged(object sender)
{
var count = SQL.ReadSingleValue($"SELECT COUNT(`Date`) FROM zkup.family WHERE `Date` = '{(sender as DatePicker).SelectedDate.Value.ToString("yyyy-MM-dd")}'");
btnSatSlot1.IsEnabled = true;
btnSatSlot2.IsEnabled = true;
btnSatSlot3.IsEnabled = true;
btnSatSlot1.Content = "14:30 - 16:00 buchen";
btnSatSlot2.Content = "16:15 - 17:45 buchen";
btnSatSlot3.Content = "18:00 - 19:30 buchen";
if (int.Parse(count) > 0)
{
var usedSlots = SQL.ReadListString($"SELECT `Slot` FROM zkup.family WHERE `Date` = '{(sender as DatePicker).SelectedDate.Value.ToString("yyyy-MM-dd")}'").Result;
if(usedSlots.Contains("1"))
{
btnSatSlot1.IsEnabled = false;
btnSatSlot1.Content = "Slot 1 belegt";
}
if(usedSlots.Contains("2"))
{
btnSatSlot2.IsEnabled = false;
btnSatSlot2.Content = "Slot 2 belegt";
}
if(usedSlots.Contains("3"))
{
btnSatSlot3.IsEnabled = false;
btnSatSlot3.Content = "Slot 3 belegt";
}
}
}
private async void Button_Click(object sender, RoutedEventArgs e)
{
e.Handled = true;
var y = dgOwn.SelectedItem as DataRowView;
var res = MessageBox.Show($"Möchten Sie Ihre Buchung am {DateTime.Parse(y.Row.ItemArray[0].ToString()).ToString("dd.MM.yyyy")} stornieren?", "Wirklich löschen?", MessageBoxButton.YesNoCancel, MessageBoxImage.Exclamation);
if(res == MessageBoxResult.Yes)
{
await SQL.WriteSQL($"DELETE FROM zkup.family WHERE `User` = '{Environment.UserName}' AND `Date` = '{DateTime.Parse(y.Row.ItemArray[0].ToString()).ToString("yyyy-MM-dd")}'");
QueryTables();
}
}
}
}

26
ZKuP/FamilyBooking.xaml Normal file
View File

@ -0,0 +1,26 @@
<Window x:Class="ZKuP.FamilyBooking"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ZKuP"
mc:Ignorable="d"
Title="Führung buchen" Height="440" Width="322" ResizeMode="NoResize" WindowStartupLocation="CenterOwner">
<Grid>
<StackPanel Orientation="Vertical" Margin="10,10,10,90">
<TextBlock Text="Name Mitarbeiter:" Margin="0,10,0,5" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<TextBox x:Name="tbName" Margin="10,0,10,5" Height="25" PreviewKeyDown="tb_PreviewKeyDown"/>
<TextBlock Text="Telefonnummer Mitarbeiter:" Margin="0,10,0,5" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<TextBox x:Name="tbTel" Margin="10,0,10,0" Height="25" PreviewKeyDown="tb_PreviewKeyDown"/>
<TextBlock Margin="0,10,0,5" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"><Run Language="de-de" Text="DB-"/><Run Text="Email"/><Run Text=":"/><Run Language="de-de" Text=" (Max.Mustermann@deutschebahn.com)"/></TextBlock>
<TextBox x:Name="tbEmail" Margin="10,0,10,0" Height="25" PreviewKeyDown="tb_PreviewKeyDown"/>
<TextBlock Text="Personalnummer:" Margin="0,10,0,5" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<TextBox x:Name="tbPersnr" Margin="10,0,10,5" Height="25" PreviewKeyDown="tb_PreviewKeyDown"/>
<TextBlock Text="Anzahl Besucher: (Max. 5 Personen inkl. MA)" Margin="0,10,0,5" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<TextBox x:Name="tbAnzBegleiter" Margin="10,0,10,0" Height="25" TextChanged="tbAnzBegleiter_TextChanged" PreviewKeyDown="tb_PreviewKeyDown"/>
</StackPanel>
<TextBlock x:Name="lblDate" Text="am SamSonn 01.01.9999 von 99:99 - 99:99" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,50" FontSize="14" FontWeight="Bold" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<Button x:Name="btnBook" Content="Führung buchen" VerticalAlignment="Bottom" Margin="5" Height="30" Click="btnBook_Click"/>
</Grid>
</Window>

164
ZKuP/FamilyBooking.xaml.cs Normal file
View File

@ -0,0 +1,164 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Net.Mail;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace ZKuP
{
/// <summary>
/// Interaktionslogik für FamilyBooking.xaml
/// </summary>
public partial class FamilyBooking : Window
{
DateTime date = DateTime.MinValue;
int slot = 0;
public FamilyBooking(int Slot, DateTime Date)
{
InitializeComponent();
date = Date;
slot = Slot;
string time = "";
switch (Slot)
{
case 1:
time = "14:00 - 16:00";
break;
case 2:
time = "16:15 - 17:45";
break;
case 3:
time = "18:00 - 19:30";
break;
default:
time = "Error";
break;
}
lblDate.Text = $"am {date.ToString("dddd", new CultureInfo("de-DE"))} den {date.Date.ToString("dd.MM.yy")} {time}";
}
private async void btnBook_Click(object sender, RoutedEventArgs e)
{
if (CheckButtons())
{
var count = SQL.ReadSingleValue($"SELECT COUNT(`Date`) FROM zkup.family WHERE `Date` = '{date.ToString("yyyy-MM-dd")}'");
if (int.Parse(count) < 3)
{
try
{
await SQL.WriteSQL($"INSERT INTO zkup.family (Name, TelNr, Persnr, AnzBegleiter, Date, Slot, User, Email) VALUES ('{tbName.Text}','{tbTel.Text}','{tbPersnr.Text}','{tbAnzBegleiter.Text}','{date.ToString("yyyy-MM-dd")}','{slot}','{Environment.UserName}','{tbEmail.Text}')");
}
catch (Exception)
{
MessageBox.Show("Es ist ein Fehler aufgetreten", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
}
finally
{
MessageBox.Show("Werksführung wurde erfolgreich gebucht!", "Erfolgreich", MessageBoxButton.OK, MessageBoxImage.Information);
this.Close();
}
}
else
{
MessageBox.Show("Tag ist bereits vollständig ausgebucht", "Kein freier Slot", MessageBoxButton.OK, MessageBoxImage.Error);
this.Close();
}
}
else
MessageBox.Show("Alle Felder müssen korrekt ausgefüllt werden!", "Fehlende Felder", MessageBoxButton.OK, MessageBoxImage.Error);
}
private bool CheckButtons()
{
var ret = false;
if (Helper.FindVisualChildren<TextBox>(this).Any(p => string.IsNullOrWhiteSpace(p.Text)))
ret = false;
else ret = true;
try
{
var address = new MailAddress(tbEmail.Text).Address;
ret = true;
}
catch (FormatException)
{
ret = false;
}
return ret;
}
ToolTip tt = new ToolTip();
private void tbAnzBegleiter_TextChanged(object sender, TextChangedEventArgs e)
{
tt.IsOpen = false;
if (Regex.IsMatch(tbAnzBegleiter.Text, "[0-9]"))
{
if (tbAnzBegleiter.Text.Length > 1)
{
e.Handled = true;
tbAnzBegleiter.Text = tbAnzBegleiter.Text.Remove(tbAnzBegleiter.Text.Length - 1, 1);
}
if (int.Parse(tbAnzBegleiter.Text) > 5)
{
tt.Content = "Maximal 5 Personen";
tbAnzBegleiter.ToolTip = tt;
tbAnzBegleiter.Text = "5";
tt.IsOpen = true;
}
}
else
{
tt.Content = "Ungültige Eingabe!";
tbAnzBegleiter.ToolTip = tt;
tbAnzBegleiter.Text = "5";
tt.IsOpen = true;
}
}
private void tbPersnr_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
if (Regex.IsMatch(e.Text, "[0-9]"))
{
e.Handled = false;
}
else e.Handled = true;
}
private void tb_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key != Key.OemComma)
{
e.Handled = false;
return;
}
else
{
MessageBox.Show(this, "Komma (',') ist ein nicht erlaubtes Zeichen", "Achtung", MessageBoxButton.OK, MessageBoxImage.Information);
e.Handled = true;
}
return;
}
}
}

View File

@ -17,6 +17,16 @@
<xs:documentation>A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="ExcludeRuntimeAssemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="IncludeRuntimeAssemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="Unmanaged32Assemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of unmanaged 32 bit assembly names to include, delimited with line breaks.</xs:documentation>
@ -43,6 +53,16 @@
<xs:documentation>Controls if .pdbs for reference assemblies are also embedded.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="IncludeRuntimeReferences" type="xs:boolean">
<xs:annotation>
<xs:documentation>Controls if runtime assemblies are also embedded.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="UseRuntimeReferencePaths" type="xs:boolean">
<xs:annotation>
<xs:documentation>Controls whether the runtime assemblies are embedded with their full path or only with their assembly name.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="DisableCompression" type="xs:boolean">
<xs:annotation>
<xs:documentation>Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option.</xs:documentation>
@ -73,6 +93,16 @@
<xs:documentation>A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ExcludeRuntimeAssemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with |</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="IncludeRuntimeAssemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with |.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Unmanaged32Assemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of unmanaged 32 bit assembly names to include, delimited with |.</xs:documentation>

View File

@ -5,11 +5,11 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ZKuP"
mc:Ignorable="d"
Title="Parkausweis(e) genehmigen" Height="450" Width="1300">
Title="Parkausweis(e) genehmigen" Height="450" Width="1350">
<Grid>
<DataGrid x:Name="dgGrant" AutoGenerateColumns="False" ItemsSource="{Binding .}" CanUserDeleteRows="False" CanUserAddRows="False" CanUserReorderColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding idparkausweise}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="ID" IsReadOnly="True" Width="40"/>
<DataGridTextColumn Binding="{Binding idparkausweise}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="ID" IsReadOnly="True" Width="35"/>
<DataGridTextColumn Binding="{Binding MA_Vorname}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Vorname" IsReadOnly="True" Width="*"/>
<DataGridTextColumn Binding="{Binding MA_Name}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Nachname" IsReadOnly="True" Width="*"/>
<DataGridTextColumn Binding="{Binding Abteilung}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Abteilung" IsReadOnly="True" Width="80"/>
@ -32,18 +32,18 @@
<DataGridTextColumn Binding="{Binding Email}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="E-Mail" IsReadOnly="True" Width="220"/>
<DataGridTextColumn Binding="{Binding Telefon}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Telefon" IsReadOnly="True" Width="*"/>
<DataGridTextColumn Binding="{Binding Vorgesetzter}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Vorgesetzter" IsReadOnly="True" Width="110"/>
<DataGridCheckBoxColumn Binding="{Binding Schicht}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Schicht" IsReadOnly="True" Width="50"/>
<DataGridTemplateColumn CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Genehmigen" Width="80">
<DataGridCheckBoxColumn Binding="{Binding Schicht}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Schicht" IsReadOnly="True" Width="72"/>
<DataGridTemplateColumn CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Genehmigen" Width="90">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button x:Name="btnGrant" Content="Genehmigen" Click="btnGrant_Click"/>
<Button x:Name="btnGrant" Content="Genehmigen" FontSize="12" Padding="-2" Height="25" Click="btnGrant_Click"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Ablehnen" Width="75">
<DataGridTemplateColumn CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Ablehnen" Width="80">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button x:Name="btnDecline" Content="Ablehnen" Click="btnDecline_Click"/>
<Button x:Name="btnDecline" Content="Ablehnen" FontSize="12" Padding="-2" Height="25" Click="btnDecline_Click"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

View File

@ -66,7 +66,7 @@ namespace ZKuP
switch (Genehmigt)
{
case true:
System.Diagnostics.Process.Start($"mailto:DBSi-S.ICE.Werk@deutschebahn.com?subject=Neue Parkkarte&cc={Email}&body=" +
System.Diagnostics.Process.Start($"mailto:{Email}?subject=Neue Parkkarte&body=" +
"Guten Tag,%0D%0A%0D%0A" +
"eine neue Parkkarte wurde genehmigt%0D%0A%0D%0A" +
$"Parkausweis Nr.: {id}%0D%0A" +
@ -74,6 +74,8 @@ namespace ZKuP
$"Kennzeichen: {Kennzeichen}%0D%0A" +
$"E-Mail: {Email}%0D%0A" +
$"Firma: {Firma}%0D%0A%0D%0A" +
$"%0D%0A%0D%0A" +
$"Parkkarten können in ca. 5 Tagen im Gebäude G Raum G0006/7 abgeholt werden.%0D%0A" +
"Mit freundlichen Grüßen%0D%0A" +
$"{user[0]} {user[1]}%0D%0A" +
"Anlagenmanagement und IT-Service(P.FBW-M2(1))");

View File

@ -1,12 +1,17 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using Word = Microsoft.Office.Interop.Word;
using Excel = Microsoft.Office.Interop.Excel;
//using Word = Microsoft.Office.Interop.Word;
namespace ZKuP
{
@ -43,6 +48,26 @@ namespace ZKuP
}
}
public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject
{
if (depObj != null)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
if (child != null && child is T)
{
yield return (T)child;
}
foreach (T childOfChild in FindVisualChildren<T>(child))
{
yield return childOfChild;
}
}
}
}
public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj,
string name) where T : DependencyObject
{
@ -133,6 +158,61 @@ namespace ZKuP
System.Diagnostics.Process.Start($"mailto:marcus.bachler@deutschebahn.com?subject=Fehlermeldung_ZKuP&body=" + body);
}
public static string GetNameFromMail(string _mail)
{
var mail = _mail.Split('@')[0];
var name = "";
if (mail.Count(p => p == '.') == 0)
name = mail;
else if (mail.Count(p => p == '.') == 1)
name = Helper.InsertSpaceBeforeUpperCase($"{Helper.FirstCharToUpperCase(mail.Split('.')[0])}{Helper.FirstCharToUpperCase(mail.Split('.')[1])}");
else if (mail.Count(p => p == '.') == 2)
name = Helper.InsertSpaceBeforeUpperCase($"{Helper.FirstCharToUpperCase(mail.Split('.')[0])}{Helper.FirstCharToUpperCase(mail.Split('.')[2])}");
else
{
MessageBox.Show("Email Adresse konnte nicht erkannt werden", "Fehlerhafte Mail Adresse", MessageBoxButton.OK, MessageBoxImage.Error);
return "-1";
}
if (name.Contains('-'))
name = Helper.AfterDashToUpperCase(name);
return name;
}
public static string FirstCharToUpperCase(string input)
{
if (string.IsNullOrEmpty(input))
{
return string.Empty;
}
return $"{input[0].ToString().ToUpper()}{input.Substring(1)}";
}
public static string AfterDashToUpperCase(string input)
{
if (string.IsNullOrEmpty(input))
{
return string.Empty;
}
if (!input.Contains("-"))
return input;
var result = "";
for (var word = 1; word < input.Split('-').Length; word++)
{
if (word == 1) result = input.Split('-')[0] + $"-{input.Split('-')[word][0].ToString().ToUpper() + input.Split('-')[word].ToString().Substring(1)}";
else
result = result + $"-{input.Split('-')[word][0].ToString().ToUpper() + input.Split('-')[word].ToString().Substring(1)}";
}
return result;
}
public static string InsertSpaceBeforeUpperCase(string str)
{
var sb = new StringBuilder();
@ -186,7 +266,7 @@ namespace ZKuP
using (System.IO.MemoryStream outStream = new System.IO.MemoryStream())
{
System.Windows.Media.Imaging.BitmapEncoder enc = new System.Windows.Media.Imaging.TiffBitmapEncoder();
enc.Frames.Add(System.Windows.Media.Imaging.BitmapFrame.Create(bitmapImage));
enc.Frames.Add(System.Windows.Media.Imaging.BitmapFrame.Create(bitmapImage, null, null, null));
enc.Save(outStream);
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(outStream);
@ -239,25 +319,31 @@ namespace ZKuP
{
//Console.WriteLine("Microsoft Word is installed");
Word.Application wordApp = new Word.Application();
Type wordType = Type.GetTypeFromProgID("Word.Application");
dynamic wordApp = Activator.CreateInstance(wordType);
//Word.Application wordApp = new Word.Application();
wordApp.Visible = true;
Word.Document document = wordApp.Documents.OpenNoRepairDialog("https://dbsw.sharepoint.com/:w:/r/sites/PfoertnerWerkMuenche/Freigegebene%20Dokumente/DBSecurity/Parkkarte_Template_ab_2020.dotx");
//Word.Document document = wordApp.Documents.OpenNoRepairDialog("https://dbsw.sharepoint.com/:w:/r/sites/PfoertnerWerkMuenche/Freigegebene%20Dokumente/DBSecurity/Parkkarte_Template_ab_2020.dotx");
dynamic document = wordApp.Documents.OpenNoRepairDialog("https://dbsw.sharepoint.com/:w:/r/sites/PfoertnerWerkMuenche/Freigegebene%20Dokumente/DBSecurity/Parkkarte_Template_ab_2020.dotx");
//Word.Document document = wordApp.Documents.OpenNoRepairDialog(@"\\muenas001.wb4fv.db.de\GLW99\ZKuP\Parkkarte_Template_ab_2020.dotx");
document.Activate();
Word.Table table = document.Tables[1];
//Word.Table table = document.Tables[1];
dynamic table = document.Tables[1];
table.Cell(1, 2).Range.Text = Nr;
table.Cell(3, 2).Range.Text = Kennzeichen;
table.Cell(4, 2).Range.Text = Firma;
Word.Table table2 = document.Tables[2];
//Word.Table table2 = document.Tables[2];
dynamic table2 = document.Tables[2];
table2.Cell(1, 1).Range.Text = Name;
Word.Dialog dialog = null;
dialog = wordApp.Dialogs[Word.WdWordDialog.wdDialogFilePrint];
//Word.Dialog dialog = null;
dynamic dialog = null;
dialog = wordApp.Dialogs[88];/*Word.WdWordDialog.wdDialogFilePrint*/
var dialogResult = dialog.Show();
if (dialogResult == 1)
{
@ -265,7 +351,7 @@ namespace ZKuP
}
else if (dialogResult == -1)
{
document.Close(Word.WdSaveOptions.wdDoNotSaveChanges);
document.Close(0);/*Word.WdSaveOptions.wdDoNotSaveChanges*/
wordApp.Quit();
}
}
@ -276,15 +362,126 @@ namespace ZKuP
Log.WriteLog(ex.ToString());
MessageBox.Show($"Fehlermeldung:\n\n{ex.Message}", "Fehler!", MessageBoxButton.OK, MessageBoxImage.Error);
return false;
}
}
return true;
}
public static bool OverMaxLength(object value, int maxLength, string regex = "")
{
var result = false;
if (value.ToString().Length >= maxLength)
{
result = true;
return result;
}
else result = false;
if (regex != "")
if (!System.Text.RegularExpressions.Regex.IsMatch(value.ToString(), regex)) result = true;
else result = false;
return result;
}
static List<object> treeVisual = new List<object>();
public static List<object> ShowWPFVisualTree(DependencyObject element)
{
treeVisual.Clear();
return AddElementsAtVisualTree(element, null);
}
///
/// Adds the elements at visual tree.
///
/// The element. /// The previtem.
private static List<object> AddElementsAtVisualTree(DependencyObject element, TreeViewItem previtem)
{
TreeViewItem item = new TreeViewItem();
item.Header = element.GetType().Name;
item.IsExpanded = true;
if (previtem == null)
{
treeVisual.Add(item);
}
else
{
previtem.Items.Add(item);
}
int totalElementcount = VisualTreeHelper.GetChildrenCount(element);
for (int counter = 0; counter < totalElementcount; counter++) { AddElementsAtVisualTree(VisualTreeHelper.GetChild(element, counter), item); }
return treeVisual;
}
}
public class ExcelExporter
{
private Microsoft.Office.Interop.Excel.Application _excel;
private Microsoft.Office.Interop.Excel.Workbook _workbook;
private Microsoft.Office.Interop.Excel.Worksheet _worksheet;
private Microsoft.Office.Interop.Excel.Range _cellRange;
public void Export(DataTable table)
{
using (var regWord = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey("Excel.Application"))
{
if (regWord == null)
{
MessageBox.Show("Microsoft Excel wird benötigt, ist aber nicht installiert\nFunktion kann nicht ausgeführt werden", "Excel nicht installiert", MessageBoxButton.OK, MessageBoxImage.Error);
}
else
{
_excel = new Microsoft.Office.Interop.Excel.Application
{
DisplayAlerts = false,
Visible = false
};
_workbook = _excel.Workbooks.Add(Type.Missing);
_worksheet = (Microsoft.Office.Interop.Excel.Worksheet)_workbook.ActiveSheet;
_worksheet.Columns.NumberFormat = "@";
int rowcount = 1;
for (int i = 1; i <= table.Columns.Count; i++)
{
_worksheet.Cells[1, i] = table.Columns[i - 1].ColumnName;
}
foreach (System.Data.DataRow row in table.Rows)
{
rowcount += 1;
for (int i = 0; i < table.Columns.Count; i++)
{
_worksheet.Cells[rowcount, i + 1] = row[i].ToString();
}
}
_worksheet.Range["A1:F1"].Interior.Color = Excel.XlRgbColor.rgbLightBlue;
_cellRange = _worksheet.Range[_worksheet.Cells[1, 1], _worksheet.Cells[rowcount, table.Columns.Count]];
_cellRange.EntireColumn.AutoFit();
_excel.Visible = true;
//_worksheet.Cells.AutoFilter();
//_workbook.SaveAs(pathWithFilename);
//_workbook.Close();
//_excel.Quit();
}
}
}
}
public class ConvertToBackground : System.Windows.Data.IValueConverter
{
@ -320,6 +517,8 @@ namespace ZKuP
string input = value.ToString().Split(' ')[0];
if (input == "Besucher:")
return 1;
else if (input == "Führung:")
return 2;
else
return 0;
@ -329,6 +528,31 @@ namespace ZKuP
{
throw new NotImplementedException();
}
}
public class ConvertToSlot : System.Windows.Data.IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
int input = int.Parse(value.ToString());
if (input == 1)
return "14:30 - 16:00";
else if (input == 2)
return "16:15 - 17:45";
else if (input == 3)
return "18:00 - 19:30";
else
return "Error";
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
//public class ConvertDateToBackground : System.Windows.Data.IValueConverter
@ -367,6 +591,10 @@ namespace ZKuP
return "Besucher";
case "3":
return "Lieferant";
case "4":
return "Notdienst";
case "5":
return "Führung";
default:
return "Fehler!";
}
@ -381,10 +609,9 @@ namespace ZKuP
public class BoolToCheckBox : System.Windows.Data.IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
int input = value != null ? System.Convert.ToInt16(value) : 0;
switch (input)
@ -414,15 +641,74 @@ namespace ZKuP
}
}
public class IntToBool : System.Windows.Data.IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
int input = value != null ? System.Convert.ToInt16(value) : 0;
switch (input)
{
case 1:
return true;
case 0:
return false;
default:
return false;
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
bool input = System.Convert.ToBoolean(value);
switch (input)
{
case true:
return 1;
case false:
return 0;
default:
return 0;
}
}
}
public class IntToYesNo : System.Windows.Data.IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
int input = value != null ? System.Convert.ToInt16(value) : 0;
switch (input)
{
case 1:
return "Ja";
case 0:
return "Nein";
default:
return "Nein";
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
public class MultiToBackground : System.Windows.Data.IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
try
{
if (System.Convert.ToInt16(values[0]) <= System.Convert.ToInt16(values[1]))
return new SolidColorBrush(Colors.LightGreen);
else return new SolidColorBrush(Colors.LightYellow);
if (System.Convert.ToInt16(values[0]) <= System.Convert.ToInt16(values[1]))
return new SolidColorBrush(Colors.LightGreen);
else return new SolidColorBrush(Colors.LightYellow);
}
catch (Exception)
@ -437,10 +723,59 @@ namespace ZKuP
}
}
public class DBNullToBool : System.Windows.Data.IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null || value == DBNull.Value)
return false;
else return true;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotSupportedException();
}
}
public class IntToRole : System.Windows.Data.IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string[] roles = { "Pförtner", "Editor", "Admin", "Controller" };
try
{
return roles[(int)value];
}
catch (Exception)
{
return "Error";
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
}
[ValueConversion(typeof(string), typeof(BitmapSource))]
public class SystemIconConverter : IValueConverter
{
public object Convert(object value, Type type, object parameter, System.Globalization.CultureInfo culture)
{
System.Drawing.Icon icon = (System.Drawing.Icon)typeof(System.Drawing.SystemIcons).GetProperty(parameter.ToString(), System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static).GetValue(null, null);
BitmapSource bs = System.Windows.Interop.Imaging.CreateBitmapSourceFromHIcon(icon.Handle, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
return bs;
}
public object ConvertBack(object value, Type type, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotSupportedException();
}
}
}

View File

@ -8,16 +8,29 @@
Title="Unterschriftenanzeige" Height="342" Width="419">
<Grid>
<DatePicker x:Name="dPDate" Height="25" Margin="10,10,106,0" Text="" VerticalAlignment="Top" SelectedDateChanged="DatePicker_SelectedDateChanged"/>
<DatePicker x:Name="dPDate" Height="25" Margin="10,10,106,0" Text="" VerticalAlignment="Top" SelectedDateChanged="DatePicker_SelectedDateChanged" DateValidationError="dPDate_DateValidationError"/>
<Image x:Name="imageSignature" Margin="10,95,10,10" Source="Resources/NoSignature.png"/>
<ComboBox x:Name="cBSignature" Margin="10,68,10,0" VerticalAlignment="Top" SelectionChanged="cBSignature_SelectionChanged"/>
<Button x:Name="btnToday" Content="Heute" Margin="0,13,140,0" VerticalAlignment="Top" Height="19" Padding="1,0,1,1" Click="btnToday_Click" HorizontalAlignment="Right" Width="55"/>
<Button x:Name="btnToday" Content="Heute" FontSize="12" Padding="-2" Margin="0,13,140,0" VerticalAlignment="Top" Height="19" Click="btnToday_Click" HorizontalAlignment="Right" Width="55"/>
<Button x:Name="btnUp" Content="▲" Margin="0,13,201,0" VerticalAlignment="Top" Height="19" Padding="1,0,1,1" Click="btnUp_Click" HorizontalAlignment="Right" Width="20"/>
<Button x:Name="btnDown" Content="▼" Margin="0,13,225,0" VerticalAlignment="Top" Height="19" Padding="1,0,1,1" HorizontalAlignment="Right" Width="20" Click="btnDown_Click"/>
<TextBox x:Name="tbFilter" Height="23" Margin="10,40,106,0" TextWrapping="Wrap" VerticalAlignment="Top" PreviewGotKeyboardFocus="tbFilter_PreviewGotKeyboardFocus" PreviewLostKeyboardFocus="tbFilter_PreviewLostKeyboardFocus" PreviewKeyDown="tbFilter_PreviewKeyDown"/>
<TextBlock x:Name="lblFilter" Height="23" Margin="10,40,106,0" Padding="2" TextWrapping="Wrap" Foreground="Gray" Text="Nach Firma/Name filtern" VerticalAlignment="Top" PreviewGotKeyboardFocus="tbFilter_PreviewGotKeyboardFocus" PreviewLostKeyboardFocus="tbFilter_PreviewLostKeyboardFocus" PreviewKeyDown="tbFilter_PreviewKeyDown" IsHitTestVisible="False"/>
<Button x:Name="btnFiltern" Content="Filtern" HorizontalAlignment="Right" Margin="0,40,10,0" VerticalAlignment="Top" Width="91" Height="23" Click="btnFiltern_Click"/>
<CheckBox x:Name="cbOnlyWithSignature" Content="Nur mit&#xD;&#xA;Unterschrift" Margin="0,10,8,0" VerticalAlignment="Top" Height="25" FontSize="10" Checked="cbOnlyWithSignature_Checked" Unchecked="cbOnlyWithSignature_Unchecked" Width="91" HorizontalAlignment="Right"/>
<Button x:Name="btnFiltern" Content="Filtern" FontSize="12" Padding="-2" HorizontalAlignment="Right" Margin="0,40,10,0" VerticalAlignment="Top" Width="91" Height="23" Click="btnFiltern_Click"/>
<CheckBox x:Name="cbOnlyWithSignature" Content="Nur mit&#xD;&#xA;Unterschrift" Margin="0,10,8,0" VerticalAlignment="Top" Height="25" FontSize="10" Checked="cbOnlyWithSignature_Checked" Unchecked="cbOnlyWithSignature_Unchecked" Width="91" HorizontalAlignment="Right" IsChecked="True"/>
<Grid x:Name="gridSpinner" Background="White">
<local:ucSpinnerPiston RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Center" VerticalAlignment="Center" Height="25" Width="25" Margin="25,25,0,0" >
<local:ucSpinnerPiston.RenderTransform>
<TransformGroup>
<ScaleTransform ScaleY="3" ScaleX="3"/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform X="-13.5" Y="-13.5"/>
</TransformGroup>
</local:ucSpinnerPiston.RenderTransform>
</local:ucSpinnerPiston>
</Grid>
</Grid>
</Window>

View File

@ -24,16 +24,36 @@ namespace ZKuP
{
InitializeComponent();
if (!showComboBox) { cBSignature.Visibility = Visibility.Collapsed; dPDate.Visibility = Visibility.Collapsed; }
else { cBSignature.Visibility = Visibility.Visible; dPDate.Visibility = Visibility.Visible; }
Task.Run(() => Init(image, showComboBox));
dPDate.SelectedDate = DateTime.Now;
}
private async void Init(BitmapImage image, bool showComboBox = false)
{
Dispatcher.Invoke(new Action(() =>
{
if (!showComboBox) { dPDate.Visibility = cBSignature.Visibility = btnToday.Visibility = btnUp.Visibility = btnDown.Visibility = tbFilter.Visibility = lblFilter.Visibility = btnFiltern.Visibility = cbOnlyWithSignature.Visibility = Visibility.Collapsed; }
else { cBSignature.Visibility = dPDate.Visibility = btnToday.Visibility = btnUp.Visibility = btnDown.Visibility = tbFilter.Visibility = lblFilter.Visibility = btnFiltern.Visibility = cbOnlyWithSignature.Visibility = Visibility.Visible; }
}));
if (image != null)
imageSignature.Source = image;
Dispatcher.Invoke(new Action(() =>
{
imageSignature.Source = image;
}));
else
{
var list = SQL.ReadDateTimeAndStringList($"SELECT Zutritt,Name FROM zkup.zutritteLog").Result;
cBSignature.ItemsSource = list.OrderByDescending(p => p);
var list = await SQL.ReadDateTimeAndStringList($"SELECT Zutritt,Name FROM zkup.zutritteLog");
list = list.OrderByDescending(p => p).ToList();
Dispatcher.Invoke(new Action(() =>
{
cBSignature.ItemsSource = list;
gridSpinner.Visibility = Visibility.Collapsed;
}));
}
}
@ -148,5 +168,10 @@ namespace ZKuP
{
Filtern();
}
private void dPDate_DateValidationError(object sender, DatePickerDateValidationErrorEventArgs e)
{
MessageBox.Show("Kein gültiges Datumsformat in Feld 'Datum'", "Fehler", MessageBoxButton.OK, MessageBoxImage.Warning);
}
}
}

View File

@ -9,11 +9,69 @@ namespace ZKuP
{
class Log
{
static string path = @"\\muenas001.wb4fv.db.de\GLW99\ZKuP\Log\log.log";
public static void WriteLog(string Message)
{
File.AppendAllText(path, $"\n--------------------------------\n{DateTime.Now.ToString("dd.MM.yy HH:mm:ss")} | {Environment.UserName} | {Environment.MachineName}: Message:\n{Message}\n\n");
string path = $@"\\mhb00swfs003v.fv-werke.db.de\GLW99\ZKuP\Log\log-{DateTime.Now.Date.ToString("dd-MM-yy")}";
if (Directory.Exists(@"\\mhb00swfs003v.fv-werke.db.de\GLW99\ZKuP\Log"))
{
string currentContent = String.Empty;
string newContent = $"{ Environment.NewLine}" +
$"--------------------------------" +
$"{Environment.NewLine}" +
$"{DateTime.Now.ToString("dd.MM.yy HH:mm:ss")} | {Environment.UserName} | {Environment.MachineName}:" +
$"{Environment.NewLine}" +
$"Message:" +
$"{Environment.NewLine}" +
$"{Message}" +
$"{Environment.NewLine}" +
$"--------------------------------" +
$"{Environment.NewLine}";
try
{
if (File.Exists(path + ".log"))
{
currentContent = File.ReadAllText(path + ".log");
File.WriteAllText(path + ".log", newContent + currentContent);
}
else
{
File.WriteAllText(path + ".log", newContent);
}
}
catch(System.IO.IOException)
{
var rnd = new Random().Next(100);
if (File.Exists(path + $"_{rnd}" + ".log"))
{
currentContent = File.ReadAllText(path + $"_{rnd}" + ".log");
File.WriteAllText(path + $"_{rnd}" + ".log", newContent + currentContent);
}
else
{
File.WriteAllText(path + $"_{rnd}" + ".log", newContent);
}
}
catch (Exception ex)
{
File.WriteAllText($@"\\mhb00swfs003v.fv-werke.db.de\GLW99\ZKuP\Log\log-{DateTime.Now.Ticks.ToString().Substring(DateTime.Now.Ticks.ToString().Length - 5)}", ex.ToString());
}
}
//File.AppendAllText(path, $"{Environment.NewLine + Environment.NewLine}" +
// $"--------------------------------" +
// $"{Environment.NewLine}" +
// $"{DateTime.Now.ToString("dd.MM.yy HH:mm:ss")} | {Environment.UserName} | {Environment.MachineName}:" +
// $"{Environment.NewLine}" +
// $"Message:" +
// $"{Environment.NewLine}" +
// $"{Message}" +
// $"{Environment.NewLine}");
}
}
}

View File

@ -1,8 +1,9 @@
<Window x:Class="ZKuP.MainWindow"
<mah:MetroWindow x:Class="ZKuP.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
xmlns:local="clr-namespace:ZKuP"
xmlns:p="clr-namespace:ZKuP.Properties"
mc:Ignorable="d"
@ -14,24 +15,30 @@
Top="{Binding Source={x:Static p:Settings.Default}, Path=Top, Mode=TwoWay}"
MinHeight="610"
MinWidth="835"
MinWidth="1360"
Closing="Window_Closing"
PreviewKeyDown="Window_PreviewKeyDown" Loaded="Window_Loaded" ContentRendered="Window_ContentRendered" SizeChanged="Window_SizeChanged">
PreviewKeyDown="Window_PreviewKeyDown" Loaded="Window_Loaded" ContentRendered="Window_ContentRendered" SizeChanged="Window_SizeChanged"
>
<!--{Binding Source={x:Static p:Settings.Default}, Path=Height, Mode=TwoWay, FallbackValue=600}-->
<!--{Binding Source={x:Static p:Settings.Default}, Path=Width, Mode=TwoWay, FallbackValue=1420}WindowStartupLocation="CenterScreen"-->
<!--WindowState="{Binding Source={x:Static p:Settings.Default}, Path=State, Mode=TwoWay}"-->
<!--WindowState="{Binding Source={x:Static p:Settings.Default}, Path=State, Mode=TwoWay}"-->
<Window.Resources>
<local:IntToCategory x:Key="IntToCategory"></local:IntToCategory>
<local:ConvertToBackground x:Key="ConvertToBackground"></local:ConvertToBackground>
<local:ConvertToBackground2 x:Key="ConvertToBackground2"></local:ConvertToBackground2>
<local:BoolToCheckBox x:Key="BoolToCheckBox"></local:BoolToCheckBox>
<local:MultiToBackground x:Key="MultiToBackground"></local:MultiToBackground>
<local:DBNullToBool x:Key="DBNullToBool"></local:DBNullToBool>
<local:ReturnToolTip x:Key="ReturnToolTip"></local:ReturnToolTip>
<local:SystemIconConverter x:Key="SystemIcon"></local:SystemIconConverter>
</Window.Resources>
<Grid x:Name="gridBackground">
<Grid.RowDefinitions>
@ -41,47 +48,291 @@
<RowDefinition Height="1*" MinHeight="100"/>
</Grid.RowDefinitions>
<Canvas x:Name="canvasIvo" Visibility="Collapsed">
<Canvas.Background>
<ImageBrush ImageSource="/Resources/skull.png" AlignmentY="Top" Viewport="0,0,50,50" ViewportUnits="Absolute" TileMode="Tile"/>
</Canvas.Background>
</Canvas>
<Button x:Name="btnHelp" Content="Hilfe" Margin="0,63,182,0" VerticalAlignment="Top" Click="BtnHelp_Click" HorizontalAlignment="Right" Width="87" Visibility="Visible" Grid.RowSpan="3"/>
<Grid x:Name="Main" Visibility="Collapsed" Margin="10,0" Height="120" VerticalAlignment="Top" Grid.Row="0">
<TextBox x:Name="tbSearch" HorizontalAlignment="Left" Height="23" Margin="0,97,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="180" Visibility="Collapsed" Padding="0,2,0,0" TextChanged="TextBox_TextChanged" PreviewGotKeyboardFocus="TbSearch_PreviewGotKeyboardFocus" PreviewLostKeyboardFocus="TbSearch_PreviewLostKeyboardFocus"/>
<TextBlock x:Name="lblSearch" Text="Ankunft heute durchsuchen..." Foreground="#99000000" IsHitTestVisible="False" Margin="0,97,0,0" Padding="3" Visibility="Collapsed" HorizontalAlignment="Left" Width="180"/>
<Button x:Name="btnManageUsers" Content="Manage Users" Margin="0,13,172,0" VerticalAlignment="Top" Click="BtnManageUsers_Click" HorizontalAlignment="Right" Width="87" Visibility="Collapsed"/>
<Button x:Name="btnCreateFirma" Content="Firmen verwalten" Margin="0,38,10,0" VerticalAlignment="Top" HorizontalAlignment="Right" Width="157" Click="BtnCreateFirma_Click" Visibility="Collapsed"/>
<Button x:Name="btnManageAsp" Content="Ansprechpartner verwalten" Margin="0,13,10,0" VerticalAlignment="Top" HorizontalAlignment="Right" Width="157" Click="BtnManageAsp_Click" Visibility="Collapsed"/>
<Button x:Name="btnKarten" Content="Karten" Margin="0,38,172,0" VerticalAlignment="Top" Click="btnKarten_Click" HorizontalAlignment="Right" Width="87" Visibility="Collapsed"/>
<Button x:Name="btnSignatures" Content="Unterschriften" HorizontalAlignment="Right" Margin="0,88,172,0" VerticalAlignment="Top" Width="87" Click="btnSignatures_Click" Visibility="Collapsed"/>
<Button x:Name="btnCreateVisitor" Content="Besucher verwalten" Margin="0,63,10,0" VerticalAlignment="Top" HorizontalAlignment="Right" Width="157" Click="BtnCreateVisitor_Click" Visibility="Collapsed"/>
<Button x:Name="btnCreateDeliveries" Content="Lieferanten verwalten" Height="20" VerticalAlignment="Top" Margin="0,88,10,0" HorizontalAlignment="Right" Width="157" Visibility="Collapsed" Click="btnCreateDeliveries_Click"/>
<Button x:Name="btnArrivalsOverview" Content="Ankunftsübersicht" Height="25" VerticalAlignment="Bottom" Margin="0,0,40,-20" HorizontalAlignment="Right" Width="127" Visibility="Collapsed" Click="btnArrivalsOverview_Click"/>
<Button x:Name="btnCreateParkausweis" Content="Parkausweis beantragen" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="0,13,280,0" Width="150" Click="btnCreateParkausweis_Click" Visibility="Collapsed"/>
<Button x:Name="btnCreateSpecialParkausweis" Content="Sonderparkausweis" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="0,13,440,0" Width="150" Click="btnCreateSpecialParkausweis_Click" Visibility="Collapsed"/>
<Button x:Name="btnGrantParkausweis" Content="Parkausweise genehmigen" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="0,38,280,0" Width="150" Click="btnGrantParkausweis_Click" Visibility="Collapsed"/>
<Button x:Name="btnListParkausweis" Content="Parkausweise verwalten" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="0,63,280,0" Width="150" Click="btnListParkausweis_Click" Visibility="Collapsed"/>
<Button x:Name="btnCheckParkausweis" Content="Parkausweise prüfen" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="0,88,280,0" Width="150" Click="btnCheckParkausweis_Click" Visibility="Collapsed"/>
<Button x:Name="btnPrintParkausweis" Content="Parkausweise drucken" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="0,88,440,0" Width="150" Click="btnPrintParkausweis_Click" Visibility="Collapsed"/>
<Button x:Name="btnNew" Content="Firma/Besucher kommt an" HorizontalAlignment="Left" Margin="0,13,0,0" VerticalAlignment="Top" Width="200" Click="BtnNew_Click" Visibility="Collapsed"/>
<Button x:Name="btnDelivery" Content="Lieferant kommt an" HorizontalAlignment="Left" Margin="0,38,0,0" VerticalAlignment="Top" Width="200" Click="btnDelivery_Click" Visibility="Collapsed"/>
<Button x:Name="btnSettings" Content="⚙" Click="btnSettings_Click" Visibility="Collapsed" HorizontalAlignment="Right" Width="25" Height="25" VerticalAlignment="Bottom" Margin="0,0,10,-20"/>
<Grid x:Name="gridSpinner" Background="White" Grid.RowSpan="4" Panel.ZIndex="99" Margin="0">
<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>
<TransformGroup>
<ScaleTransform ScaleY="3" ScaleX="3"/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform X="-13.5" Y="-13.5"/>
</TransformGroup>
</local:ucSpinnerPiston.RenderTransform>
</local:ucSpinnerPiston>
</Canvas>
<TextBlock Text="ZKuP wird geladen..." HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,120,0,0" FontSize="20" Foreground="#CC000000"/>
<ProgressBar x:Name="pgLoad" Maximum="100" Value="0" Background="{x:Null}" Margin="0,368,0,184" VerticalAlignment="Center" Height="30" HorizontalAlignment="Center" Width="400"/>
</Grid>
<Grid x:Name="gridToday" Grid.Row="1" Visibility="Collapsed" VerticalAlignment="Stretch" MinHeight="100">
<Button x:Name="btnHelp" Content="Hilfe" Margin="0,63,182,0" Height="23" FontSize="12" Padding="-5" FontWeight="Regular" VerticalAlignment="Top" Click="BtnHelp_Click" HorizontalAlignment="Right" Width="87" Visibility="Visible" Grid.RowSpan="3"/>
<Grid x:Name="Main" Visibility="Collapsed" Margin="10,0" Height="120" VerticalAlignment="Top" Grid.Row="0">
<TabControl HorizontalAlignment="Right" Width="650" Height="130" Margin="0,0,-15,0" SelectionChanged="TabControl_SelectionChanged">
<TabItem x:Name="tabPark" Header="Parkausweise" Visibility="Collapsed" Margin="5,0,5,0" Width="130" Height="30" mah:HeaderedControlHelper.HeaderFontSize="18" mah:HeaderedControlHelper.HeaderHorizontalContentAlignment="Center" mah:HeaderedControlHelper.HeaderVerticalContentAlignment="Center">
<StackPanel Orientation="Horizontal" Margin="5">
<StackPanel Orientation="Vertical" Margin="2">
<Button x:Name="btnCreateParkausweis" Content="Parkausweis beantragen" Height="30" FontSize="12" Padding="-5" Margin="2" VerticalAlignment="Top" HorizontalAlignment="Left" FontWeight="Regular" Width="150" Click="btnCreateParkausweis_Click" Visibility="Collapsed"/>
<Button x:Name="btnCreateSpecialParkausweis" Content="Sonderparkausweis" Height="30" FontSize="12" Padding="-5" Margin="2" VerticalAlignment="Top" FontWeight="Regular" Width="150" Click="btnCreateSpecialParkausweis_Click" Visibility="Collapsed"/>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="2">
<Button x:Name="btnGrantParkausweis" Content="Parkausweise genehmigen" Height="30" FontSize="12" Padding="-5" Margin="2" VerticalAlignment="Top" FontWeight="Regular" Width="150" Click="btnGrantParkausweis_Click" Visibility="Collapsed"/>
<Button x:Name="btnListParkausweis" Content="Parkausweise verwalten" Height="30" FontSize="12" Padding="-5" Margin="2" VerticalAlignment="Top" FontWeight="Regular" Width="150" Click="btnListParkausweis_Click" Visibility="Collapsed"/>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="2">
<Button x:Name="btnCheckParkausweis" Content="Parkausweise prüfen" Height="30" FontSize="12" Padding="-5" Margin="2" VerticalAlignment="Top" FontWeight="Regular" Width="150" Click="btnCheckParkausweis_Click" Visibility="Collapsed">
<Button.ToolTip>
<TextBlock Text="Hier kann überprüft werden ob Kennzeichen einen Parkschein hat"/>
</Button.ToolTip>
</Button>
<Button x:Name="btnCheckKennzeichen" Content="Kennzeichen prüfen" Height="30" FontSize="12" Padding="-5" Margin="2" VerticalAlignment="Bottom" FontWeight="Regular" Width="150" Click="btnCheckKennzeichen_Click" Visibility="Collapsed">
<Button.ToolTip>
<StackPanel>
<TextBlock Text="Für eingefahrene Fzg. zb von Firmen das Kennzeichen prüfen"/>
<TextBlock Text="Die Suche ergibt Kennzeichen für die ein Zutritt genehmigt wurde"/>
</StackPanel>
</Button.ToolTip>
</Button>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="2">
<Button x:Name="btnPrintParkausweis" Content="Parkausweise drucken" Height="30" FontSize="12" Padding="-5" Margin="2" VerticalAlignment="Top" FontWeight="Regular" Width="150" Click="btnPrintParkausweis_Click" Visibility="Collapsed"/>
</StackPanel>
<!--<Button x:Name="btnCreateParkausweis" Content="Parkausweis beantragen" Height="23" FontSize="12" Padding="-5" VerticalAlignment="Top" FontWeight="Regular" HorizontalAlignment="Right" Margin="0,13,280,0" Width="150" Click="btnCreateParkausweis_Click" Visibility="Collapsed"/>
<Button x:Name="btnCreateSpecialParkausweis" Content="Sonderparkausweis" Height="23" FontSize="12" Padding="-5" VerticalAlignment="Top" FontWeight="Regular" HorizontalAlignment="Right" Margin="0,13,440,0" Width="150" Click="btnCreateSpecialParkausweis_Click" Visibility="Collapsed"/>
<Button x:Name="btnGrantParkausweis" Content="Parkausweise genehmigen" Height="23" FontSize="12" Padding="-5" VerticalAlignment="Top" FontWeight="Regular" HorizontalAlignment="Right" Margin="0,38,280,0" Width="150" Click="btnGrantParkausweis_Click" Visibility="Collapsed"/>
<Button x:Name="btnListParkausweis" Content="Parkausweise verwalten" Height="23" FontSize="12" Padding="-5" VerticalAlignment="Top" FontWeight="Regular" HorizontalAlignment="Right" Margin="0,63,280,0" Width="150" Click="btnListParkausweis_Click" Visibility="Collapsed"/>
<Button x:Name="btnCheckParkausweis" Content="Parkausweise prüfen" Height="23" FontSize="12" Padding="-5" VerticalAlignment="Top" FontWeight="Regular" HorizontalAlignment="Right" Margin="0,88,280,0" Width="150" Click="btnCheckParkausweis_Click" Visibility="Collapsed">
<Button.ToolTip>
<TextBlock Text="Hier kann überprüft werden ob Kennzeichen einen Parkschein hat"/>
</Button.ToolTip>
</Button>
<Button x:Name="btnPrintParkausweis" Content="Parkausweise drucken" Height="23" FontSize="12" Padding="-5" VerticalAlignment="Top" FontWeight="Regular" HorizontalAlignment="Right" Margin="0,88,440,0" Width="150" Click="btnPrintParkausweis_Click" Visibility="Collapsed"/>
<Button x:Name="btnCheckKennzeichen" Content="Kennzeichen prüfen" Height="23" FontSize="12" Padding="-5" VerticalAlignment="Bottom" FontWeight="Regular" HorizontalAlignment="Right" Margin="0,0,280,-20" Width="150" Click="btnCheckKennzeichen_Click" Visibility="Collapsed">
<Button.ToolTip>
<StackPanel>
<TextBlock Text="Für eingefahrene Fzg. zb von Firmen das Kennzeichen prüfen"/>
<TextBlock Text="Die Suche ergibt Kennzeichen für die ein Zutritt genehmigt wurde"/>
</StackPanel>
</Button.ToolTip>
</Button>-->
</StackPanel>
</TabItem>
<TabItem x:Name="tabFirmBesAsp" Header="Firmen/Besucher/Asp" Visibility="Collapsed" Margin="5,0,5,0" Width="195" FontSize="8" Height="30" mah:HeaderedControlHelper.HeaderFontSize="18" mah:HeaderedControlHelper.HeaderHorizontalContentAlignment="Center" mah:HeaderedControlHelper.HeaderVerticalContentAlignment="Center">
<StackPanel Orientation="Horizontal" Margin="5">
<StackPanel Orientation="Vertical" Margin="2">
<Button x:Name="btnCreateFirma" Content="Firmen verwalten" Height="30" FontSize="12" Padding="-5" Margin="2" FontWeight="Regular" Width="150" Click="BtnCreateFirma_Click" Visibility="Collapsed"/>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="2">
<Button x:Name="btnManageAsp" Content="Ansprechpartner verwalten" Height="30" FontSize="12" Padding="-5" Margin="2" FontWeight="Regular" Width="150" Click="BtnManageAsp_Click" Visibility="Collapsed"/>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="2">
<Button x:Name="btnCreateVisitor" Content="Besucher verwalten" Height="30" FontSize="12" Padding="-5" Margin="2" FontWeight="Regular" Width="150" Click="BtnCreateVisitor_Click" Visibility="Collapsed"/>
<Button x:Name="btnFamily" Content=" Werksführung&#xa;Mein Arbeitsplatz" HorizontalContentAlignment="Center" Height="30" FontSize="11" Padding="-5" Margin="2" FontWeight="Regular" Width="150" Click="btnFamily_Click" Visibility="Visible"/>
</StackPanel>
</StackPanel>
</TabItem>
<TabItem x:Name="tabPfoertner" Header="Pförtner" Visibility="Collapsed" Margin="5,0,5,0" Width="90" FontSize="8" Height="30" mah:HeaderedControlHelper.HeaderFontSize="18" mah:HeaderedControlHelper.HeaderHorizontalContentAlignment="Center" mah:HeaderedControlHelper.HeaderVerticalContentAlignment="Center">
<StackPanel Orientation="Horizontal" Margin="5">
<StackPanel Orientation="Vertical" Margin="2">
<Button x:Name="btnKarten" Content="Karten" Height="30" FontSize="12" Padding="-5" Margin="2" FontWeight="Regular" Click="btnKarten_Click" Width="150" Visibility="Collapsed"/>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="2">
<Button x:Name="btnCreateDeliveries" Content="Lieferanten verwalten" Height="30" FontSize="12" Padding="-5" Margin="2" FontWeight="Regular" Width="150" Visibility="Collapsed" Click="btnCreateDeliveries_Click"/>
</StackPanel>
</StackPanel>
</TabItem>
<TabItem x:Name="tabSonstiges" Header="Sonstiges" Visibility="Collapsed" Margin="5,0,5,0" Width="100" FontSize="8" Height="30" mah:HeaderedControlHelper.HeaderFontSize="18" mah:HeaderedControlHelper.HeaderHorizontalContentAlignment="Center" mah:HeaderedControlHelper.HeaderVerticalContentAlignment="Center">
<StackPanel Orientation="Horizontal" Margin="5">
<StackPanel Orientation="Vertical" Margin="2">
<Button x:Name="btnBelegung" Content="BE-Flächen" Height="30" FontSize="12" Padding="-5" Margin="2" FontWeight="Regular" Width="150" Visibility="Collapsed" Click="btnBelegung_Click"/>
<Button x:Name="btnHelp2" Content="Hilfe" Height="30" FontSize="12" Padding="-5" Margin="2,10,2,2" FontWeight="Regular" Click="BtnHelp_Click" Width="150" Visibility="Visible"/>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="2">
<Button x:Name="btnArrivalsOverview" Content="Ankunftsübersicht" Height="30" FontSize="12" Padding="-5" Margin="2" FontWeight="Regular" Width="150" Visibility="Collapsed" Click="btnArrivalsOverview_Click"/>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="2">
<Button x:Name="btnMcFitSign" Content="McFit User erstellen" Height="30" FontSize="12" Padding="-5" Margin="2" FontWeight="Regular" Width="150" Visibility="Collapsed" Click="btnMcFitSignUp_Click"/>
</StackPanel>
</StackPanel>
</TabItem>
<TabItem x:Name="tabAdmin" Header="Admin" Visibility="Collapsed" Margin="5,0,5,0" Width="80" FontSize="8" Height="30" mah:HeaderedControlHelper.HeaderFontSize="18" mah:HeaderedControlHelper.HeaderHorizontalContentAlignment="Center" mah:HeaderedControlHelper.HeaderVerticalContentAlignment="Center">
<StackPanel Orientation="Horizontal" Margin="5">
<StackPanel Orientation="Vertical" Margin="2">
<Button x:Name="btnManageUsers" Content="Manage Users" Height="30" FontSize="12" Padding="-5" Margin="2" FontWeight="Regular" Click="BtnManageUsers_Click" Width="150" Visibility="Collapsed"/>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="2">
<Button x:Name="btnSignatures" Content="Unterschriften" Height="30" FontSize="12" Padding="-5" Margin="2" FontWeight="Regular" Width="150" Click="btnSignatures_Click" Visibility="Collapsed"/>
</StackPanel>
<StackPanel Orientation="Vertical" Margin="2">
<Button x:Name="btnNotifications" Content="Benachrichtigungen" Height="30" FontSize="12" Padding="-5" Margin="2" FontWeight="Regular" Width="150" Click="btnNotifications_Click" Visibility="Collapsed"/>
</StackPanel>
</StackPanel>
</TabItem>
</TabControl>
<Button x:Name="btnIvoBackground" VerticalAlignment="Top" HorizontalAlignment="Right" Height="95" Width="10" Margin="0,13,-3,0" Click="btnIvoBackground_Click" Visibility="Collapsed"/>
<Button x:Name="btnNew" Content="Firma/Besucher kommt an" Height="23" FontSize="12" Padding="-5" HorizontalAlignment="Left" FontWeight="Regular" Margin="0,13,0,0" VerticalAlignment="Top" Width="200" Click="BtnNew_Click" Visibility="Collapsed"/>
<Button x:Name="btnDelivery" Content="Lieferant kommt an" Height="23" FontSize="12" Padding="-5" HorizontalAlignment="Left" FontWeight="Regular" Margin="0,38,0,0" VerticalAlignment="Top" Width="200" Click="btnDelivery_Click" Visibility="Collapsed"/>
<Button x:Name="btnEmergency" Content="DB Intern Entstördienst kommt an" Height="23" FontSize="12" Padding="-5" HorizontalAlignment="Left" FontWeight="Regular" Margin="0,63,0,0" VerticalAlignment="Top" Width="200" Click="btnDelivery_Click" Visibility="Collapsed"/>
<Border x:Name="canvasHinweis" Visibility="Collapsed" CornerRadius="8" BorderBrush="Red" BorderThickness="1" Width="300" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="410,13,0,0" Height="90">
<Grid Width="300" HorizontalAlignment="Left">
<Image Visibility="Visible"
Margin="10,22,0,0"
Stretch="Uniform"
MaxHeight="30"
VerticalAlignment="Top"
HorizontalAlignment="Left"
Source="{Binding Converter={StaticResource SystemIcon}, ConverterParameter=Warning}"/>
<TextBlock x:Name="lblHinweis" TextWrapping="Wrap" TextAlignment="Center" Padding="55,5,10,5" HorizontalAlignment="Right" VerticalAlignment="Center" Width="300" Height="NaN" />
<!--Background="#32FF5D00"-->
</Grid>
</Border>
<Button x:Name="btnSetHinweis" Visibility="Collapsed" FontSize="12" Padding="-5" Height="23" Content="Hinweis setzen" FontWeight="Regular" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="450,0,0,-10" Width="220" Click="btnSetHinweis_Click"/>
<Button x:Name="btnSettings" Content="" ToolTip="Einstellungen" FontFamily="Segoe UI Symbol" Click="btnSettings_Click" FontSize="20" Padding="-5" FontWeight="Regular" Visibility="Collapsed" HorizontalAlignment="Right" Width="25" Height="25" VerticalAlignment="Bottom" Margin="0,0,0,-20"/>
<Button x:Name="btnDarkMode" Click="btnDarkMode_Click" Padding="-1" FontWeight="Regular" Visibility="Visible" HorizontalAlignment="Right" Width="25" Height="23" VerticalAlignment="Bottom" Margin="0,0,0,9">
<Image x:Name="imgDarkModeButton" Source="/Resources/Moon.png"/>
<Button.ContextMenu>
<ContextMenu>
<MenuItem Header="Blau" Click="AccentMenuItem_Click"/>
<MenuItem Header="Braun" Click="AccentMenuItem_Click"/>
<MenuItem Header="Grün" Click="AccentMenuItem_Click"/>
<MenuItem Header="Magenta" Click="AccentMenuItem_Click"/>
<MenuItem Header="Orange" Click="AccentMenuItem_Click"/>
<MenuItem Header="Rot" Click="AccentMenuItem_Click"/>
<MenuItem Header="Grau" Click="AccentMenuItem_Click"/>
<MenuItem Header="Gelb" Click="AccentMenuItem_Click"/>
</ContextMenu>
</Button.ContextMenu>
<Button.ToolTip>
<StackPanel Orientation="Vertical">
<TextBlock Text="Dark / Light - Mode wechseln"/>
<TextBlock Text="Rechtsklick um Akzentfarbe zu ändern"/>
</StackPanel>
</Button.ToolTip>
</Button>
<Button x:Name="btnBE" Content="BE-Flächenansicht" FontSize="12" Padding="-5" Margin="220, 0, 0, -10" Height="20" FontWeight="Regular" HorizontalAlignment="Left" VerticalAlignment="Bottom" Width="150" Visibility="Collapsed" Click="btnBEImages_Click"/>
<Grid x:Name="BE" Margin="210, 13, 0, 0" Width="350" HorizontalAlignment="Left" ToolTip="Rote Parkplätze sind belegt, Grüne frei">
<Rectangle x:Name="P1" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0, 0, 0, 0" StrokeThickness="1" Fill="Green" PreviewMouseLeftButtonDown="ParkPreviewMouseLeftButtonDown"/>
<TextBlock Text="1" Margin="0, 0, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" Tag="10" PreviewMouseLeftButtonDown="ParkPreviewMouseLeftButtonDown"/>
<Rectangle x:Name="P2" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0, 20, 0, 0" StrokeThickness="1" Fill="Green"/>
<TextBlock Text="2" Margin="0, 20, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" Tag="10" PreviewMouseLeftButtonDown="ParkPreviewMouseLeftButtonDown"/>
<Rectangle x:Name="P3" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0, 40, 0, 0" StrokeThickness="1" Fill="Green"/>
<TextBlock Text="3" Margin="0, 40, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" Tag="10" PreviewMouseLeftButtonDown="ParkPreviewMouseLeftButtonDown"/>
<Rectangle x:Name="P4" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0, 60, 0, 0" StrokeThickness="1" Fill="Green"/>
<TextBlock Text="4" Margin="0, 60, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" Tag="10" PreviewMouseLeftButtonDown="ParkPreviewMouseLeftButtonDown"/>
<Rectangle x:Name="P5" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="25, 0, 0, 0" StrokeThickness="1" Fill="Green" Stroke="Aqua"/>
<TextBlock Text="5" Margin="25, 0, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" PreviewMouseLeftButtonDown="ParkSetPreviewMouseLeftButtonDown" ToolTip="Klicken um Parkplatz zu belegen/freizugeben"/>
<Rectangle x:Name="RedP6" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="25, 20, 0, 0" StrokeThickness="1" Fill="Red"/>
<TextBlock Text="6" Margin="25, 20, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold"/>
<Rectangle x:Name="P7" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="25, 40, 0, 0" StrokeThickness="1" Fill="Green"/>
<TextBlock Text="7" Margin="25, 40, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" Tag="1" PreviewMouseLeftButtonDown="ParkPreviewMouseLeftButtonDown"/>
<Rectangle x:Name="P8" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="25, 60, 0, 0" StrokeThickness="1" Fill="Green"/>
<TextBlock Text="8" Margin="25, 60, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" Tag="1" PreviewMouseLeftButtonDown="ParkPreviewMouseLeftButtonDown"/>
<Rectangle x:Name="P9" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="50, 0, 0, 0" StrokeThickness="1" Fill="Green"/>
<TextBlock Text="9" Margin="50, 0, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" Tag="2" PreviewMouseLeftButtonDown="ParkPreviewMouseLeftButtonDown"/>
<Rectangle x:Name="P10" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="50, 20, 0, 0" StrokeThickness="1" Fill="Green"/>
<TextBlock Text="10" Margin="50, 20, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" Tag="2" PreviewMouseLeftButtonDown="ParkPreviewMouseLeftButtonDown"/>
<Rectangle x:Name="P11" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="50, 40, 0, 0" StrokeThickness="1" Fill="Green"/>
<TextBlock Text="11" Margin="50, 40, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" Tag="2" PreviewMouseLeftButtonDown="ParkPreviewMouseLeftButtonDown"/>
<Rectangle x:Name="P12" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="50, 60, 0, 0" StrokeThickness="1" Fill="Green"/>
<TextBlock Text="12" Margin="50, 60, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" Tag="2" PreviewMouseLeftButtonDown="ParkPreviewMouseLeftButtonDown"/>
<Rectangle x:Name="P13" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="75, 0, 0, 0" StrokeThickness="1" Fill="Green"/>
<TextBlock Text="13" Margin="75, 0, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" Tag="2" PreviewMouseLeftButtonDown="ParkPreviewMouseLeftButtonDown"/>
<Rectangle x:Name="P14" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="75, 20, 0, 0" StrokeThickness="1" Fill="Green"/>
<TextBlock Text="14" Margin="75, 20, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" Tag="2" PreviewMouseLeftButtonDown="ParkPreviewMouseLeftButtonDown"/>
<Rectangle x:Name="P15" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="75, 40, 0, 0" StrokeThickness="1" Fill="Green"/>
<TextBlock Text="15" Margin="75, 40, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" Tag="2" PreviewMouseLeftButtonDown="ParkPreviewMouseLeftButtonDown"/>
<Rectangle x:Name="P16" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="75, 60, 0, 0" StrokeThickness="1" Fill="Green"/>
<TextBlock Text="16" Margin="75, 60, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" Tag="2" PreviewMouseLeftButtonDown="ParkPreviewMouseLeftButtonDown"/>
<Rectangle x:Name="P17" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="100, 0, 0, 0" StrokeThickness="1" Fill="Green"/>
<TextBlock Text="17" Margin="100, 0, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" Tag="2" PreviewMouseLeftButtonDown="ParkPreviewMouseLeftButtonDown"/>
<Rectangle x:Name="P18" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="100, 20, 0, 0" StrokeThickness="1" Fill="Green"/>
<TextBlock Text="18" Margin="100, 20, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" Tag="2" PreviewMouseLeftButtonDown="ParkPreviewMouseLeftButtonDown"/>
<Rectangle x:Name="RedP19" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="100, 40, 0, 0" StrokeThickness="1" Fill="Red"/>
<TextBlock Text="19" Margin="100, 40, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold"/>
<Rectangle x:Name="P20" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="100, 60, 0, 0" StrokeThickness="1" Fill="Green"/>
<TextBlock Text="20" Margin="100, 60, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" Tag="4" PreviewMouseLeftButtonDown="ParkPreviewMouseLeftButtonDown"/>
<Rectangle x:Name="P21" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="125, 0, 0, 0" StrokeThickness="1" Fill="Green"/>
<TextBlock Text="21" Margin="125, 0, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" Tag="4" PreviewMouseLeftButtonDown="ParkPreviewMouseLeftButtonDown"/>
<Rectangle x:Name="P22" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="125, 20, 0, 0" StrokeThickness="1" Fill="Green"/>
<TextBlock Text="22" Margin="125, 20, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" Tag="4" PreviewMouseLeftButtonDown="ParkPreviewMouseLeftButtonDown"/>
<Rectangle x:Name="RedP23" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="125, 40, 0, 0" StrokeThickness="1" Fill="Red"/>
<TextBlock Text="23" Margin="125, 40, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold"/>
<Rectangle x:Name="P24" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="125, 60, 0, 0" StrokeThickness="1" Fill="Green" Stroke="Aqua"/>
<TextBlock Text="24" Margin="125, 60, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" PreviewMouseLeftButtonDown="ParkSetPreviewMouseLeftButtonDown" ToolTip="Klicken um Parkplatz zu belegen/freizugeben"/>
<Rectangle x:Name="RedP25" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="150, 0, 0, 0" StrokeThickness="1" Fill="Red"/>
<TextBlock Text="25" Margin="150, 0, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold"/>
<Rectangle x:Name="RedP26" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="150, 20, 0, 0" StrokeThickness="1" Fill="Red"/>
<TextBlock Text="26" Margin="150, 20, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold"/>
<Rectangle x:Name="P27" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="150, 40, 0, 0" StrokeThickness="1" Fill="Green" Stroke="Aqua"/>
<TextBlock Text="27" Margin="150, 40, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" PreviewMouseLeftButtonDown="ParkSetPreviewMouseLeftButtonDown" ToolTip="Klicken um Parkplatz zu belegen/freizugeben"/>
<Rectangle x:Name="P28" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="150, 60, 0, 0" StrokeThickness="1" Fill="Green" Stroke="Aqua"/>
<TextBlock Text="28" Margin="150, 60, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" PreviewMouseLeftButtonDown="ParkSetPreviewMouseLeftButtonDown" ToolTip="Klicken um Parkplatz zu belegen/freizugeben"/>
<Rectangle x:Name="P29" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="175, 0, 0, 0" StrokeThickness="1" Fill="Green" Stroke="Aqua"/>
<TextBlock Text="29" Margin="175, 0, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" PreviewMouseLeftButtonDown="ParkSetPreviewMouseLeftButtonDown" ToolTip="Klicken um Parkplatz zu belegen/freizugeben"/>
<Rectangle x:Name="P30" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="175, 20, 0, 0" StrokeThickness="1" Fill="Green" Stroke="Aqua"/>
<TextBlock Text="30" Margin="175, 20, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" PreviewMouseLeftButtonDown="ParkSetPreviewMouseLeftButtonDown" ToolTip="Klicken um Parkplatz zu belegen/freizugeben"/>
<Rectangle x:Name="P31" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="175, 40, 0, 0" StrokeThickness="1" Fill="Green" Stroke="Aqua"/>
<TextBlock Text="31" Margin="175, 40, 0, 0" Width="20" Height="15" HorizontalAlignment="Left" VerticalAlignment="Top" TextAlignment="Center" Padding="0" FontWeight="SemiBold" PreviewMouseLeftButtonDown="ParkSetPreviewMouseLeftButtonDown" ToolTip="Klicken um Parkplatz zu belegen/freizugeben"/>
<TextBlock Text="Frei:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10, 78, 0, 0"/>
<TextBlock x:Name="lblGreenCounter" Text="23" TextAlignment="Center" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="40, 78, 0, 0"/>
<TextBlock Text="Belegt:" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="102, 78, 0, 0"/>
<TextBlock x:Name="lblRedCounter" Text="23" TextAlignment="Center" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="148, 78, 0, 0"/>
</Grid>
</Grid>
<Grid x:Name="gridToday" Grid.Row="1" Visibility="Collapsed" VerticalAlignment="Stretch" MinHeight="100" Margin="0,5,0,0">
<!--<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>-->
<TextBlock Grid.Row="0" HorizontalAlignment="Left" TextWrapping="Wrap" Text="Ankunft heute: (Firmen: Rot, Besucher: Grün)" VerticalAlignment="Top" Margin="10,10,0,0"/>
<TextBox x:Name="tbSearch" HorizontalAlignment="Left" Height="23" Margin="10,-15,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="180" Visibility="Collapsed" Padding="0,2,0,0" TextChanged="TextBox_TextChanged" PreviewGotKeyboardFocus="TbSearch_PreviewGotKeyboardFocus" PreviewLostKeyboardFocus="TbSearch_PreviewLostKeyboardFocus"/>
<TextBlock x:Name="lblSearch" Text="Ankunft heute durchsuchen..." Foreground="{DynamicResource {x:Static SystemColors.ControlDarkDarkBrushKey}}" IsHitTestVisible="False" Margin="12,-15,0,0" Padding="3" Visibility="Collapsed" HorizontalAlignment="Left" Width="180"/>
<Button x:Name="btnClearSearch" HorizontalAlignment="Left" Content="X" Padding="0" VerticalAlignment="Top" Margin="190,-15,0,0" Height="26" Width="14" Foreground="Red" Visibility="Collapsed" FontWeight="Bold" ToolTip="Suchfeld leeren" Click="btnClearSearch_Click"/>
<TextBlock Grid.Row="0" HorizontalAlignment="Left" TextWrapping="Wrap" Text="Ankunft heute: (Firmen: Rot, Besucher: Grün, MA-Führung: Blau)" VerticalAlignment="Top" Margin="10,15,0,0"/>
<TextBlock x:Name="lblmcfit" Text="Aktuell verfügbare McFit Karten: " HorizontalAlignment="Right" Margin="0,5,405,0" Visibility="Collapsed"/>
<!--<Button x:Name="btnResetListsMain" Content="Listengröße zurücksetzen" Margin="0,8,0,0" HorizontalAlignment="Center" VerticalAlignment="Top" Width="150" Height="22" Click="btnResetLists_Click" Visibility="Visible"/>-->
<DataGrid Grid.Row="0" x:Name="dgToday" RowHeaderWidth="0" KeyboardNavigation.TabNavigation="None" ItemsSource="{Binding ., UpdateSourceTrigger=PropertyChanged}" CanUserAddRows="False" CanUserDeleteRows="False" AutoGenerateColumns="False" Margin="10,31,10,10" IsReadOnly="True">
<DataGrid Grid.Row="0" x:Name="dgToday" RowHeaderWidth="0" HorizontalGridLinesBrush="Gray" GridLinesVisibility="Horizontal" KeyboardNavigation.TabNavigation="None" ItemsSource="{Binding ., UpdateSourceTrigger=PropertyChanged}" CanUserAddRows="False" CanUserDeleteRows="False" AutoGenerateColumns="False" Margin="10,35,10,10" IsReadOnly="True">
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridRow}">
<EventSetter Event="Control.MouseDoubleClick" Handler="DataGridRow_MouseDoubleClick"/>
@ -89,7 +340,7 @@
</DataGrid.Resources>
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<EventSetter Event="Control.MouseDoubleClick" Handler="DataGridRow_MouseDoubleClick"/>
<EventSetter Event="Control.MouseDoubleClick" Handler="DataGridRow_MouseDoubleClick"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Name, Converter={StaticResource ConvertToBackground2}}" Value="1">
<Setter Property="Background" Value="#3000FF00"/>
@ -97,12 +348,15 @@
<DataTrigger Binding="{Binding Name, Converter={StaticResource ConvertToBackground2}}" Value="0">
<Setter Property="Background" Value="#30FF0000"/>
</DataTrigger>
<DataTrigger Binding="{Binding Name, Converter={StaticResource ConvertToBackground2}}" Value="2">
<Setter Property="Background" Value="#80095feb"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Name}" Width="*" SortDirection="Ascending">
<DataGridTextColumn Header="Name" Binding="{Binding Name}" Width="*" SortDirection="Ascending" IsReadOnly="True">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="4"/>
@ -110,7 +364,7 @@
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Verantwortlicher Firma / Besucher" Binding="{Binding Verantwortlicher_MA_Firma}" Width="*">
<DataGridTextColumn Header="Verantwortlicher Firma / Besucher" Binding="{Binding Verantwortlicher_MA_Firma}" Width="*" IsReadOnly="True">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="4"/>
@ -118,7 +372,7 @@
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Tel. Verantwortlicher Firma / Tel. Besucher" Binding="{Binding Tel_Nr_Verantwortlicher_Firma}" Width="*">
<DataGridTextColumn Header="Tel. Verantwortlicher Firma / Tel. Besucher" Binding="{Binding Tel_Nr_Verantwortlicher_Firma}" Width="*" IsReadOnly="True">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="4"/>
@ -126,7 +380,7 @@
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="Ansprechpartner Intern" Binding="{Binding Ansprechpartner_Intern}" Width="*">
<DataGridTextColumn Header="Ansprechpartner Intern" Binding="{Binding Ansprechpartner_Intern}" Width="*" IsReadOnly="True">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="4"/>
@ -134,7 +388,15 @@
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTemplateColumn Header="Asp-Info">
<DataGridTextColumn Header="BE-Fläche" Binding="{Binding BE}" Width="*" IsReadOnly="True">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="4"/>
<Setter Property="ToolTip" Value="{Binding NoToolTip, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:MainWindow}}, Converter={StaticResource ReturnToolTip}}"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTemplateColumn Header="Asp-Info" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button x:Name="btnInfo" Click="BtnInfo_Click" Content="Info"/>
@ -142,42 +404,90 @@
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn MinWidth="0.1" MaxWidth="0.5" CanUserResize="False" CanUserSort="False" CanUserReorder="False"/>
<DataGridTemplateColumn x:Name="columnFzg" Header="Fzg" IsReadOnly="True" Visibility="Collapsed" Width="30">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Anzahl_Fzg}" FontSize="14" FontWeight="SemiBold" TextAlignment="Center" Padding="2"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn x:Name="columnBeginn" Binding="{Binding Arbeitsbeginn, StringFormat=\{0:dd.MM.yy\}}" Header="A.Beginn" IsReadOnly="True" Visibility="Collapsed" Width="90" CanUserSort="True">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextAlignment" Value="Center"/>
</Style>
</DataGridTextColumn.ElementStyle>
<!--<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Arbeitsbeginn, StringFormat=\{0:dd.MM.yy\}}" FontSize="14" TextAlignment="Center" Padding="2"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>-->
</DataGridTextColumn>
<DataGridTextColumn x:Name="columnEnde" Binding="{Binding Arbeitsende, StringFormat=\{0:dd.MM.yy\}}" Header="A.Ende" IsReadOnly="True" Visibility="Collapsed" Width="90" CanUserSort="True">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextAlignment" Value="Center"/>
</Style>
</DataGridTextColumn.ElementStyle>
<!--<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Arbeitsende, StringFormat=\{0:dd.MM.yy\}}" FontSize="14" TextAlignment="Center" Padding="2"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>-->
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
<TextBlock x:Name="gridSplitterArrows" Text="↔" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="-8,-10,0,0" FontSize="20" Foreground="Gray" RenderTransformOrigin="0.5,0.5" FontWeight="Bold" Visibility="Collapsed">
<TextBlock.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform Angle="90"/>
<TranslateTransform/>
</TransformGroup>
</TextBlock.RenderTransform>
</TextBlock>
<TextBlock x:Name="gridSplitterLine" Text="↔" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="8,-10,0,0" FontSize="20" Foreground="Gray" RenderTransformOrigin="0.5,0.5" FontWeight="Bold" Visibility="Collapsed">
<TextBlock.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform Angle="90"/>
<TranslateTransform/>
</TransformGroup>
</TextBlock.RenderTransform>
</TextBlock>
<GridSplitter x:Name="gridSplitter" Cursor="SizeNS" Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Top" Margin="300,2,300,0" Height="3" Background="LightGray" Grid.IsSharedSizeScope="True" Visibility="Collapsed" DragDelta="gridSplitter_DragDelta"/> <!---->
<TextBox x:Name="tbSearchArrived" Grid.Row="2" Width="180" HorizontalAlignment="Left" VerticalAlignment="Top" Height="23" Margin="10,-3,0,-20" Visibility="Collapsed" TextChanged="tbSearchArrived_TextChanged" PreviewGotKeyboardFocus="tbSearchArrived_PreviewGotKeyboardFocus" PreviewLostKeyboardFocus="tbSearchArrived_PreviewLostKeyboardFocus"/>
<TextBlock x:Name="lblSearchArrived" Text="Bereits bestätigt durchsuchen..." Grid.Row="2" Foreground="{DynamicResource {x:Static SystemColors.ControlDarkDarkBrushKey}}" IsHitTestVisible="False" Margin="11,-1,0,-20" Padding="3" Visibility="Collapsed" HorizontalAlignment="Left" Width="180"/>
<Button x:Name="btnClearSearchArrived" HorizontalAlignment="Left" Grid.Row="2" Content="X" Padding="0" VerticalAlignment="Top" Margin="190,-3,0,-20" Height="26" Width="14" Foreground="Red" Visibility="Collapsed" FontWeight="Bold" ToolTip="Suchfeld leeren" Click="btnClearSearchArrived_Click"/>
<Grid x:Name="gridArrived" Margin="0,0,0,10" Grid.Row="3" VerticalAlignment="Stretch" Visibility="Collapsed" MinHeight="100">
<TextBlock x:Name="gridSplitterArrows" Text="↔" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="-8,-2,0,-20" FontSize="20" Foreground="Gray" RenderTransformOrigin="0.5,0.5" FontWeight="Bold" Visibility="Collapsed">
<TextBlock.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform Angle="90"/>
<TranslateTransform/>
</TransformGroup>
</TextBlock.RenderTransform>
</TextBlock>
<TextBlock x:Name="gridSplitterLine" Text="↔" Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="8,-2,0,-20" FontSize="20" Foreground="Gray" RenderTransformOrigin="0.5,0.5" FontWeight="Bold" Visibility="Collapsed">
<TextBlock.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform Angle="90"/>
<TranslateTransform/>
</TransformGroup>
</TextBlock.RenderTransform>
</TextBlock>
<GridSplitter x:Name="gridSplitter" Cursor="SizeNS" Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Top" Margin="300,10,300,-10" Height="3" Background="LightGray" Grid.IsSharedSizeScope="True" Visibility="Collapsed" DragDelta="gridSplitter_DragDelta"/>
<!---->
<Grid x:Name="gridArrived" Margin="0,10,0,10" Grid.Row="3" VerticalAlignment="Stretch" Visibility="Collapsed" MinHeight="100">
<TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" VerticalAlignment="Top" Width="300" Margin="10,10,0,0"><Run Text="Ankunft bereits bestätigt: (letzte 10 Tage)"/></TextBlock>
<DataGrid x:Name="dgOverview" MinHeight="90" RowHeaderWidth="0" KeyboardNavigation.TabNavigation="None" ItemsSource="{Binding ., UpdateSourceTrigger=PropertyChanged}" CanUserAddRows="False" CanUserDeleteRows="False" AutoGenerateColumns="False" Margin="10,31,10,0" CellEditEnding="dgOverview_CellEditEnding">
<DataGrid x:Name="dgOverview" MinHeight="90" RowHeaderWidth="0" HorizontalGridLinesBrush="Gray" GridLinesVisibility="Horizontal" KeyboardNavigation.TabNavigation="None" ItemsSource="{Binding ., UpdateSourceTrigger=PropertyChanged}" CanUserAddRows="False" CanUserDeleteRows="False" AutoGenerateColumns="False" Margin="10,31,10,0" CellEditEnding="dgOverview_CellEditEnding">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding Kategorie}" Value="4">
<Setter Property="Background" Value="#80fa0202"/>
</DataTrigger>
<DataTrigger Binding="{Binding Kategorie}" Value="5">
<Setter Property="Background" Value="#80095feb"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="Kategorie" Binding="{Binding Kategorie, Converter={StaticResource IntToCategory}}" IsReadOnly="True">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="4"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
@ -186,6 +496,7 @@
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="4"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
@ -194,6 +505,7 @@
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="4"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
@ -203,6 +515,7 @@
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Padding" Value="3"/>
<Setter Property="Background" Value="{Binding Pruefung_Zutritt, Converter={StaticResource ConvertToBackground}}"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<Setter Property="TextAlignment" Value="Center" />
</Style>
</DataGridTextColumn.ElementStyle>
@ -213,6 +526,7 @@
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Padding" Value="3"/>
<Setter Property="Background" Value="{Binding Pruefung_Einweisung, Converter={StaticResource ConvertToBackground}}"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<Setter Property="TextAlignment" Value="Center" />
</Style>
</DataGridTextColumn.ElementStyle>
@ -223,6 +537,7 @@
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="4"/>
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
@ -238,6 +553,7 @@
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Padding" Value="4"/>
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<Setter Property="Background">
<Setter.Value>
<MultiBinding Converter="{StaticResource MultiToBackground}">
@ -255,6 +571,7 @@
<Setter Property="Margin" Value="4"/>
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="ToolTip" Value="Doppelklicken um Kennzeichen nachträglich zu ändern"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
@ -262,10 +579,11 @@
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="4"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTemplateColumn Header="kl. Unterweisung">
<DataGridTemplateColumn Header="kl. Unterweisung" IsReadOnly="True">
<DataGridTemplateColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="HorizontalAlignment" Value="Center"/>
@ -285,21 +603,21 @@
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Asp-Info" MinWidth="40">
<DataGridTemplateColumn Header="Asp-Info" MinWidth="40" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button x:Name="btnInfoArrived" Click="BtnInfoArrived_Click" Content="Info"/>
<Button x:Name="btnInfoArrived" Click="BtnInfoArrived_Click" Content="Info" IsEnabled="{Binding idFirma_Besucher, Converter={StaticResource DBNullToBool}}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn MaxWidth="0.1" CanUserResize="False" CanUserSort="False" CanUserReorder="False"/>
</DataGrid.Columns>
</DataGrid>
</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="50" FontSize="20" Background="#FF85F7A4" BorderBrush="#FFCDCDCD" Foreground="Blue" FontWeight="Bold">
<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">
@ -330,7 +648,72 @@
</ControlTemplate>
</Button.Template>
</Button>
<Button x:Name="btnCreatePark" Content="Parkausweis beantragen" Click="btnCreateParkausweis_Click" Margin="100, 100, 100,350" Width="500" Height="50" FontSize="20" Background="#FF85F7A4" BorderBrush="#FFCDCDCD" Foreground="Blue" FontWeight="Bold">
<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>
</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>
<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">
@ -363,23 +746,60 @@
</Button>
</Grid>
<Canvas x:Name="canvasHelp" Margin="0" Background="#DDE2E2E2" Visibility="Collapsed" Width="400" Height="364" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.RowSpan="3">
<Canvas x:Name="canvasHelp" Margin="0" Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" Visibility="Collapsed" Width="400" Height="364" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.RowSpan="3">
<Border BorderBrush="Gray" BorderThickness="2" Width="400" Height="364"/>
<TextBlock Canvas.Left="10" TextWrapping="Wrap" Canvas.Top="10" Height="81" Width="380" TextAlignment="Center"><Run FontWeight="Bold" Text="Hilfe" TextDecorations="Underline"/><LineBreak/><Run/><LineBreak/><Run/><LineBreak/><Run Text="Bei Problemen bitte an Marcus Bachler wenden."/><LineBreak/><Run/><LineBreak/><Run/></TextBlock>
<TextBlock Canvas.Left="10" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" TextWrapping="Wrap" Canvas.Top="10" Height="81" Width="380" TextAlignment="Center"><Run FontWeight="Bold" Text="Hilfe" TextDecorations="Underline"/><LineBreak/><Run/><LineBreak/><Run/><LineBreak/><Run Text="Bei Problemen bitte an Marcus Bachler wenden."/><LineBreak/><Run/><LineBreak/><Run/></TextBlock>
<TextBlock Canvas.Left="10" TextWrapping="Wrap" Text="marcus.bachler@deutschebahn.com" Canvas.Top="91" Width="380" TextDecorations="Underline" Foreground="#FF002AE6" TextAlignment="Center" Cursor="Hand" PreviewMouseLeftButtonUp="TextBlock_PreviewMouseLeftButtonUp"/>
<TextBlock Canvas.Left="10" TextWrapping="Wrap" Canvas.Top="140" Height="150" Width="380" TextAlignment="Center"><Run Text="ZKuP"/><LineBreak/><Run x:Name="lblVersion" Text="Version 2.7.1"/><LineBreak/><Run/><LineBreak/><Run FontSize="12" FontFamily="Segoe UI"/><LineBreak/><Run FontSize="12" FontFamily="Segoe UI" Text="© Marcus Bachler"/></TextBlock>
<TextBlock Canvas.Left="10" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" TextWrapping="Wrap" Canvas.Top="130" Height="150" Width="380" TextAlignment="Center"><Run Text="ZKuP"/><LineBreak/><Run x:Name="lblVersion" Text="Version 4.4.9.0"/><LineBreak/><Run/><LineBreak/><Run FontSize="12" FontFamily="Segoe UI"/><LineBreak/><Run FontSize="12" FontFamily="Segoe UI" Text="© Marcus Bachler"/></TextBlock>
<Button x:Name="btnCloseHelp" Content="Schließen" Canvas.Left="10" Canvas.Top="325" Width="380" Height="29" Click="BtnCloseHelp_Click"/>
<Button x:Name="btnDebug" Content="Schließen" Canvas.Left="10" Canvas.Top="300" Width="380" Height="29" Click="btnDebug_Click" Visibility="Collapsed"/>
<TextBlock Text="Falls Fenster mal nicht mehr sichtbar oder außerhalb&#xA;des Bildschirms sein sollte mit Strg+R zurücksetzen" TextAlignment="Center" Foreground="Red" FontWeight="Bold" Canvas.Left="10" Canvas.Top="223" Width="380" Height="40"/>
<TextBlock x:Name="lblResetLists" Text="Untere Liste(Ankunft heute) nicht mehr sichtbar?&#xA; -> Listengröße zurücksetzen" Canvas.Left="10" Canvas.Top="263" Width="380" Height="40"/>
<Button x:Name="btnResetLists" Content="Listengröße zurücksetzen" Canvas.Left="10" Canvas.Top="300" Width="380" Height="29" Click="btnResetLists_Click" Visibility="Visible"/>
</Canvas>
<Canvas x:Name="canvasSettings" Margin="0" Background="#DDE2E2E2" Visibility="Collapsed" Width="400" Height="364" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.RowSpan="3">
<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" Checked="cbShowParkcardToAccept_Checked" Unchecked="cbShowParkcardToAccept_Unchecked"/>
<Button x:Name="btnCloseSettings" Content="Schließen" Canvas.Right="10" Canvas.Bottom="10" Width="100" Height="29" Click="btnCloseSettings_Click" HorizontalAlignment="Right"/>
<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="400" Height="364" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.RowSpan="3">
<Grid>
<!--<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="cbShowParkcardToPrint" Content="Meldung 'Es sind Parkkarten zum drucken vorhanden' anzeigen?" Margin="10,50,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" Checked="cbShowParkcardToPrint_Checked" Unchecked="cbShowParkcardToPrint_Unchecked"/>
</Canvas>
<DataGrid x:Name="dgParkEmailUsers" IsReadOnly="True" AutoGenerateColumns="False" ItemsSource="{Binding ParkEmailUsers}" Width="330" Height="240" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="False" Margin="10,80,10,30" VerticalAlignment="Top" HorizontalAlignment="Left">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding idparkEmailUsers}"/>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
<DataGridTextColumn Header="Email" Binding="{Binding Email}"/>
<DataGridTextColumn Header="Modified by" Binding="{Binding ModifiedBy}"/>
<DataGridTextColumn Header="Modified on" Binding="{Binding ModifiedAt, StringFormat=\{0:dd.MM.yyyy HH:mm\}}"/>
<DataGridTextColumn Header="Emails sent" Binding="{Binding EmailsSent}"/>
</DataGrid.Columns>
</DataGrid>
<Button x:Name="btnAddParkEmailUser" Content="" FontFamily="Segoe UI Symbol" Width="40" Height="40" Padding="0" ToolTip="Email-Empfänger hinzufügen" Margin="10,100" VerticalAlignment="Top" HorizontalAlignment="Right" Click="btnAddParkEmailUser_Click"/>
<Button x:Name="btnDelParkEmailUser" Content="" FontFamily="Segoe UI Symbol" Width="40" Height="40" Padding="0" ToolTip="Email-Empfänger entfernen" Margin="10,150" VerticalAlignment="Top" HorizontalAlignment="Right" Click="btnDelParkEmailUser_Click"/>
<Popup x:Name="cm" AllowsTransparency="True" StaysOpen="False" Placement="MousePoint">
<Border BorderThickness="1" Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" BorderBrush="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}" CornerRadius="10">
<Grid Margin="10">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Text="Email Adresse:"/>
<TextBox x:Name="tbParkEmailUserEmail" Text="@deutschebahn.com" Width="300" Height="30" Margin="5" Grid.Row="1" KeyDown="AddParkEmailUserTextBox_KeyDown"/>
<Button Content="" FontFamily="Segoe UI Symbol" Padding="0" Width="30" Height="30" Grid.Column="1" Grid.Row="1" Click="AddParkEmailUserAdd_Click"/>
</Grid>
</Border>
</Popup>
<Button x:Name="btnCloseSettings" Content="Schließen" Margin="10" Width="100" Height="29" Click="btnCloseSettings_Click" HorizontalAlignment="Right" VerticalAlignment="Bottom"/>
</Grid>
</Border>
</Grid>
</Window>
</mah:MetroWindow>

File diff suppressed because it is too large Load Diff

View File

@ -21,16 +21,16 @@
<TextBox x:Name="tbAsp" HorizontalAlignment="Left" Height="25" Margin="10,50,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="215" Padding="0,2,0,0" TabIndex="1"/>
<TextBox x:Name="tbAspVertreter" HorizontalAlignment="Left" Height="25" Margin="10,105,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="215" Padding="0,2,0,0" TabIndex="2"/>
<TextBox x:Name="tbAspVorgesetzter" HorizontalAlignment="Left" Height="25" Margin="10,165,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="215" Padding="0,2,0,0" TabIndex="3"/>
<Button x:Name="btnCreateAsp" Margin="230,10,0,52" Content="Hinzufügen&#xD;&#xA; →" Click="BtnCreateAsp_Click" HorizontalAlignment="Left" Width="70" TabIndex="7"/>
<Button x:Name="btnCreateAsp" Margin="230,10,0,52" FontSize="12" Padding="-2" Content="Hinzufügen&#xD;&#xA; →" Click="BtnCreateAsp_Click" HorizontalAlignment="Left" Width="70" TabIndex="7"/>
<TextBox x:Name="tbAspTel" HorizontalAlignment="Left" Height="23" Margin="10,227,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="215" TabIndex="4"/>
<TextBlock HorizontalAlignment="Left" Margin="10,29,0,0" TextWrapping="Wrap" Text="Ansprechpartner:" VerticalAlignment="Top" Width="110"/>
<TextBlock HorizontalAlignment="Left" Margin="10,84,0,0" TextWrapping="Wrap" Text="Ansprechpartner-Vertreter:" VerticalAlignment="Top" Width="155"/>
<TextBlock HorizontalAlignment="Left" Margin="10,144,0,0" TextWrapping="Wrap" Text="Ansprechpartner-Vorgesetzter:" VerticalAlignment="Top" Width="175"/>
<TextBlock HorizontalAlignment="Left" Margin="10,206,0,0" TextWrapping="Wrap" Text="Ansprechpartner-TelNr:" VerticalAlignment="Top" Width="155"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,29,0,0" TextWrapping="Wrap" Text="Ansprechpartner:" VerticalAlignment="Top" Width="110"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,84,0,0" TextWrapping="Wrap" Text="Ansprechpartner-Vertreter:" VerticalAlignment="Top" Width="155"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,144,0,0" TextWrapping="Wrap" Text="Ansprechpartner-Vorgesetzter:" VerticalAlignment="Top" Width="175"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,206,0,0" TextWrapping="Wrap" Text="Ansprechpartner-TelNr:" VerticalAlignment="Top" Width="155"/>
<TextBox x:Name="tbVertreterTel" HorizontalAlignment="Left" Height="25" Margin="10,289,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="215" Padding="0,2,0,0" TabIndex="5"/>
<TextBox x:Name="tbVorgesetzterTel" HorizontalAlignment="Left" Height="23" Margin="10,351,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="215" TabIndex="6"/>
<TextBlock HorizontalAlignment="Left" Margin="10,268,0,0" TextWrapping="Wrap" Text="Vertreter-TelNr:" VerticalAlignment="Top" Width="175"/>
<TextBlock HorizontalAlignment="Left" Margin="10,330,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="155"><Run Text="Vorgesetzter"/><Run Text="-TelNr:"/></TextBlock>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,268,0,0" TextWrapping="Wrap" Text="Vertreter-TelNr:" VerticalAlignment="Top" Width="175"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,330,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="155"><Run Text="Vorgesetzter"/><Run Text="-TelNr:"/></TextBlock>
<Button x:Name="btnClose" Content="Schließen" Margin="0,0,10,10" TabIndex="8" Width="98" Height="28" HorizontalAlignment="Right" VerticalAlignment="Bottom" Click="BtnClose_Click"/>
</Grid>
</Window>

View File

@ -8,17 +8,17 @@
Title="Lieferanten verwalten" Height="352" Width="800">
<Grid>
<DataGrid x:Name="dgLieferanten" Margin="300,40,10,50" ItemsSource="{Binding Path=., Mode=OneWay, UpdateSourceTrigger=LostFocus}" CellEditEnding="dgLieferanten_CellEditEnding" SelectionChanged="dgLieferanten_SelectionChanged" BeginningEdit="dgLieferanten_BeginningEdit" PreviewKeyDown="DgLieferanten_PreviewKeyDown" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserSortColumns="False" CanUserAddRows="False" ColumnWidth="*"/>
<Button x:Name="btnAdd" Content="Hinzufügen&#xD;&#xA; →" HorizontalAlignment="Left" Margin="220,40,0,50" Width="75" Click="btnAdd_Click"/>
<Button x:Name="btnAdd" Content="Hinzufügen&#xD;&#xA; →" FontSize="12" Padding="-2" HorizontalAlignment="Left" Margin="220,40,0,50" Width="75" Click="btnAdd_Click"/>
<Button x:Name="btnClose" Content="Schließen" Margin="0,0,10,10" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="98" Height="28" Click="BtnClose_Click"/>
<TextBlock HorizontalAlignment="Left" Margin="10,40,0,0" TextWrapping="Wrap" Text="Lieferfirma:" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Margin="10,40,0,0" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" TextWrapping="Wrap" Text="Lieferfirma:" VerticalAlignment="Top"/>
<TextBox x:Name="tbFirma" HorizontalAlignment="Left" Height="23" Margin="10,61,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="205" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<TextBlock HorizontalAlignment="Left" Margin="10,89,0,0" TextWrapping="Wrap" Text="Fahrer:" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,89,0,0" TextWrapping="Wrap" Text="Fahrer:" VerticalAlignment="Top"/>
<TextBox x:Name="tbFahrer" HorizontalAlignment="Left" Height="23" Margin="10,110,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="205" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<TextBlock HorizontalAlignment="Left" Margin="10,138,0,0" TextWrapping="Wrap" Text="Handynummer:" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,138,0,0" TextWrapping="Wrap" Text="Handynummer:" VerticalAlignment="Top"/>
<TextBox x:Name="tbHandynr" HorizontalAlignment="Left" Height="23" Margin="10,159,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="205" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<TextBlock HorizontalAlignment="Left" Margin="10,187,0,0" TextWrapping="Wrap" Text="Kennzeichen:" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,187,0,0" TextWrapping="Wrap" Text="Kennzeichen:" VerticalAlignment="Top"/>
<TextBox x:Name="tbKennzeichen" HorizontalAlignment="Left" Height="23" Margin="10,208,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="205" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<Button x:Name="btnDeleteDeliver" Content="Markierten Lieferanten löschen" Margin="0,15,10,0" VerticalAlignment="Top" HorizontalAlignment="Right" Width="182" Click="btnDeleteDeliver_Click"/>
<Button x:Name="btnDeleteDeliver" Content="Markierten Lieferanten löschen" FontSize="12" Padding="-2" Height="25" Margin="0,15,10,0" VerticalAlignment="Top" HorizontalAlignment="Right" Width="182" Click="btnDeleteDeliver_Click"/>
</Grid>
</Window>

View File

@ -82,7 +82,7 @@ namespace ZKuP
{
var header = e.Column.Header;
var newValue = (e.EditingElement as TextBox).Text;
var id = (e.Row.Item as System.Data.DataRowView).Row.ItemArray[0];
var id = (e.Row.Item as System.Data.DataRowView).Row.ItemArray[4];
string searchFahrer = "";
@ -92,16 +92,16 @@ namespace ZKuP
switch (header)
{
case "Firma":
await SQL.WriteSQL($"UPDATE lieferanten SET Firma = '{newValue}' WHERE Fahrer = '{id}'" + searchFahrer);
await SQL.WriteSQL($"UPDATE lieferanten SET Firma = '{newValue}' WHERE `ID` = '{id}'");// + searchFahrer);
break;
case "Fahrer":
await SQL.WriteSQL($"UPDATE lieferanten SET Fahrer = '{newValue}' WHERE Firma = '{id}'" + searchFahrer);
await SQL.WriteSQL($"UPDATE lieferanten SET Fahrer = '{newValue}' WHERE `ID` = '{id}'");// + searchFahrer);
break;
case "Handynr":
await SQL.WriteSQL($"UPDATE lieferanten SET Handynr = '{newValue}' WHERE Firma = '{id}'" + searchFahrer);
await SQL.WriteSQL($"UPDATE lieferanten SET Handynr = '{newValue}' WHERE `ID` = '{id}'");// + searchFahrer);
break;
case "Kennzeichen":
await SQL.WriteSQL($"UPDATE lieferanten SET Kennzeichen = '{newValue}' WHERE Firma = '{id}'" + searchFahrer);
await SQL.WriteSQL($"UPDATE lieferanten SET Kennzeichen = '{newValue}' WHERE `ID` = '{id}'");// + searchFahrer);
break;
}
@ -120,7 +120,7 @@ namespace ZKuP
if (e.Key == Key.Delete)
{
await SQL.WriteSQL($"DELETE FROM zkup.lieferanten WHERE `Firma` = '{arr[0]}' AND `Fahrer` = '{arr[1]}'");
await SQL.WriteSQL($"DELETE FROM zkup.lieferanten WHERE `ID` = '{arr[4]}'");
lieferanten = SQL.ReadSQL("Select * from zkup.lieferanten", lieferanten).Result;
DeliveriesView = Deliver.DataTableToDeliver(lieferanten);
@ -141,7 +141,7 @@ namespace ZKuP
if (MessageBox.Show(this, $"Markierten Lieferanten wirklich entfernen?", "Lieferanten entfernen?", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes)
{
await SQL.WriteSQL($"DELETE FROM zkup.lieferanten WHERE `Firma` = '{arr[0]}' AND `Fahrer` = '{arr[1]}'");
await SQL.WriteSQL($"DELETE FROM zkup.lieferanten WHERE `ID` = '{arr[4]}'");
lieferanten = SQL.ReadSQL("Select * from zkup.lieferanten", lieferanten).Result;
DeliveriesView = Deliver.DataTableToDeliver(lieferanten);

View File

@ -7,22 +7,22 @@
mc:Ignorable="d"
Title="Parkausweise verwalten" Height="450" Width="1300">
<Grid>
<DataGrid x:Name="dgManage" PreviewKeyDown="DgManage_PreviewKeyDown" ItemsSource="{Binding .}" RowHeaderWidth="0" AutoGenerateColumns="False" CanUserDeleteRows="False" CanUserAddRows="False" CanUserReorderColumns="False">
<DataGrid x:Name="dgManage" PreviewKeyDown="DgManage_PreviewKeyDown" ItemsSource="{Binding .}" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" RowHeaderWidth="0" AutoGenerateColumns="False" CanUserDeleteRows="False" CanUserAddRows="False" CanUserReorderColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding idparkausweise}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="ID" IsReadOnly="True" Width="40"/>
<DataGridTextColumn Binding="{Binding MA_Vorname}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Vorname" IsReadOnly="True" Width="*"/>
<DataGridTextColumn Binding="{Binding MA_Name}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Nachname" IsReadOnly="True" Width="*"/>
<DataGridTextColumn Binding="{Binding Abteilung}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Abteilung" IsReadOnly="True" Width="80"/>
<DataGridTextColumn Binding="{Binding idparkausweise}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="ID" IsReadOnly="True" Width="35"/>
<DataGridTextColumn Binding="{Binding MA_Vorname}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Vorname" IsReadOnly="True" Width="120"/>
<DataGridTextColumn Binding="{Binding MA_Name}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Nachname" IsReadOnly="True" Width="120"/>
<DataGridTextColumn Binding="{Binding Abteilung}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Abteilung" IsReadOnly="True" Width="85"/>
<DataGridTextColumn Binding="{Binding Firma}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Firma" IsReadOnly="True" Width="90"/>
<DataGridTextColumn Binding="{Binding Adresse}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Adresse" IsReadOnly="True" Width="*"/>
<DataGridTextColumn Binding="{Binding PLZ}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Postleitzahl" IsReadOnly="True" Width="70">
<DataGridTextColumn Binding="{Binding Adresse}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Adresse" IsReadOnly="True" Width="140"/>
<DataGridTextColumn Binding="{Binding PLZ}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="PLZ" IsReadOnly="True" Width="70">
<DataGridTextColumn.CellStyle>
<Style>
<Setter Property="TextBlock.TextAlignment" Value="Center"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Kennzeichen}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Kennzeichen" IsReadOnly="True" Width="80">
<DataGridTextColumn Binding="{Binding Kennzeichen}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Kennzeichen" IsReadOnly="True" Width="105">
<DataGridTextColumn.CellStyle>
<Style>
<Setter Property="TextBlock.TextAlignment" Value="Center"/>
@ -30,13 +30,31 @@
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Email}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="E-Mail" IsReadOnly="True" Width="220"/>
<DataGridTextColumn Binding="{Binding Telefon}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Telefon" IsReadOnly="True" Width="*"/>
<DataGridTextColumn Binding="{Binding Telefon}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Telefon" IsReadOnly="True" Width="120"/>
<DataGridTextColumn Binding="{Binding Vorgesetzter}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Vorgesetzter" IsReadOnly="True" Width="110"/>
<DataGridCheckBoxColumn Binding="{Binding AcceptedCorrectness}" ClipboardContentBinding="{x:Null}" Header="Bestätigung" IsReadOnly="True"/>
<DataGridCheckBoxColumn Binding="{Binding Genehmigt}" ClipboardContentBinding="{x:Null}" Header="Genehmigt" IsReadOnly="True"/>
<DataGridCheckBoxColumn Binding="{Binding Gedruckt}" ClipboardContentBinding="{x:Null}" Header="Gedruckt" IsReadOnly="True"/>
<DataGridCheckBoxColumn Binding="{Binding Schicht}" ClipboardContentBinding="{x:Null}" Header="Schicht" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding Bemerkung}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Bemerkung" IsReadOnly="True" Width="110"/>
<DataGridCheckBoxColumn Binding="{Binding AcceptedCorrectness}" ClipboardContentBinding="{x:Null}" Header="Bestätigung" IsReadOnly="True" Width="100"/>
<DataGridCheckBoxColumn Binding="{Binding Genehmigt}" ClipboardContentBinding="{x:Null}" Header="Genehmigt" IsReadOnly="False" Width="90">
<DataGridCheckBoxColumn.CellStyle>
<Style>
<EventSetter Event="CheckBox.PreviewMouseLeftButtonDown" Handler="OnChecked"/>
</Style>
</DataGridCheckBoxColumn.CellStyle>
</DataGridCheckBoxColumn>
<DataGridCheckBoxColumn Binding="{Binding Gedruckt}" ClipboardContentBinding="{x:Null}" Header="Gedruckt" IsReadOnly="False" Width="85">
<DataGridCheckBoxColumn.CellStyle>
<Style>
<EventSetter Event="CheckBox.PreviewMouseLeftButtonDown" Handler="OnChecked"/>
</Style>
</DataGridCheckBoxColumn.CellStyle>
</DataGridCheckBoxColumn>
<DataGridCheckBoxColumn Binding="{Binding Schicht}" ClipboardContentBinding="{x:Null}" Header="Schicht" IsReadOnly="False" Width="72">
<DataGridCheckBoxColumn.CellStyle>
<Style>
<EventSetter Event="CheckBox.PreviewMouseLeftButtonDown" Handler="OnChecked"/>
</Style>
</DataGridCheckBoxColumn.CellStyle>
</DataGridCheckBoxColumn>
<DataGridTextColumn Binding="{Binding Bemerkung}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Bemerkung" IsReadOnly="True" Width="124"/>
</DataGrid.Columns>
</DataGrid>

View File

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@ -42,5 +43,23 @@ namespace ZKuP
dgManage.DataContext = list;
}
}
private async void OnChecked(object sender, RoutedEventArgs e)
{
DataRowView myDRV = (sender as DataGridCell).DataContext as DataRowView;
string columnToSet = (sender as DataGridCell).Column.Header.ToString();
if (!((sender as DataGridCell).Content as CheckBox).IsChecked.Value)
{
if (myDRV != null)
await SQL.WriteSQL($"UPDATE zkup.parkausweise SET `{columnToSet}` = '1' WHERE `idparkausweise` = '{myDRV.Row.ItemArray[0]}'");
}
else if (((sender as DataGridCell).Content as CheckBox).IsChecked.Value)
if (myDRV != null)
await SQL.WriteSQL($"UPDATE zkup.parkausweise SET `{columnToSet}` = '0' WHERE `idparkausweise` = '{myDRV.Row.ItemArray[0]}'");
//await Task.Run(() => QueryProjekte());
}
}
}

View File

@ -5,23 +5,27 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ZKuP"
mc:Ignorable="d"
Title="Manage Users" Height="657" Width="409">
Title="Manage Users" Height="657" Width="450">
<Window.Resources>
<local:IntToRole x:Key="IntToRole"/>
</Window.Resources>
<Grid>
<Button x:Name="btnAddUser" Content="Add" Margin="10,130,0,0" Height="20" VerticalAlignment="Top" HorizontalAlignment="Left" Width="120" Click="BtnAddUser_Click"/>
<Button x:Name="btnClose" Content="Close" Margin="0,0,10,10" Height="20" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="75" Click="BtnClose_Click"/>
<TextBox x:Name="tbUsername" HorizontalAlignment="Left" Height="23" Margin="10,30,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
<Button x:Name="btnAddUser" FontSize="12" Padding="-2" Content="Add" Margin="10,130,0,0" Height="20" VerticalAlignment="Top" HorizontalAlignment="Left" Width="120" Click="BtnAddUser_Click"/>
<Button x:Name="btnClose" Content="Close" FontSize="12" Padding="-2" Margin="0,0,10,10" Height="20" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="75" Click="BtnClose_Click"/>
<TextBox x:Name="tbUsername" HorizontalAlignment="Left" Height="23" Margin="10,30,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" Text=""/>
<ComboBox x:Name="cbRole" HorizontalAlignment="Left" Margin="10,78,0,0" VerticalAlignment="Top" Width="120">
<ComboBoxItem Content="Pförtner"/>
<ComboBoxItem Content="Editor"/>
<ComboBoxItem Content="Admin"/>
<ComboBoxItem Content="Controller"/>
</ComboBox>
<DataGrid x:Name="dgUsers" Margin="150,10,10,46" ItemsSource="{Binding Path=., Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" CanUserAddRows="False" AutoGenerateColumns="False" PreviewKeyDown="DgUsers_PreviewKeyDown">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Username, Mode=TwoWay}" ClipboardContentBinding="{x:Null}" Header="Username" Width="*" SortDirection="Ascending"/>
<DataGridTextColumn Binding="{Binding Role, Mode=TwoWay}" ClipboardContentBinding="{x:Null}" Header="Role"/>
<DataGridTextColumn Binding="{Binding Role, Mode=OneWay, Converter={StaticResource IntToRole}}" ClipboardContentBinding="{x:Null}" Header="Role" Width="70"/>
</DataGrid.Columns>
</DataGrid>
<TextBlock HorizontalAlignment="Left" Margin="10,9,0,0" TextWrapping="Wrap" Text="Username" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Margin="10,57,0,0" TextWrapping="Wrap" Text="Role" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,9,0,0" TextWrapping="Wrap" Text="Username" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" Margin="10,57,0,0" TextWrapping="Wrap" Text="Role" VerticalAlignment="Top"/>
</Grid>
</Window>

View File

@ -1,18 +1,198 @@
<Window x:Class="ZKuP.ManageVisitor"
<mah:MetroWindow x:Class="ZKuP.ManageVisitor"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ZKuP"
mc:Ignorable="d"
Title="Besucher verwalten" Height="611" Width="1378" ResizeMode="NoResize"
WindowStartupLocation="CenterOwner">
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
Title="Besucher verwalten" Height="611" Width="1390" ResizeMode="NoResize"
WindowStartupLocation="CenterOwner" Loaded="Window_Loaded">
<Window.Resources>
<ResourceDictionary>
<ControlTemplate x:Key="ComboBoxControlTemplate1" TargetType="{x:Type ComboBox}">
<Grid x:Name="templateRoot" SnapsToDevicePixels="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition MinWidth="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}" Width="0"/>
</Grid.ColumnDefinitions>
<Popup x:Name="PART_Popup" AllowsTransparency="True" Grid.ColumnSpan="2" MinWidth="{Binding ActualWidth, ElementName=templateRoot}" IsOpen="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom">
<!--</Themes:SystemDropShadowChrome>-->
<!--<Themes:SystemDropShadowChrome x:Name="shadow" Color="Transparent" MaxHeight="{TemplateBinding MaxDropDownHeight}" MinWidth="{Binding ActualWidth, ElementName=templateRoot}">-->
<Border x:Name="DropDownBorder" BorderBrush="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}" BorderThickness="1" Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}">
<ScrollViewer x:Name="DropDownScrollViewer">
<Grid x:Name="grid" RenderOptions.ClearTypeHint="Enabled">
<Canvas x:Name="canvas" HorizontalAlignment="Left" Height="0" VerticalAlignment="Top" Width="0">
<Rectangle x:Name="OpaqueRect" Fill="{Binding Background, ElementName=DropDownBorder}" Height="{Binding ActualHeight, ElementName=DropDownBorder}" Width="{Binding ActualWidth, ElementName=DropDownBorder}"/>
</Canvas>
<ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Grid>
</ScrollViewer>
</Border>
</Popup>
<ToggleButton x:Name="toggleButton" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Grid.ColumnSpan="2" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
<ToggleButton.Style>
<Style TargetType="{x:Type ToggleButton}">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="IsTabStop" Value="False"/>
<Setter Property="Focusable" Value="False"/>
<Setter Property="ClickMode" Value="Press"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Border x:Name="templateRoot" BorderBrush="#99ACACAC" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="True">
<Border.Background>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#99F0F0F0" Offset="0"/>
<GradientStop Color="#99FFFFFF" Offset="1"/>
</LinearGradientBrush>
</Border.Background>
<Border x:Name="splitBorder" BorderBrush="Transparent" BorderThickness="1" HorizontalAlignment="Right" Margin="0" SnapsToDevicePixels="True" Width="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}">
<Path x:Name="Arrow" Data="F1M0,0L2.667,2.66665 5.3334,0 5.3334,-1.78168 2.6667,0.88501 0,-1.78168 0,0z" Fill="#CC000000" HorizontalAlignment="Center" Margin="0" VerticalAlignment="Center"/>
</Border>
</Border>
<ControlTemplate.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type ComboBox}}}" Value="true"/>
<Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="false"/>
<Condition Binding="{Binding IsPressed, RelativeSource={RelativeSource Self}}" Value="false"/>
<Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="true"/>
</MultiDataTrigger.Conditions>
<Setter Property="Background" TargetName="templateRoot" Value="White"/>
<Setter Property="BorderBrush" TargetName="templateRoot" Value="#4CABADB3"/>
<Setter Property="Background" TargetName="splitBorder" Value="Transparent"/>
<Setter Property="BorderBrush" TargetName="splitBorder" Value="Transparent"/>
</MultiDataTrigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Fill" TargetName="Arrow" Value="Black"/>
</Trigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/>
<Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type ComboBox}}}" Value="false"/>
</MultiDataTrigger.Conditions>
<Setter Property="Background" TargetName="templateRoot">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#4CECF4FC" Offset="0"/>
<GradientStop Color="#4CDCECFC" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" TargetName="templateRoot" Value="#4C7EB4EA"/>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/>
<Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type ComboBox}}}" Value="true"/>
</MultiDataTrigger.Conditions>
<Setter Property="Background" TargetName="templateRoot" Value="White"/>
<Setter Property="BorderBrush" TargetName="templateRoot" Value="#4C7EB4EA"/>
<Setter Property="Background" TargetName="splitBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#4CEBF4FC" Offset="0"/>
<GradientStop Color="#4CDCECFC" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" TargetName="splitBorder" Value="#4C7EB4EA"/>
</MultiDataTrigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Fill" TargetName="Arrow" Value="Black"/>
</Trigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsPressed, RelativeSource={RelativeSource Self}}" Value="true"/>
<Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type ComboBox}}}" Value="false"/>
</MultiDataTrigger.Conditions>
<Setter Property="Background" TargetName="templateRoot">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#4CDAECFC" Offset="0"/>
<GradientStop Color="#4CC4E0FC" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" TargetName="templateRoot" Value="#4C569DE5"/>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsPressed, RelativeSource={RelativeSource Self}}" Value="true"/>
<Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type ComboBox}}}" Value="true"/>
</MultiDataTrigger.Conditions>
<Setter Property="Background" TargetName="templateRoot" Value="White"/>
<Setter Property="BorderBrush" TargetName="templateRoot" Value="#4C569DE5"/>
<Setter Property="Background" TargetName="splitBorder">
<Setter.Value>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#4CDAEBFC" Offset="0"/>
<GradientStop Color="#4CC4E0FC" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" TargetName="splitBorder" Value="#4C569DE5"/>
</MultiDataTrigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Fill" TargetName="Arrow" Value="#4C000000"/>
</Trigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/>
<Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type ComboBox}}}" Value="false"/>
</MultiDataTrigger.Conditions>
<Setter Property="Background" TargetName="templateRoot" Value="#4CF0F0F0"/>
<Setter Property="BorderBrush" TargetName="templateRoot" Value="#4CD9D9D9"/>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/>
<Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type ComboBox}}}" Value="true"/>
</MultiDataTrigger.Conditions>
<Setter Property="Background" TargetName="templateRoot" Value="White"/>
<Setter Property="BorderBrush" TargetName="templateRoot" Value="#4CBFBFBF"/>
<Setter Property="Background" TargetName="splitBorder" Value="Transparent"/>
<Setter Property="BorderBrush" TargetName="splitBorder" Value="Transparent"/>
</MultiDataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ToggleButton.Style>
</ToggleButton>
<ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" Content="{TemplateBinding SelectionBoxItem}" ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="False" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Grid>
<ControlTemplate.Triggers>
<!--<Trigger Property="HasDropShadow" SourceName="PART_Popup" Value="True">
<Setter Property="Margin" TargetName="shadow" Value="0,0,5,5"/>
<Setter Property="Color" TargetName="shadow" Value="#71000000"/>
</Trigger>-->
<Trigger Property="HasItems" Value="False">
<Setter Property="Height" TargetName="DropDownBorder" Value="95"/>
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsGrouping" Value="True"/>
<Condition Property="VirtualizingPanel.IsVirtualizingWhenGrouping" Value="False"/>
</MultiTrigger.Conditions>
<Setter Property="ScrollViewer.CanContentScroll" Value="False"/>
</MultiTrigger>
<Trigger Property="CanContentScroll" SourceName="DropDownScrollViewer" Value="False">
<Setter Property="Canvas.Top" TargetName="OpaqueRect" Value="{Binding VerticalOffset, ElementName=DropDownScrollViewer}"/>
<Setter Property="Canvas.Left" TargetName="OpaqueRect" Value="{Binding HorizontalOffset, ElementName=DropDownScrollViewer}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</ResourceDictionary>
</Window.Resources>
<Grid>
<TextBox x:Name="tbName" HorizontalAlignment="Left" Height="23" Margin="10,57,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="340" TabIndex="1" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<TextBlock HorizontalAlignment="Left" Margin="10,36,0,0" TextWrapping="Wrap" Text="Name" VerticalAlignment="Top"/>
<TextBlock HorizontalAlignment="Left" Margin="10,36,0,0" TextWrapping="Wrap" Text="Name" VerticalAlignment="Top"/>
<TextBox x:Name="tbVerantwortlicher_MA" HorizontalAlignment="Left" Height="23" Margin="10,106,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="340" TabIndex="2" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<TextBlock HorizontalAlignment="Left" Margin="10,85,0,0" TextWrapping="Wrap" Text="Verantwortlicher Mitarbeiter" VerticalAlignment="Top"/>
<TextBox x:Name="tbTel_Besucher" HorizontalAlignment="Left" Height="23" Margin="10,155,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="340" TabIndex="3" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<TextBox x:Name="tbTel_Besucher" HorizontalAlignment="Left" Height="23" Margin="10,155,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="340" TabIndex="3" PreviewKeyDown="TextBoxes_PreviewKeyDown" PreviewTextInput="Tel_Nr_Besucher_PreviewTextInput"/>
<TextBlock HorizontalAlignment="Left" Margin="10,134,0,0" TextWrapping="Wrap" VerticalAlignment="Top"><Run Text="Telefonnummer "/><Run Text="Besucher"/></TextBlock>
<TextBox x:Name="tbAnzahl_Begleiter" HorizontalAlignment="Left" Height="23" Margin="10,204,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="340" TabIndex="4" PreviewKeyDown="TbAnzahl_Begleiter_PreviewKeyDown" PreviewTextInput="tbAnzahl_Begleiter_PreviewTextInput" ToolTip="Nur Zahlen und max. 2 Stellen" CommandManager.PreviewExecuted="Textboxes_PreviewExecuted" ContextMenu="{x:Null}"/>
<TextBlock HorizontalAlignment="Left" Margin="10,183,0,0" TextWrapping="Wrap" Text="Anzahl Begleitpersonen" VerticalAlignment="Top"/>
@ -22,8 +202,8 @@
<TextBlock HorizontalAlignment="Left" Margin="10,424,0,0" TextWrapping="Wrap" Text="Ansprechpartner intern" VerticalAlignment="Top"/>
<TextBox x:Name="tbTel_Ansprechp" HorizontalAlignment="Left" Height="23" Margin="10,494,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="340" TabIndex="9" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<TextBlock HorizontalAlignment="Left" Margin="10,473,0,0" TextWrapping="Wrap" Text="Telefonnummer Ansprechpartner" VerticalAlignment="Top"/>
<DatePicker x:Name="dpBesuchstag" HorizontalAlignment="Left" Margin="10,253,0,0" VerticalAlignment="Top" TabIndex="5" PreviewKeyDown="DpBesuchstag_PreviewKeyDown"/>
<Button x:Name="btnAdd" Content="Hinzufügen&#xA; →" HorizontalAlignment="Left" Margin="355,36,0,55" Width="75" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Click="BtnAdd_Click" TabIndex="10" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<DatePicker x:Name="dpBesuchstag" HorizontalAlignment="Left" Margin="10,253,0,0" VerticalAlignment="Top" TabIndex="5" PreviewKeyDown="DpBesuchstag_PreviewKeyDown" DateValidationError="dpBesuchstag_DateValidationError"/>
<Button x:Name="btnAdd" Content="Hinzufügen&#xA; →" FontSize="12" Padding="-2" HorizontalAlignment="Left" Margin="355,36,0,55" Width="75" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Click="BtnAdd_Click" TabIndex="10" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<DataGrid x:Name="dgVisitors" ItemsSource="{Binding Path=., Mode=OneWay}" KeyboardNavigation.TabNavigation="None" Margin="435,36,10,55" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="True" HorizontalScrollBarVisibility="Visible" PreviewKeyDown="DgVisitors_PreviewKeyDown" CellEditEnding="DgVisitors_CellEditEnding" BeginningEdit="DgVisitors_BeginningEdit" SelectionChanged="dgVisitors_SelectionChanged" PreparingCellForEdit="dgVisitors_PreparingCellForEdit" ToolTip="Daten können per Doppelklick geändert werden">
<DataGrid.CellStyle>
<!--Override Highlighting so that its easy to see what is selected even when the control is not focused-->
@ -49,38 +229,129 @@
</Style>
</DataGrid.CellStyle>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}" ClipboardContentBinding="{x:Null}" Header="Name" Width="*" MinWidth="150" SortDirection="Ascending"/>
<DataGridTextColumn Binding="{Binding Verantwortlicher_MA}" ClipboardContentBinding="{x:Null}" Header="Verantw. MA" MinWidth="150"/>
<DataGridTextColumn Binding="{Binding Tel_Nr_Besucher}" ClipboardContentBinding="{x:Null}" Header="Tel. Besucher" MinWidth="150"/>
<DataGridTextColumn Binding="{Binding Name}" ClipboardContentBinding="{x:Null}" Header="Name" Width="*" MinWidth="150" SortDirection="Ascending">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Margin" Value="5,0,0,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Verantwortlicher_MA}" ClipboardContentBinding="{x:Null}" Header="Verantw. MA" MinWidth="150">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Margin" Value="5,0,0,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTemplateColumn ClipboardContentBinding="{x:Null}" Header="Tel. Besucher" MinWidth="150"> <!--Binding="{Binding Tel_Nr_Besucher}"-->
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Tel_Nr_Besucher}" Background="Transparent" BorderThickness="0" PreviewTextInput="Tel_Nr_Besucher_PreviewTextInput" TextAlignment="Left" HorizontalContentAlignment="Center" VerticalAlignment="Center" Margin="5,0,0,0"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<!--<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Margin" Value="5,0,0,0"/>
</Style>
</DataGridTextColumn.ElementStyle>-->
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding Anzahl_Begleitpersonen}" ClipboardContentBinding="{x:Null}" Header="Anz. Begleitp." MinWidth="50">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Margin" Value="5,0,0,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Besuchstag, StringFormat=\{0:dd.MM.yyyy\}}" ClipboardContentBinding="{x:Null}" Header="Besuchstag" MinWidth="75">
<DataGridTemplateColumn ClipboardContentBinding="{x:Null}" Header="Besuchstag" MinWidth="75">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DatePicker x:Name="dpDataGridBesuchstag" Text="{Binding Besuchstag, StringFormat=\{0:dd.MM.yyyy\}}" ToolTip="Datum über Kalender ändern" CalendarClosed="dpDataGridBesuchstag_CalendarClosed" CalendarOpened="dpDataGridBesuchstag_CalendarOpened">
<DatePicker.Resources>
<Style TargetType="DatePickerTextBox">
<Setter Property="IsReadOnly" Value="True"/>
</Style>
</DatePicker.Resources>
</DatePicker>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding Grund_des_Besuchs}" ClipboardContentBinding="{x:Null}" Header="Grund des Besuchs" MinWidth="200">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Margin" Value="5,0,0,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Oertlichkeit}" ClipboardContentBinding="{x:Null}" Header="Örtlichkeit" MinWidth="150">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Margin" Value="5,0,0,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTemplateColumn Header="Anspr. intern" MinWidth="150">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox x:Name="dg_cbASP" Template="{StaticResource ComboBoxControlTemplate1}" ItemsSource="{Binding asp, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:ManageVisitor}}}" SelectedItem="{Binding Ansprechpartner_Intern, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" DropDownClosed="dg_cbAsp_DropDownClosed" DropDownOpened="dg_cbASP_DropDownOpened">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!--<DataGridTextColumn Binding="{Binding Ansprechpartner_Intern}" ClipboardContentBinding="{x:Null}" Header="Anspr. intern" MinWidth="150">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Margin" Value="5,0,0,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>-->
<DataGridTextColumn Binding="{Binding Tel_Nr_Ansprechpartner_Intern}" ClipboardContentBinding="{x:Null}" Header="Tel. Ansprechp." MinWidth="150">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="Margin" Value="5,0,0,0"/>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Grund_des_Besuchs}" ClipboardContentBinding="{x:Null}" Header="Grund des Besuchs" MinWidth="200"/>
<DataGridTextColumn Binding="{Binding Oertlichkeit}" ClipboardContentBinding="{x:Null}" Header="Örtlichkeit" MinWidth="150"/>
<DataGridTextColumn Binding="{Binding Ansprechpartner_Intern}" ClipboardContentBinding="{x:Null}" Header="Anspr. intern" MinWidth="150"/>
<DataGridTextColumn Binding="{Binding Tel_Nr_Ansprechpartner_Intern}" ClipboardContentBinding="{x:Null}" Header="Tel. Ansprechp." MinWidth="150"/>
</DataGrid.Columns>
</DataGrid>
<TextBlock HorizontalAlignment="Left" Text=" Hinweis: Besucher sind&#xA; immer ohne KFZ!" FontSize="16" Foreground="Red" Margin="70,0,0,5" FontWeight="Bold" VerticalAlignment="Bottom">
<TextBlock.ToolTip>
<StackPanel Orientation="Vertical">
<TextBlock Text="Besucher dürfen nicht mit Fahrzeugen auf das Gelände fahren."/>
<TextBlock Text="Wird ein Fahrzeug auf dem Gelände dringend benötigt, so muss der Besucher als Firma unter 'Firmen verwalten' eingetragen werden"/>
<TextBlock Text="Wenn Ihnen der Button 'Firmen verwalten' nicht angezeigt wird, wenden Sie sich bitte an Ihren Fremdfirmenkoordinator"/>
<TextBlock Text="&#xA;Besucher die hier mit Fahrzeugen eingetragen wurden, werden regelmäßig gelöscht und dann vom Pförtner nicht hereingelassen" Foreground="Red" FontSize="16"/>
</StackPanel>
</TextBlock.ToolTip>
</TextBlock>
<TextBlock HorizontalAlignment="Left" Text="Wird ein Zugang mit KFZ benötigt, ist der Besucher als Firma einzutragen!" FontSize="14" Margin="350,0,0,15" VerticalAlignment="Bottom"/>
<Button x:Name="btnClose" Content="Schließen" Margin="0,0,10,10" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="98" Height="28" Click="BtnClose_Click" TabIndex="11"/>
<TextBox x:Name="tbGrundDesBesuchs" HorizontalAlignment="Left" Height="23" Margin="10,302,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="340" TabIndex="6" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<TextBlock HorizontalAlignment="Left" Margin="10,330,0,0" TextWrapping="Wrap" Text="Örtlichkeit" VerticalAlignment="Top"/>
<TextBox x:Name="tbOertlichkeit" HorizontalAlignment="Left" Height="23" Margin="10,351,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="340" TabIndex="7" PreviewKeyDown="TextBoxes_PreviewKeyDown"/>
<Button x:Name="btnDelete" Content="Markierten Besucher löschen" Margin="0,10,10,0" VerticalAlignment="Top" HorizontalAlignment="Right" Width="167" Click="btnDelete_Click" IsEnabled="False"/>
<Button x:Name="btnDelete" Content="Markierten Besucher löschen" FontSize="12" Padding="-2" Height="25" Margin="0,10,10,0" VerticalAlignment="Top" HorizontalAlignment="Right" Width="167" Click="btnDelete_Click" IsEnabled="False"/>
<TextBlock HorizontalAlignment="Left" Margin="10,379,0,0" TextWrapping="Wrap" Text="Ansprechpartner wählen oder eingeben" VerticalAlignment="Top"/>
<ComboBox x:Name="cBAsp" HorizontalAlignment="Left" Margin="10,400,0,0" VerticalAlignment="Top" Width="340" SelectionChanged="cBAsp_SelectionChanged"/>
<TextBlock x:Name="lblSearch" HorizontalAlignment="Left" Margin="625,15,0,0" TextWrapping="Wrap" Text="Suchen..." VerticalAlignment="Top" Height="16" Width="177" Foreground="Gray" Visibility="Visible"/>
<TextBox x:Name="tbSearch" HorizontalAlignment="Left" Margin="618,11,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="182" Height="23" TextChanged="TextBox_TextChanged" Background="Transparent" Visibility="Visible"/>
<mah:ProgressRing x:Name="searchProgress" HorizontalAlignment="Left" Margin="807,11,0,0" VerticalAlignment="Top" Height="23" Width="23" IsActive="True" Visibility="Collapsed"/>
</Grid>
</Window>
</mah:MetroWindow>

View File

@ -20,7 +20,7 @@ namespace ZKuP
/// <summary>
/// Interaktionslogik für CreateVisitor.xaml
/// </summary>
public partial class ManageVisitor : Window, INotifyPropertyChanged
public partial class ManageVisitor : MahApps.Metro.Controls.MetroWindow, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
@ -40,6 +40,7 @@ namespace ZKuP
set { aspVar = value; OnPropertyChanged(); }
}
System.Windows.Threading.DispatcherTimer searchTimer = new System.Windows.Threading.DispatcherTimer();
int index = 0;
@ -50,6 +51,11 @@ namespace ZKuP
InitializeComponent();
//if (MainWindow.LoggedInRole == Roles.Admin)
//{
// tbSearch.Visibility = Visibility.Visible;
// lblSearch.Visibility = Visibility.Visible;
//}
asp = SQL.ReadListString("SELECT Name FROM zkup.ansprechpartner").Result;
asp = asp.OrderBy(p => p).ToList();
@ -59,10 +65,10 @@ namespace ZKuP
updateList();
searchTimer.Interval = TimeSpan.FromSeconds(0.5);
searchTimer.Tick += SearchTimer_Tick;
dgVisitors.Items.SortDescriptions.Clear();
dgVisitors.Items.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
dgVisitors.UpdateLayout();
Dispatcher.Invoke(() => dgVisitors.Columns.FirstOrDefault(c => c.Header.ToString() == "Name").SortDirection = ListSortDirection.Ascending);
}
private void updateList()
@ -82,7 +88,7 @@ namespace ZKuP
visitors = SQL.ReadSQL($"SELECT * FROM zkup.besucher WHERE Ersteller = '{Environment.UserName}' " +
$"OR Ersteller = '{Environment.UserDomainName}{Environment.UserName}' " +
$"OR Ersteller = '{SQL.ReadSingleValue($"SELECT Vertreter FROM zkup.ansprechpartner WHERE Name = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'")}' " +
$"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'"
$"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}' ORDER BY Name ASC"
, visitors).Result;
VisitorView = Visitor.DataTableToVisitor(visitors);
@ -91,7 +97,7 @@ namespace ZKuP
private void requestListAdmin()
{
visitors = SQL.ReadSQL("SELECT * FROM zkup.besucher", visitors).Result;
visitors = SQL.ReadSQL("SELECT * FROM zkup.besucher ORDER BY Name ASC", visitors).Result;
VisitorView = Visitor.DataTableToVisitor(visitors);
dgVisitors.DataContext = visitors;
}
@ -105,16 +111,37 @@ namespace ZKuP
{
if (tbAnzahl_Begleiter.Text == "") tbAnzahl_Begleiter.Text = "0";
if (string.IsNullOrWhiteSpace(tbName.Text))
MessageBox.Show("Name eintragen!", "Fehler");
else if (string.IsNullOrWhiteSpace(tbVerantwortlicher_MA.Text))
MessageBox.Show("Verantwortlichen MA eintragen!", "Fehler");
else if (tbVerantwortlicher_MA.Text.ToList<char>().Distinct().Count() < 5)
{
MessageBox.Show("Verantwortlicher MA muss qualifiziert angegeben werden!\nFalls kein Verantwortlicher bekannt ist, ist der Zutritt unzulässig", "Fehler");
return;
}
else if (string.IsNullOrWhiteSpace(tbTel_Besucher.Text))
MessageBox.Show("Telefonnummer Besucher eintragen!", "Fehler");
else if (tbTel_Besucher.Text.ToList<char>().Distinct().Count() < 5)
{
MessageBox.Show("Telefonnummer des Besuchers muss qualifiziert angegeben werden!\nFalls keine Nummer bekannt, die Nummer des Erstellers eintragen", "Fehler");
return;
}
else if (!System.Text.RegularExpressions.Regex.IsMatch(tbTel_Besucher.Text, "^[0-9()+\\-/ ]*$"))
{
MessageBox.Show("Telefonnummer des Besuchers muss qualifiziert angegeben werden!\nFalls keine Nummer bekannt, die Nummer des Erstellers eintragen", "Fehler");
return;
}
else if (!dpBesuchstag.SelectedDate.HasValue)
MessageBox.Show("Besuchstag eintragen!", "Fehler");
else if (string.IsNullOrWhiteSpace(tbGrundDesBesuchs.Text))
MessageBox.Show("'Grund des Besuchs' eintragen!", "Fehler");
else if (tbGrundDesBesuchs.Text.ToList<char>().Distinct().Count() < 5)
{
MessageBox.Show("Besuchsgrund muss qualifiziert angegeben werden!", "Fehler");
return;
}
else if (string.IsNullOrWhiteSpace(tbOertlichkeit.Text))
MessageBox.Show("'Örtlichkeit' eintragen!", "Fehler");
else if (string.IsNullOrWhiteSpace(tbAnsprechp_Intern.Text))
@ -186,9 +213,12 @@ namespace ZKuP
var header = e.Column.Header;
if (header.ToString() == "Anspr. intern")
newValue = (e.EditingElement as ComboBox).Text;
else if (header.ToString() == "Besuchstag")
newValue = (e.EditingElement as DatePicker).Text;
else
newValue = (e.EditingElement as TextBox).Text;
var id = (e.Row.Item as DataRowView).Row.ItemArray[0];
DateTime date = DateTime.Now;
@ -370,8 +400,7 @@ namespace ZKuP
string oldValue = "";
private void dgVisitors_PreparingCellForEdit(object sender, DataGridPreparingCellForEditEventArgs e)
{
oldValue = (e.EditingElement as TextBox) != null ? (e.EditingElement as TextBox).Text : "";
oldValue = (e.EditingElement as TextBox) != null ? (e.EditingElement as TextBox).Text : "";
}
private void tbAnzahl_Begleiter_PreviewTextInput(object sender, TextCompositionEventArgs e)
@ -392,6 +421,134 @@ namespace ZKuP
e.Handled = true;
}
}
private void dpBesuchstag_DateValidationError(object sender, DatePickerDateValidationErrorEventArgs e)
{
MessageBox.Show("Kein gültiges Datumsformat in Feld 'Besuchstag'", "Fehler", MessageBoxButton.OK, MessageBoxImage.Warning);
}
private void DatePicker_PreviewKeyDown(object sender, KeyEventArgs e)
{
oldValue = (sender as DatePicker).Text;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
}
private async void dpDataGridBesuchstag_CalendarClosed(object sender, RoutedEventArgs e)
{
if (oldValue != (sender as DatePicker).Text)
{
if (MessageBox.Show(this, $"Möchten Sie den Eintrag '{oldValue}' in der Spalte 'Besuchstag' sicher zu '{(sender as DatePicker).Text}' ändern?", "Sicher ändern?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
var id = (DataGridRow.GetRowContainingElement((sender as DatePicker)).Item as DataRowView).Row.ItemArray[0];
await SQL.WriteSQL($"UPDATE besucher SET Besuchstag = '{(sender as DatePicker).SelectedDate.Value.ToString("yyyy-MM-dd")}', Bearbeiter = '{Environment.UserName}' WHERE idBesucher = '{id}'");
}
}
}
private void dpDataGridBesuchstag_CalendarOpened(object sender, RoutedEventArgs e)
{
oldValue = (sender as DatePicker).Text;
}
string oldValueAsp = "";
private void dgFirmen_PreparingCellForEdit(object sender, DataGridPreparingCellForEditEventArgs e)
{
if (e.Column.Header.ToString() == "Anspr. intern")
oldValueAsp = (e.EditingElement as ComboBox) != null ? (e.EditingElement as ComboBox).Text : "";
else
oldValueAsp = (e.EditingElement as TextBox) != null ? (e.EditingElement as TextBox).Text : "";
}
private void dg_cbASP_DropDownOpened(object sender, EventArgs e)
{
oldValueAsp = (sender as ComboBox) != null ? (sender as ComboBox).Text : "";
}
private async void dg_cbAsp_DropDownClosed(object sender, EventArgs e)
{
var box = sender as ComboBox;
DataGridRow dataGridRow = Helper.FindParent<DataGridRow>(box);
int index = dataGridRow.GetIndex();
var id = ((System.Data.DataRowView)dataGridRow.DataContext).Row.ItemArray[0];
if ((sender as ComboBox).SelectedIndex != -1 && (sender as ComboBox).SelectedItem.ToString() != "")
{
if (oldValueAsp != box.Text)
{
if (MessageBox.Show(this, $"Möchten Sie den Eintrag '{oldValueAsp}' in der Spalte 'Anspr. intern' sicher zu '{box.Text}' ändern?", "Sicher ändern?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
await SQL.WriteSQL($"UPDATE besucher SET Ansprechpartner_Intern = '{box.Text}',Tel_Nr_Ansprechpartner_Intern = '{SQL.ReadSingleValue($"SELECT Tel_Nr FROM zkup.ansprechpartner WHERE Name = '{(sender as ComboBox).Text}'")}', Bearbeiter = '{Environment.UserName}' WHERE idbesucher = '{id}'");
updateList();
dgVisitors.RowValidationErrorTemplate = new ControlTemplate();
dgVisitors.SelectedIndex = (index);
dgVisitors.ScrollIntoView(dgVisitors.Items[index]);
}
}
}
else
{
//tbAnsprechp_Intern.Text = "";
//tbTel_Ansprechp.Text = "";
}
}
string searchTerm = "";
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
if (searchTerm == "")
{
lblSearch.Visibility = Visibility.Visible;
searchProgress.Visibility = Visibility.Visible;
}
else
{
lblSearch.Visibility = Visibility.Collapsed;
searchProgress.Visibility = Visibility.Visible;
}
searchTerm = (sender as TextBox).Text;
searchTimer.Start();
}
private void SearchTimer_Tick(object sender, EventArgs e)
{
if (searchTerm == "")
{
visitors.DefaultView.RowFilter = $"";
Task.Run(() => VisitorView = Visitor.DataTableToVisitor(visitors));
dgVisitors.DataContext = visitors;
}
else
{
visitors.DefaultView.RowFilter = $"Name LIKE '%{searchTerm}%' OR Verantwortlicher_MA LIKE '%{searchTerm}%'";
Task.Run(() => VisitorView = Visitor.DataTableToVisitor(visitors));
dgVisitors.DataContext = visitors;
}
searchProgress.Visibility = Visibility.Collapsed;
searchTimer.Stop();
}
private void Tel_Nr_Besucher_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
if (!System.Text.RegularExpressions.Regex.IsMatch(e.Text, "^[0-9()+\\-/ ]*$"))
{
e.Handled = true;
new System.Windows.Controls.Primitives.Popup() { Child = new TextBlock() { Text = $"'{e.Text}' ist kein gültiges Zeichen\nTelefonnummer muss qualifiziert eingetragen werden!", Foreground = new SolidColorBrush(Colors.White), Margin = new Thickness(5) }, IsOpen = true, StaysOpen = false, Placement = System.Windows.Controls.Primitives.PlacementMode.Mouse };
}
}
}
@ -433,4 +590,4 @@ namespace ZKuP
return x;
}
}
}
}

View File

@ -0,0 +1,45 @@
<Window x:Class="ZKuP.NotificationSettings"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ZKuP"
mc:Ignorable="d"
Title="Benachrichtigungen" Height="400" Width="380" ResizeMode="NoResize">
<Grid>
<StackPanel Margin="10,20,10,10">
<TextBlock Text="Kategorie wählen:" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<ComboBox x:Name="cbCategory" Height="30" Margin="0,5,0,0" VerticalAlignment="Top" SelectionChanged="ComboBox_SelectionChanged">
<ComboBoxItem Content=""/>
<ComboBoxItem Content="Firma"/>
<ComboBoxItem Content="Besucher"/>
<ComboBoxItem Content="Lieferant"/>
<ComboBoxItem Content="DB Notdienst"/>
</ComboBox>
</StackPanel>
<StackPanel Margin="10,80,10,10">
<TextBlock x:Name="tbChoose" Text="" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<ComboBox x:Name="cBVisitor" Margin="0,5,0,0" Height="30" VerticalAlignment="Top" IsEnabled="False" SelectionChanged="cBVisitor_SelectionChanged"/>
</StackPanel>
<StackPanel Orientation="Vertical" VerticalAlignment="Bottom" Margin="10,0,5,100">
<CheckBox x:Name="cbWin" Margin="10,5,0,10" Content="Windows-Notification" IsEnabled="False"/>
<DockPanel Margin="5,5,10,5">
<CheckBox x:Name="cbMail" Margin="5" Content="Email" IsEnabled="False" Checked="cbMail_Checked" Unchecked="cbMail_Unchecked"/>
<TextBox x:Name="tbMail" HorizontalAlignment="Right" Width="250" IsEnabled="False"/>
</DockPanel>
<DockPanel Margin="5,5,10,5">
<CheckBox x:Name="cbSMS" Margin="5" Content="SMS" IsEnabled="False" Checked="cbSMS_Checked" Unchecked="cbSMS_Unchecked"/>
<TextBox x:Name="tbSMS" HorizontalAlignment="Right" Width="250" IsEnabled="False"/>
</DockPanel>
</StackPanel>
<StackPanel Orientation="Vertical" VerticalAlignment="Bottom">
<Button x:Name="btnAddNotification" Content="Hinzufügen" Margin="5" Height="30" VerticalAlignment="Bottom" Click="btnAddNotification_Click"/>
<Button x:Name="btnSave" Content="Schließen" Height="30" Margin="5" VerticalAlignment="Bottom"/>
</StackPanel>
</Grid>
</Window>

View File

@ -0,0 +1,314 @@
using Microsoft.Toolkit.Uwp.Notifications;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.UI.WebControls;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace ZKuP
{
/// <summary>
/// Interaktionslogik für NotificationSettings.xaml
/// </summary>
public partial class NotificationSettings : Window
{
DataTable table = new DataTable("Firmen");
List<string> visitorList = new List<string>();
public NotificationSettings()
{
InitializeComponent();
}
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
table.Clear();
cBVisitor.ItemsSource = null;
cbWin.IsEnabled = false;
cbMail.IsEnabled = false;
cbSMS.IsEnabled = false;
switch (((sender as ComboBox).SelectedItem as ComboBoxItem).Content)
{
case "Firma":
tbChoose.Text = "Firma wählen:";
cBVisitor.IsEnabled = true;
if (MainWindow.LoggedInRole == Roles.Admin || MainWindow.LoggedInRole == Roles.Pförtner || MainWindow.LoggedInRole == Roles.Controller)
{
requestFirmen(true);
}
else
{
requestFirmen(false);
}
break;
case "Besucher":
tbChoose.Text = "Besucher wählen:";
cBVisitor.IsEnabled = true;
if (MainWindow.LoggedInRole == Roles.Admin || MainWindow.LoggedInRole == Roles.Pförtner || MainWindow.LoggedInRole == Roles.Controller)
{
requestBesucher(true);
}
else
{
requestFirmen(false);
}
break;
case "Lieferant":
tbChoose.Text = "Lieferant wählen:";
cBVisitor.IsEnabled = true;
if (MainWindow.LoggedInRole == Roles.Admin || MainWindow.LoggedInRole == Roles.Pförtner || MainWindow.LoggedInRole == Roles.Controller)
{
requestLieferant(true);
}
else
{
requestLieferant(false);
}
break;
case "DB Notdienst":
tbChoose.Text = "DB Notdienst wählen:";
cBVisitor.IsEnabled = true;
if (MainWindow.LoggedInRole == Roles.Admin || MainWindow.LoggedInRole == Roles.Pförtner || MainWindow.LoggedInRole == Roles.Controller)
{
requestDB(true);
}
else
{
requestDB(false);
}
break;
case "":
cBVisitor.IsEnabled = false;
break;
}
}
private void requestBesucher(bool isAdmin = false)
{
if (!isAdmin)
{
table = SQL.ReadSQL($"SELECT Name,Ersteller FROM zkup.besucher WHERE Ersteller = '{Environment.UserName}' " +
$"OR Ersteller = '{Environment.UserDomainName}{Environment.UserName}' " +
$"OR Ersteller = '{SQL.ReadSingleValue($"SELECT Vertreter FROM zkup.ansprechpartner WHERE Name = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'")}' " +
$"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}' GROUP BY Name"
, table).Result;
var list = table.Select().Select(p => p.ItemArray[0]).ToList();
list.Sort();
cBVisitor.ItemsSource = list.Cast<string>();
}
else
{
table = SQL.ReadSQL("SELECT Name FROM zkup.besucher GROUP BY Name", table).Result;
//FirmaView = Firma.DataTableToFirma(firmen);
//dgFirmen.DataContext = firmen;
var list = table.Select().Select(p => p.ItemArray[0]).ToList();
list.Sort();
cBVisitor.ItemsSource = list.Cast<string>();
}
}
private void requestFirmen(bool isAdmin = false)
{
if (!isAdmin)
{
table = SQL.ReadSQL($"SELECT Name,Ersteller FROM zkup.firmen WHERE Ersteller = '{Environment.UserName}' " +
$"OR Ersteller = '{Environment.UserDomainName}{Environment.UserName}' " +
$"OR Ersteller = '{SQL.ReadSingleValue($"SELECT Vertreter FROM zkup.ansprechpartner WHERE Name = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
$"OR Ersteller = '{Environment.UserDomainName}{SQL.ReadSingleValue($"SELECT Vertreter FROM zkup.ansprechpartner WHERE Name = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
$"OR Ersteller = '{SQL.ReadSingleValue($"SELECT Name FROM zkup.ansprechpartner WHERE Vertreter = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
$"OR Ersteller = '{Environment.UserDomainName}{SQL.ReadSingleValue($"SELECT Name FROM zkup.ansprechpartner WHERE Vertreter = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "")}' " +
$"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}' GROUP BY Name"
, table).Result;
//FirmaView = Firma.DataTableToFirma(firmen);
//dgFirmen.DataContext = firmen;
var list = table.Select().Select(p => p.ItemArray[0]).ToList();
list.Sort();
cBVisitor.ItemsSource = list.Cast<string>();
}
else
{
table = SQL.ReadSQL("SELECT Name FROM zkup.firmen GROUP BY Name", table).Result;
//FirmaView = Firma.DataTableToFirma(firmen);
//dgFirmen.DataContext = firmen;
var list = table.Select().Select(p => p.ItemArray[0]).ToList();
list.Sort();
cBVisitor.ItemsSource = list.Cast<string>();
}
}
private void requestLieferant(bool isAdmin = false)
{
table = SQL.ReadSQL("Select MAX(Firma), MAX(Fahrer) from zkup.lieferanten WHERE Firma NOT LIKE 'DB%' GROUP BY Firma", table).Result;
var list = table.Select().Select(p => "Firma: " + p.ItemArray[0].ToString() + ", Fahrer: " + p.ItemArray[1]).ToList();
list.Sort();
cBVisitor.ItemsSource = list.Cast<string>();
}
private void requestDB(bool isAdmin = false)
{
table = SQL.ReadSQL("SELECT MAX(Firma), MAX(Fahrer) FROM zkup.lieferanten WHERE Firma LIKE 'DB%' GROUP BY Firma", table).Result;
var list = table.Select().Select(p => "Firma: " + p.ItemArray[0].ToString() + ", Fahrer: " + p.ItemArray[1]).ToList();
list.Sort();
cBVisitor.ItemsSource = list.Cast<string>();
}
private void cBVisitor_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
cbWin.IsEnabled = true;
cbMail.IsEnabled = true;
tbMail.IsEnabled = true;
cbSMS.IsEnabled = true;
tbSMS.IsEnabled = true;
}
private void cbSMS_Checked(object sender, RoutedEventArgs e)
{
tbSMS.IsEnabled = true;
}
private void cbSMS_Unchecked(object sender, RoutedEventArgs e)
{
tbSMS.IsEnabled = false;
}
private void cbMail_Checked(object sender, RoutedEventArgs e)
{
tbMail.IsEnabled = true;
}
private void cbMail_Unchecked(object sender, RoutedEventArgs e)
{
tbMail.IsEnabled = false;
}
private void btnAddNotification_Click(object sender, RoutedEventArgs e)
{
var NotiWin = cbWin.IsChecked.Value ? "1" : "0";
var NotiMail = cbMail.IsChecked.Value ? "1" : "0";
var NotiSms = cbSMS.IsChecked.Value ? "1" : "0";
var type = $"{NotiWin};{NotiMail};{NotiSms}";
SQL.WriteSQL($"REPLACE INTO zkup.notification (Username, Visitor, Category, NotificationType) VALUES ('{Environment.UserName}', '{cBVisitor.Text}', {cbCategory.SelectedIndex}, '{type}', '{tbMail.Text}', '{tbSMS.Text}')");
}
//private async void ShowToastSelected(DataTable dt)
//{
// try
// {
// bool isAdminEntry = false;
// if (LoggedInRole == Roles.Admin)
// {
// var vertAspName = SQL.ReadSingleValue($"SELECT Vertreter FROM zkup.ansprechpartner WHERE Name = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "");
// var nameAspVert = SQL.ReadSingleValue($"SELECT Name FROM zkup.ansprechpartner WHERE Vertreter = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'").Replace("-", "").Replace(" ", "");
// var check = await SQL.ReadSQL($"SELECT * FROM zkup.zutritte where Zutritt >= now() + INTERVAL -20 SECOND AND (idFirma_Besucher IN (select idfirmen from zkup.firmen where Ersteller = '{Environment.UserName}' " +
// $"OR Ersteller = '{Environment.UserDomainName}{Environment.UserName}' " +
// $"OR Ersteller = '{vertAspName}' " +
// $"OR Ersteller = '{Environment.UserDomainName}{vertAspName}' " +
// $"OR Ersteller = '{nameAspVert}' " +
// $"OR Ersteller = '{Environment.UserDomainName}{nameAspVert}' " +
// $"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}') " +
// $"OR idFirma_Besucher IN (select idbesucher from zkup.besucher where Ersteller = '{Environment.UserName}' " +
// $"OR Ersteller = '{Environment.UserDomainName}{Environment.UserName}' " +
// $"OR Ersteller = '{vertAspName}' " +
// $"OR Ersteller = '{Environment.UserDomainName}{vertAspName}' " +
// $"OR Ersteller = '{nameAspVert}' " +
// $"OR Ersteller = '{Environment.UserDomainName}{nameAspVert}' " +
// $"OR Ansprechpartner_Intern = '{Helper.InsertSpaceBeforeUpperCase(Environment.UserName)}'))");
// isAdminEntry = check.Rows.Count > 0;
// }
// if (LoggedInRole != Roles.Pförtner)
// {
// //1 = Firma
// if (int.Parse(dt.Rows[0].ItemArray[1].ToString()) == 1)
// {
// if (dt.Rows[0].ItemArray[14] != DBNull.Value)
// {
// if ((LoggedInRole == Roles.Admin && isAdminEntry) || (LoggedInRole != Roles.Admin))
// {
// var idFirmaBesucher = dt.Rows[0].ItemArray[14];
// var firma = dt.Rows[0].ItemArray[2];
// var name = dt.Rows[0].ItemArray[8].ToString().Split('/')[0];
// var anzPers = dt.Rows[0].ItemArray[6].ToString();
// var begleit = int.Parse(anzPers) == 1 ? "Begleitperson" : "Begleitpersonen";
// new ToastContentBuilder()
// .AddAppLogoOverride(new Uri(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\ZKuP.png"), ToastGenericAppLogoCrop.Circle)
// .AddText($"Firma {firma}")
// .AddText($"{name} ist mit")
// .AddText($"{anzPers} {begleit} angekommen")
// .SetToastDuration(ToastDuration.Long)
// .Show(t => t.ExpirationTime = DateTime.Now.AddHours(2));
// }
// }
// }// 2 = Besucher
// else if (int.Parse(dt.Rows[0].ItemArray[1].ToString()) == 2)
// {
// if (dt.Rows[0].ItemArray[14] != DBNull.Value)
// {
// if ((LoggedInRole == Roles.Admin && isAdminEntry) || (LoggedInRole != Roles.Admin))
// {
// var firma = dt.Rows[0].ItemArray[2];
// var name = dt.Rows[0].ItemArray[8].ToString().Split('/')[0];
// var anzPers = dt.Rows[0].ItemArray[6].ToString();
// var begleit = int.Parse(anzPers) == 1 ? "Begleitperson" : "Begleitpersonen";
// new ToastContentBuilder()
// .AddAppLogoOverride(new Uri(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\ZKuP.png"), ToastGenericAppLogoCrop.Circle)
// .AddText($"Besucher {name}")
// .AddText($"mit {anzPers} {begleit}")
// .AddText($"angekommen")
// .SetToastDuration(ToastDuration.Long)
// .Show(t => t.ExpirationTime = DateTime.Now.AddHours(2));
// }
// }
// }
// }
// }
// catch (Exception ex)
// {
// Log.WriteLog(ex.Message);
// }
//}
}
}

75
ZKuP/Notifications.xaml Normal file
View File

@ -0,0 +1,75 @@
<mah:MetroWindow x:Class="ZKuP.Notifications"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ZKuP"
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
mc:Ignorable="d"
Title="Notifications" Height="380" Width="430" MinHeight="420" MinWidth="430" MaxWidth="430" >
<Window.Resources>
<ResourceDictionary>
<local:IntToYesNo x:Key="IntToBool"></local:IntToYesNo>
</ResourceDictionary>
</Window.Resources>
<Grid>
<StackPanel Margin="10,20,10,10">
<TextBlock Text="Kategorie wählen:" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<ComboBox x:Name="cbCategory" Height="30" Margin="0,5,0,0" VerticalAlignment="Top" SelectionChanged="cbCategory_SelectionChanged">
<ComboBoxItem Content=""/>
<ComboBoxItem Content="Firma"/>
<ComboBoxItem Content="Besucher"/>
<ComboBoxItem Content="Lieferant"/>
<ComboBoxItem Content="DB Notdienst"/>
</ComboBox>
</StackPanel>
<StackPanel Margin="10,80,10,10">
<TextBlock x:Name="tbChoose" Text="" Foreground="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
<ComboBox x:Name="cBVisitor" Margin="0,5,0,0" Height="30" VerticalAlignment="Top" IsEnabled="False" SelectionChanged="cBVisitor_SelectionChanged"/>
</StackPanel>
<StackPanel Orientation="Vertical" VerticalAlignment="Top" Margin="10,150,5,0">
<!--<CheckBox x:Name="cbWin" Margin="10,5,0,10" Content="Windows-Notification" IsEnabled="False" Checked="cbWin_Checked" Unchecked="cbWin_Unchecked"/>-->
<DockPanel Margin="5,0,10,5">
<TextBlock x:Name="lblSMS" Margin="5" Text="Handynr.:" IsEnabled="False"/>
<TextBox x:Name="tbSMS" HorizontalAlignment="Right" Width="250" IsEnabled="True"/>
</DockPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,5,0,0">
<TextBlock Text="Bei jeder Einfahrt benachrichtigen?"/>
<RadioButton x:Name="rbRepeatYes" Content="Ja" GroupName="rbRepeat" Margin="20,0"/>
<RadioButton Content="Nein" IsChecked="True" GroupName="rbRepeat" Margin="20,0"/>
</StackPanel>
<DataGrid x:Name="dgNotifications" AutoGenerateColumns="False" MinHeight="100" Margin="0,10,0,0" ToolTip="Markieren und mit 'ENTF' entfernen" PreviewKeyDown="dgNotifications_PreviewKeyDown">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding id_notification}" Width="0" CanUserResize="False" Visibility="Hidden"/>
<DataGridTextColumn Header="Besucher" Binding="{Binding Visitor}"/>
<DataGridTextColumn Header="Handynr." Binding="{Binding SMS}"/>
<DataGridTextColumn Header="SMS gesendet" Binding="{Binding SMSSent, Converter={StaticResource IntToBool}}">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="TextAlignment" Value="Center" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="SMS wiederholen" Binding="{Binding SMSRepeat, Converter={StaticResource IntToBool}}">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Setter Property="TextAlignment" Value="Center" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</StackPanel>
<StackPanel Orientation="Vertical" VerticalAlignment="Bottom">
<Button x:Name="btnAddNotification" Content="Hinzufügen" Margin="5" Height="30" VerticalAlignment="Bottom" Click="btnAddNotification_Click"/>
<Button x:Name="btnSave" Content="Schließen" Height="30" Margin="5" VerticalAlignment="Bottom" Click="btnSave_Click"/>
</StackPanel>
</Grid>
</mah:MetroWindow>

121
ZKuP/Notifications.xaml.cs Normal file
View File

@ -0,0 +1,121 @@
using MahApps.Metro.Controls;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace ZKuP
{
/// <summary>
/// Interaktionslogik für Notifications.xaml
/// </summary>
public partial class Notifications : MetroWindow
{
DataTable dt = new DataTable();
public Notifications()
{
InitializeComponent();
QueryList();
}
private void QueryList()
{
dt = SQL.ReadSQL($"SELECT Visitor, SMS, SMSSent, SMSRepeat, id_notification FROM zkup.notification WHERE `Username` = '{Environment.UserName}'", dt).Result;
dgNotifications.ItemsSource = dt.DefaultView;
}
private void cbCategory_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string query = "";
switch ((sender as ComboBox).SelectedIndex)
{
case 1:
query = "SELECT DISTINCT Name FROM zkup.firmen ORDER BY Name";
break;
case 2:
query = "SELECT DISTINCT Name FROM zkup.besucher ORDER BY Name";
break;
case 3:
query = "SELECT DISTINCT Firma FROM zkup.lieferanten ORDER BY Firma";
break;
case 4:
query = "SELECT DISTINCT Firma FROM zkup.lieferanten WHERE Firma LIKE 'DB%'\" ORDER BY Firma";
break;
}
var res = SQL.ReadListString(query).Result;
res.Insert(0, "");
cBVisitor.ItemsSource = res;
cBVisitor.IsEnabled = true;
}
private void cBVisitor_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
//if ((sender as ComboBox).SelectedIndex != 0 && (sender as ComboBox).SelectedIndex != -1)
// cbSMS.IsEnabled = true;
//else
// cbSMS.IsEnabled = false;
}
private void cbSMS_Checked(object sender, RoutedEventArgs e)
{
//tbSMS.IsEnabled = true;
}
private void cbWin_Checked(object sender, RoutedEventArgs e)
{
}
private void cbSMS_Unchecked(object sender, RoutedEventArgs e)
{
//tbSMS.IsEnabled = false;
}
private void cbWin_Unchecked(object sender, RoutedEventArgs e)
{
}
private void btnAddNotification_Click(object sender, RoutedEventArgs e)
{
IntToBool iTb = new IntToBool();
SQL.WriteSQL($"INSERT INTO zkup.notification (Username, Visitor, SMS, SMSRepeat) VALUES ('{Environment.UserName}', '{cBVisitor.SelectedValue.ToString()}', '{tbSMS.Text}', '{iTb.ConvertBack(rbRepeatYes.IsChecked.Value, typeof(int), null, null)}')");
QueryList();
}
private void dgNotifications_PreviewKeyDown(object sender, KeyEventArgs e)
{
if(e.Key == Key.Delete)
{
SQL.WriteSQL($"DELETE FROM zkup.notification WHERE id_notification = {(dgNotifications.SelectedItem as DataRowView).Row.ItemArray[4]}");
QueryList();
}
}
private void btnSave_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
}
}

View File

@ -13,10 +13,11 @@
<DataGridTextColumn Binding="{Binding MA_Vorname}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Vorname" IsReadOnly="True" Width="*"/>
<DataGridTextColumn Binding="{Binding MA_Name}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Nachname" IsReadOnly="True" Width="*"/>
<DataGridTextColumn Binding="{Binding Firma}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Firma" IsReadOnly="True" Width="130"/>
<DataGridTextColumn Binding="{Binding Kennzeichen}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Kennzeichen" IsReadOnly="True" Width="80">
<DataGridTextColumn Binding="{Binding Kennzeichen}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Kennzeichen" IsReadOnly="True" Width="110">
<DataGridTextColumn.CellStyle>
<Style>
<Setter Property="TextBlock.TextAlignment" Value="Center"/>
<Setter Property="TextBlock.VerticalAlignment" Value="Center"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>

View File

@ -19,7 +19,7 @@ namespace ZKuP.Properties {
// -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
// Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
// mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
@ -59,248 +59,5 @@ namespace ZKuP.Properties {
resourceCulture = value;
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Capture_Sigma
{
get
{
object obj = ResourceManager.GetObject("Capture_Sigma", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap LED_Green
{
get
{
object obj = ResourceManager.GetObject("LED_Green", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap LED_Green_Delta
{
get
{
object obj = ResourceManager.GetObject("LED_Green_Delta", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap LED_Green_Gamma
{
get
{
object obj = ResourceManager.GetObject("LED_Green_Gamma", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap LED_Yellow
{
get
{
object obj = ResourceManager.GetObject("LED_Yellow", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap LED_Yellow_Delta
{
get
{
object obj = ResourceManager.GetObject("LED_Yellow_Delta", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap LED_Yellow_Gamma
{
get
{
object obj = ResourceManager.GetObject("LED_Yellow_Gamma", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap OK_BW
{
get
{
object obj = ResourceManager.GetObject("OK_BW", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap OK_RGB
{
get
{
object obj = ResourceManager.GetObject("OK_RGB", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Pad_Alpha
{
get
{
object obj = ResourceManager.GetObject("Pad_Alpha", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Pad_Delta
{
get
{
object obj = ResourceManager.GetObject("Pad_Delta", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Pad_Gamma
{
get
{
object obj = ResourceManager.GetObject("Pad_Gamma", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Pad_Omega
{
get
{
object obj = ResourceManager.GetObject("Pad_Omega", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Pad_Sigma
{
get
{
object obj = ResourceManager.GetObject("Pad_Sigma", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Pad_Zeta
{
get
{
object obj = ResourceManager.GetObject("Pad_Zeta", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Scroll_RGB
{
get
{
object obj = ResourceManager.GetObject("Scroll_RGB", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Icon ähnlich wie (Symbol).
/// </summary>
internal static System.Drawing.Icon STPadLibNet_Demo_App
{
get
{
object obj = ResourceManager.GetObject("STPadLibNet_Demo_App", resourceCulture);
return ((System.Drawing.Icon)(obj));
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Welcome
{
get
{
object obj = ResourceManager.GetObject("Welcome", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Cancel_BW
{
get
{
object obj = ResourceManager.GetObject("Cancel_BW", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap Cancel_RGB
{
get
{
object obj = ResourceManager.GetObject("Cancel_RGB", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}

View File

@ -12,7 +12,7 @@ namespace ZKuP.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.6.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.3.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@ -118,5 +118,41 @@ namespace ZKuP.Properties {
this["gridTodayHeight"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool DarkMode {
get {
return ((bool)(this["DarkMode"]));
}
set {
this["DarkMode"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Blue")]
public string Accent {
get {
return ((string)(this["Accent"]));
}
set {
this["Accent"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool ShowParkcardPrint {
get {
return ((bool)(this["ShowParkcardPrint"]));
}
set {
this["ShowParkcardPrint"] = value;
}
}
}
}

View File

@ -26,5 +26,14 @@
<Setting Name="gridTodayHeight" Type="System.Windows.GridLength" Scope="User">
<Value Profile="(Default)">100</Value>
</Setting>
<Setting Name="DarkMode" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="Accent" Type="System.String" Scope="User">
<Value Profile="(Default)">Blue</Value>
</Setting>
<Setting Name="ShowParkcardPrint" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
</Settings>
</SettingsFile>

BIN
ZKuP/Resources/Moon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
ZKuP/Resources/Sun.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
ZKuP/Resources/mcfit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
ZKuP/Resources/skull.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@ -3,6 +3,7 @@ using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
@ -12,17 +13,19 @@ namespace ZKuP
{
public static class SQL
{
static string connstr = "Server=10.20.98.34;Uid=ZK;Pwd=ZKUser#2001;database=zkup";
static MySqlConnection conn = new MySqlConnection(connstr);
private static string p = "fNZG8bO+b8lbajxNUCPCIRNBap4/T5N5Qoa0Rec3P9b2EiwC5eNIwfEMjR5Fvc/W";
private static string s = "KYgjkRVn0edFDca2GbZq/A==";
private static string u = "F/u2njMf6aE4krZGTjzgZw==";
private static string d = "xWb4X9gPEzwe76zqpysF3w==";
static MySqlConnection conn = new MySqlConnection(GetConnstr());
static MySqlDataAdapter adp = new MySqlDataAdapter();
public static bool CheckDeviceConnection(string ip)
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(ip);
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)
{
@ -47,6 +50,18 @@ namespace ZKuP
}
private static string GetIP()
{
return Crypto.Decrypt(Crypto.GetHashKey("866D137B10C95A4E8D5091B0CC0EFB8F"), s);
}
internal static string GetConnstr()
{
return $"Server={GetIP()};" +
$"Uid={Crypto.Decrypt(Crypto.GetHashKey("990C535389C3A18FFD44951DAA291161"), u)};" +
$"Pwd={Crypto.Decrypt(Crypto.GetHashKey("71A209CC81FDB2F458C4EC8DF7090154"), p)};" +
$"database={Crypto.Decrypt(Crypto.GetHashKey("8EB0CC56E502BFC5C19F6A0A0A53D543"), d)}";
}
public static MySqlDataAdapter GetAdapter()
{
return adp;
@ -59,7 +74,7 @@ namespace ZKuP
public static bool TestConnection()
{
if (!CheckDeviceConnection("10.20.98.34")) return false;
if (!CheckDeviceConnection()) return false;
using (conn)
{
@ -78,7 +93,6 @@ namespace ZKuP
}
}
}
public static async Task<DataTable> WriteSQL(string SQLQuery, DataTable list)
{
var filter = list.DefaultView.RowFilter;
@ -87,14 +101,17 @@ namespace ZKuP
{
using (conn)
{
if (conn.State == ConnectionState.Open) conn.Close();
using (adp)
{
if (conn.State == ConnectionState.Open) conn.Close();
conn.Open();
adp.UpdateCommand = new MySqlCommand(SQLQuery, conn);
conn.Open();
adp.UpdateCommand = new MySqlCommand(SQLQuery, conn);
adp.Update(list);
adp.Update(list);
list.AcceptChanges();
list.AcceptChanges();
}
conn.Close();
}
@ -120,7 +137,10 @@ namespace ZKuP
conn.Open();
MySqlCommand cmd = new MySqlCommand(SQLQuery, conn);
cmd.ExecuteNonQuery();
using (cmd)
{
cmd.ExecuteNonQuery();
}
conn.Close();
}
}
@ -141,9 +161,12 @@ namespace ZKuP
conn.Open();
MySqlCommand cmd = new MySqlCommand(SQLQuery, conn);
cmd.Parameters.Add("@signature", MySqlDbType.LongBlob).Value = data;
cmd.ExecuteNonQuery();
conn.Close();
using (cmd)
{
cmd.Parameters.Add("@signature", MySqlDbType.LongBlob).Value = data;
cmd.ExecuteNonQuery();
conn.Close();
}
}
}
catch (Exception ex)
@ -151,6 +174,36 @@ namespace ZKuP
Log.WriteLog(ex.ToString());
}
}
public static async Task WriteSQL(MySqlCommand mySqlCommand)
{
try
{
using (conn)
{
if (conn.State == ConnectionState.Open) conn.Close();
conn.Open();
mySqlCommand.Connection = conn;
var cmd = mySqlCommand;
using (cmd)
{
cmd.ExecuteNonQuery();
}
conn.Close();
}
}
#pragma warning disable CS0168 // Variable ist deklariert, wird jedoch niemals verwendet
catch (Exception ex)
#pragma warning restore CS0168 // Variable ist deklariert, wird jedoch niemals verwendet
{
#if DEBUG
throw;
#else
Log.WriteLog(ex.ToString());
#endif
}
}
@ -161,14 +214,17 @@ namespace ZKuP
{
using (conn)
{
if (conn.State == ConnectionState.Open) conn.Close();
using (adp)
{
if (conn.State == ConnectionState.Open) conn.Close();
conn.Open();
adp.SelectCommand = new MySqlCommand(SQLCommand, conn);
conn.Open();
adp.SelectCommand = new MySqlCommand(SQLCommand, conn);
list.Clear();
adp.Fill(list);
conn.Close();
list.Clear();
adp.Fill(list);
conn.Close();
}
}
list.DefaultView.RowFilter = filter;
@ -190,14 +246,17 @@ namespace ZKuP
{
using (conn)
{
if (conn.State == ConnectionState.Open) conn.Close();
using (adp)
{
if (conn.State == ConnectionState.Open) conn.Close();
conn.Open();
adp.SelectCommand = new MySqlCommand(SQLCommand, conn);
conn.Open();
adp.SelectCommand = new MySqlCommand(SQLCommand, conn);
list.Clear();
adp.Fill(list);
conn.Close();
list.Clear();
adp.Fill(list);
conn.Close();
}
}
}
catch (Exception ex)
@ -210,26 +269,6 @@ namespace ZKuP
}
public static async Task<string> ReadSingleValueAsync(string SQLCommand)
{
MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(SQLCommand, conn);
object queryResult;
using (conn)
{
if (conn.State == ConnectionState.Open) conn.Close();
conn.Open();
queryResult = cmd.ExecuteScalar();//Return an object so first check for null
}
if (queryResult != null)
return queryResult.ToString();
else
return "";
}
public static string ReadSingleValue(string SQLCommand)
{
MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(SQLCommand, conn);
@ -237,10 +276,39 @@ namespace ZKuP
using (conn)
{
if (conn.State == ConnectionState.Open) conn.Close();
using (cmd)
{
if (conn.State == ConnectionState.Open) conn.Close();
conn.Open();
queryResult = cmd.ExecuteScalar();//Return an object so first check for null
conn.Open();
queryResult = cmd.ExecuteScalar();//Return an object so first check for null
}
conn.Close();
}
if (queryResult != null)
return queryResult.ToString();
else
return "";
}
public async static Task<string> ReadSingleValueAsync(string SQLCommand)
{
object queryResult;
using (conn)
{
if (conn.State == ConnectionState.Open) conn.Close();
MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(SQLCommand, conn);
using (cmd)
{
conn.Open();
queryResult = await cmd.ExecuteScalarAsync();//Return an object so first check for null
}
conn.Close();
}
@ -259,24 +327,32 @@ namespace ZKuP
using (conn)
{
if (conn.State == ConnectionState.Open) conn.Close();
conn.Open();
MySql.Data.MySqlClient.MySqlDataReader myData = cmd.ExecuteReader();
while (myData.Read())
using (cmd)
{
if (myData[0] == DBNull.Value)
return null;
if (conn.State == ConnectionState.Open) conn.Close();
byte[] data = (byte[])myData[0]; // 0 is okay if you only selecting one column
//And use:
//using (System.IO.MemoryStream ms = new System.IO.MemoryStream(data))
//{
System.IO.MemoryStream ms = new System.IO.MemoryStream(data);
image = new System.Drawing.Bitmap(ms);
//}
}
conn.Open();
MySql.Data.MySqlClient.MySqlDataReader myData = cmd.ExecuteReader();
using (myData)
{
while (myData.Read())
{
if (myData[0] == DBNull.Value)
return null;
byte[] data = (byte[])myData[0]; // 0 is okay if you only selecting one column
//And use:
//using (System.IO.MemoryStream ms = new System.IO.MemoryStream(data))
//{
System.IO.MemoryStream ms = new System.IO.MemoryStream(data);
image = new System.Drawing.Bitmap(ms);
//}
}
}
conn.Close();
}
}
//if (rawData != null)
@ -298,9 +374,15 @@ namespace ZKuP
using (MySqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
using (cmd)
{
queryResult.Add(reader.GetString(ColumnID));
while (reader.Read())
{
if (!reader.IsDBNull(ColumnID))
queryResult.Add(reader.GetString(ColumnID));
else
queryResult.Add("");
}
}
}
@ -329,9 +411,12 @@ namespace ZKuP
using (MySqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
using (cmd)
{
queryResult.Add(reader.GetDateTime(ColumnID).ToString("yyyy-MM-dd HH:mm:ss") + ";" + reader.GetString(ColumnID + 1));
while (reader.Read())
{
queryResult.Add(reader.GetDateTime(ColumnID).ToString("yyyy-MM-dd HH:mm:ss") + ";" + reader.GetString(ColumnID + 1));
}
}
}
@ -361,9 +446,141 @@ namespace ZKuP
using (MySqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
using (cmd)
{
queryResult.Add(reader.GetString(ColumnID) + $"{Seperator}" + reader.GetString(ColumnID + 1));
while (reader.Read())
{
queryResult.Add(reader.GetString(ColumnID) + $"{Seperator}" + reader.GetString(ColumnID + 1));
}
}
}
conn.Close();
}
return queryResult;
}
/// <summary>
/// Read two Columns, separated by ';' or choose Seperator
/// </summary>
/// <param name="SQLCommand"></param>
/// <param name="Seperator"></param>
/// <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)
{
MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(SQLCommand, conn);
List<string> queryResult = new List<string>();
using (conn)
{
if (conn.State == ConnectionState.Open) conn.Close();
conn.Open();
using (MySqlDataReader reader = cmd.ExecuteReader())
{
using (cmd)
{
while (reader.Read())
{
switch(ColumnCount)
{
case 1:
queryResult.Add(reader.GetString(ColumnOne));
break;
case 2:
queryResult.Add(reader.GetString(ColumnOne) + $"{SeperatorOne}" + reader.GetString(ColumnTwo));
break;
case 3:
queryResult.Add(reader.GetString(ColumnOne) + $"{SeperatorOne}" + reader.GetString(ColumnTwo) + $"{SeperatorTwo}" + reader.GetString(ColumnThree));
break;
case 4:
queryResult.Add(reader.GetString(ColumnOne) + $"{SeperatorOne}" + reader.GetString(ColumnTwo) + $"{SeperatorTwo}" + reader.GetString(ColumnThree) + $"{SeperatorThree}" + reader.GetString(ColumnFour));
break;
case 5:
queryResult.Add(reader.GetString(ColumnOne) + $"{SeperatorOne}" + reader.GetString(ColumnTwo) + $"{SeperatorTwo}" + reader.GetString(ColumnThree) + $"{SeperatorThree}" + reader.GetString(ColumnFour) + $"{SeperatorFour}" + reader.GetString(ColumnFive));
break;
case 6:
queryResult.Add(reader.GetString(ColumnOne) + $"{SeperatorOne}" + reader.GetString(ColumnTwo) + $"{SeperatorTwo}" + reader.GetString(ColumnThree) + $"{SeperatorThree}" + reader.GetString(ColumnFour) + $"{SeperatorFour}" + reader.GetString(ColumnFive) + $"{SeperatorFive}" + reader.GetString(ColumnSix));
break;
default:
queryResult.Add(reader.GetString(ColumnOne));
break;
}
}
}
}
conn.Close();
}
return queryResult;
}
public static async Task<Dictionary<int, string>> ReadDictionary(string SQLCommand, int FirstColumn, int SecondColumn)
{
MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(SQLCommand, conn);
Dictionary<int, string> queryResult = new Dictionary<int, string>();
using (conn)
{
if (conn.State == ConnectionState.Open) conn.Close();
conn.Open();
using (MySqlDataReader reader = cmd.ExecuteReader())
{
using (cmd)
{
while (reader.Read())
{
if (FirstColumn == 0 && SecondColumn == 0)
{
if (!queryResult.ContainsKey(0))
queryResult.Add(0, reader.GetString(SecondColumn));
}
else
{
var x = reader.GetInt32(FirstColumn);
if (!queryResult.ContainsKey(x))
queryResult.Add(x, reader.GetString(SecondColumn));
}
}
}
}
conn.Close();
}
return queryResult;
}
public static async Task<Dictionary<string, string>> ReadDictionary2(string SQLCommand, int FirstColumn, int SecondColumn)
{
MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand(SQLCommand, conn);
Dictionary<string, string> queryResult = new Dictionary<string, string>();
using (conn)
{
if (conn.State == ConnectionState.Open) conn.Close();
conn.Open();
using (MySqlDataReader reader = cmd.ExecuteReader())
{
using (cmd)
{
while (reader.Read())
{
queryResult.Add(reader.GetString(FirstColumn), reader.GetString(SecondColumn));
}
}
}
@ -382,10 +599,14 @@ namespace ZKuP
using (conn)
{
if (conn.State == ConnectionState.Open) conn.Close();
using (cmd)
{
if (conn.State == ConnectionState.Open) conn.Close();
conn.Open();
queryResult = cmd.ExecuteScalar();//Return an object so first check for null
conn.Open();
queryResult = cmd.ExecuteScalar();//Return an object so first check for null
}
conn.Close();
}
if (queryResult != null)
@ -398,6 +619,28 @@ namespace ZKuP
else return false;
}
public static string MySQLCommandToString(MySqlCommand mySqlCommand)
{
string cmdText = mySqlCommand.CommandText;
foreach (MySqlParameter p in mySqlCommand.Parameters)
{
var repl = p.Value != null ? p.Value.ToString() : "";
cmdText = cmdText.Replace($"@{p.ParameterName},", $"'{repl}',");
cmdText = cmdText.Replace($"@{p.ParameterName} ", $"'{repl}' ");
if (cmdText.EndsWith($"@{p.ParameterName}"))
cmdText = cmdText.Replace($"@{p.ParameterName}", $"'{repl}'");
}
return cmdText;
}
//public static async Task<DataTable> ReadAllData(DataTable list)
//{
// var filter = list.DefaultView.RowFilter;

32
ZKuP/SetHinweis.xaml Normal file
View File

@ -0,0 +1,32 @@
<Window x:Class="ZKuP.SetHinweis"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ZKuP"
mc:Ignorable="d"
Title="Hinweis ändern" Height="177" Width="340" ResizeMode="NoResize">
<Window.Resources>
<local:SystemIconConverter x:Key="SystemIcon"></local:SystemIconConverter>
</Window.Resources>
<Grid>
<Border x:Name="canvasHinweis" CornerRadius="8" Visibility="Visible" BorderBrush="LightGray" BorderThickness="1" Width="300" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="11,10,0,0">
<Grid>
<Image Visibility="Visible"
Margin="10,22,0,0"
Stretch="Uniform"
MaxHeight="30"
VerticalAlignment="Top"
HorizontalAlignment="Left"
Source="{Binding Converter={StaticResource SystemIcon}, ConverterParameter=Warning}" Width="30" Height="30"/>
<TextBox x:Name="lblHinweis" Background="{x:Null}" TextWrapping="Wrap" TextAlignment="Center" VerticalContentAlignment="Center" Padding="55,5,10,5" HorizontalAlignment="Right" VerticalAlignment="Top" Width="300" Height="80" MaxLines="4" BorderBrush="{x:Null}" AcceptsReturn="True" PreviewKeyDown="lblHinweis_PreviewKeyDown" />
<!--Background="#32FF5D00"-->
</Grid>
</Border>
<Button x:Name="btnSetHinweis" Content="Hinweis setzen" FontSize="12" Padding="-2" Height="25" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,106,0,0" Width="180" Click="btnSetHinweis_Click"/>
<Button x:Name="btnDeleteHinweis" Content="Hinweis löschen" FontSize="12" Padding="-2" Height="25" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,106,12,0" Width="105" Click="btnDeleteHinweis_Click"/>
</Grid>
</Window>

50
ZKuP/SetHinweis.xaml.cs Normal file
View File

@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace ZKuP
{
/// <summary>
/// Interaktionslogik für SetHinweis.xaml
/// </summary>
public partial class SetHinweis : Window
{
public string Text { get; set; }
public SetHinweis()
{
InitializeComponent();
Text = SQL.ReadSingleValue("SELECT Hinweis FROM zkup.misc");
lblHinweis.Text = Text;
}
private async void btnSetHinweis_Click(object sender, RoutedEventArgs e)
{
await SQL.WriteSQL($"REPLACE INTO zkup.misc VALUES (1,'{lblHinweis.Text}','{Environment.UserName}')");
this.Close();
}
private async void btnDeleteHinweis_Click(object sender, RoutedEventArgs e)
{
await SQL.WriteSQL($"REPLACE INTO zkup.misc VALUES (1,'','{Environment.UserName}')");
this.Close();
}
private void lblHinweis_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter && lblHinweis.LineCount >= 4)
e.Handled = true;
}
}
}

View File

@ -11,8 +11,42 @@
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Button x:Name="btnCancel" Content="Abbrechen" Margin="10,10,10,0" VerticalAlignment="Top" Click="btnCancel_Click"/>
<Button x:Name="btnConfirm" Content="Bestätigen" Grid.Column="1" Margin="10,10,10,0" VerticalAlignment="Top" Click="btnConfirm_Click"/>
<Button x:Name="btnCancel" Content="Abbrechen" Margin="10,10,10,0" VerticalAlignment="Top" Click="btnCancel_Click" Height="25"/>
<Button x:Name="btnConfirm" Content="Bestätigen" FontSize="12" Padding="-2" Grid.Column="1" Margin="10,10,10,0" VerticalAlignment="Top" Click="btnConfirm_Click" IsEnabled="False" ToolTip="Unterschrift wurde auf Pad noch nicht bestätigt" Height="25">
<Button.Template>
<ControlTemplate TargetType="{x:Type ButtonBase}">
<Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" 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"/>
<Setter Property="ToolTip" Value="Unterschrift wurde auf Pad noch nicht bestätigt"/>
</Trigger>
<Trigger Property="IsEnabled" Value="True">
<Setter Property="ToolTip" Value="Unterschrift bestätigen und speichern"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
</Button>
<WindowsFormsHost HorizontalAlignment="Stretch" Margin="10,44,10,10" Name="STPadLibControlHost" Width="Auto" Grid.ColumnSpan="2" />

View File

@ -23,16 +23,21 @@ namespace ZKuP
public System.Drawing.Bitmap Result { get; set; }
public byte[] ResultByte { get; set; }
//private STPadLibControl _stPad = new STPadLibControl();
System.Windows.Threading.DispatcherTimer confirmedTimer = new System.Windows.Threading.DispatcherTimer();
public Signature(string Name = "", string Firma = "", string Kennzeichen = "", bool showDisclaimer = true)
public Signature(DisclaimerType type, string Name = "", string Firma_Abteilung = "", string Kennzeichen_Handynr = "", bool showDisclaimer = true)
{
InitializeComponent();
confirmedTimer.Interval = TimeSpan.FromMilliseconds(200);
confirmedTimer.Tick += ConfirmedTimer_Tick;
try
{
var dev = 1;
if (signoPad._stPad.DeviceGetCount() <= 0)
{
this.Close();
MessageBox.Show("Kein Unterschriftenpad gefunden\nMeldung 0x04", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
return;
}
@ -40,7 +45,22 @@ namespace ZKuP
STPadLibControlHost.Child = signoPad._stPad;
signoPad._stPad.ControlMirrorDisplay = MirrorMode.Signature;
signoPad.ShowDisclaimer(Name, Firma, Kennzeichen, showDisclaimer);
//Add return Value to Bestätigen Button
switch (type)
{
case DisclaimerType.Parken:
signoPad.ShowDisclaimerParken(Name, Firma_Abteilung, Kennzeichen_Handynr, showDisclaimer);
break;
case DisclaimerType.McFit:
signoPad.ShowDisclaimerMcFit(Name, Firma_Abteilung, Kennzeichen_Handynr, showDisclaimer);
break;
default:
signoPad.ShowDisclaimerParken(Name, Firma_Abteilung, Kennzeichen_Handynr, showDisclaimer);
break;
}
confirmedTimer.Start();
}
catch (Exception ex)
{
@ -49,12 +69,20 @@ namespace ZKuP
}
}
private void ConfirmedTimer_Tick(object sender, EventArgs e)
{
if (signoPad.SignatureConfirmed)
{
btnConfirm.IsEnabled = true;
confirmedTimer.Stop();
}
}
private void btnConfirm_Click(object sender, RoutedEventArgs e)
{
System.Drawing.Imaging.ImageFormat format;
SignatureImageFlag options = SignatureImageFlag.None;
format = System.Drawing.Imaging.ImageFormat.Tiff;
System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Tiff;
SignatureImageFlag options = signotec.STPadLibNet.SignatureImageFlag.Timestamp | signotec.STPadLibNet.SignatureImageFlag.TimestampRelToImage | signotec.STPadLibNet.SignatureImageFlag.DontSmooth;;
int resolution = 300;
int width = 0;
@ -62,20 +90,27 @@ namespace ZKuP
int penWidth = 0;
System.Drawing.Color penColor = System.Drawing.Color.FromArgb(255,0,0,0);
options = signotec.STPadLibNet.SignatureImageFlag.Timestamp | signotec.STPadLibNet.SignatureImageFlag.TimestampRelToImage | signotec.STPadLibNet.SignatureImageFlag.DontSmooth;
try
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures) + "\\temp.tif";
// save as file
//Result = signoPad._stPad.SignatureSaveAsStreamEx(resolution, width, height, penWidth, penColor, options);
signoPad._stPad.SignatureSaveAsFileEx(path, resolution, width, height, System.Drawing.Imaging.ImageFormat.Tiff, penWidth,penColor, options);
ResultByte = DBImageManager.ImageFromFileToByte(path);
MessageBox.Show(this, "Unterschrift erfolgreich gespeichert", "Gespeichert", MessageBoxButton.OK, MessageBoxImage.Information);
//Result = signoPad._stPad.SignatureSaveAsStreamEx(resolution, width, height, penWidth, penColor, options);
//signoPad.CloseConnection();
this.Close();
//if (signoPad._stPad.SignatureState == true)
//{
signoPad._stPad.SignatureSaveAsFileEx(path, resolution, width, height, System.Drawing.Imaging.ImageFormat.Tiff, penWidth, penColor, options);
ResultByte = DBImageManager.ImageFromFileToByte(path);
MessageBox.Show(this, "Unterschrift erfolgreich gespeichert", "Gespeichert", MessageBoxButton.OK, MessageBoxImage.Information);
//signoPad.CloseConnection();
this.Close();
//}
//else
//{
// MessageBox.Show($"Unterschriftenerfassung wurde noch nicht gestartet\nErfassung über Pad starten oder mit \"Abbrechen\" das Fenster schließen");
//}
}
catch (STPadException exc)
{
@ -102,7 +137,7 @@ namespace ZKuP
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
signoPad.CloseConnection();
signoPad.CloseConnection();
}
private void btnCancel_Click(object sender, RoutedEventArgs e)
@ -110,5 +145,12 @@ namespace ZKuP
//signoPad.CloseConnection();
this.Close();
}
public enum DisclaimerType
{
Parken,
McFit
}
}
}

15
ZKuP/XMessageBox.xaml Normal file
View File

@ -0,0 +1,15 @@
<Window x:Class="ZKuP.XMessageBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ZKuP"
mc:Ignorable="d"
Title="XMessageBox" Height="195" Width="390" ResizeMode="NoResize" ShowInTaskbar="False" WindowStartupLocation="CenterScreen" Closed="Window_Closed">
<Grid>
<Button x:Name="btnBox" Content="OK" Margin="0,0,10,10" HorizontalAlignment="Right" Width="94" Height="29" VerticalAlignment="Bottom"/>
<TextBlock x:Name="Message" Margin="90,10,10,35" TextWrapping="Wrap" Text="TextBlock" TextAlignment="Left" VerticalAlignment="Center"/>
<Image x:Name="Image" HorizontalAlignment="Left" Height="44" Margin="26,34,0,88" VerticalAlignment="Center" Width="44"/>
</Grid>
</Window>

73
ZKuP/XMessageBox.xaml.cs Normal file
View File

@ -0,0 +1,73 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace ZKuP
{
/// <summary>
/// Interaktionslogik für XMessageBox.xaml
/// </summary>
public partial class XMessageBox : Window
{
System.Windows.Threading.DispatcherTimer timer = new System.Windows.Threading.DispatcherTimer();
int timerCount = 0;
public XMessageBox(string Title, string Message, MessageBoxImage image)
{
InitializeComponent();
timer.Interval = TimeSpan.FromSeconds(1);
timer.Tick += Timer_Tick;
timer.Start();
this.Title = Title;
this.Message.Text = Message;
var selectedImage = System.Drawing.SystemIcons.Error;
switch (image)
{
case MessageBoxImage.Error:
selectedImage = System.Drawing.SystemIcons.Error;
break;
case MessageBoxImage.Information:
selectedImage = System.Drawing.SystemIcons.Information;
break;
case MessageBoxImage.Question:
selectedImage = System.Drawing.SystemIcons.Question;
break;
case MessageBoxImage.Warning:
selectedImage = System.Drawing.SystemIcons.Warning;
break;
default:
selectedImage = System.Drawing.SystemIcons.Error;
break;
}
this.Image.Source = Helper.ConvertBitmapToImage(selectedImage.ToBitmap());
}
private void Timer_Tick(object sender, EventArgs e)
{
timerCount += 1;
btnBox.Content = $"OK - {(10 - timerCount).ToString()}";
if (timerCount >= 10)
Application.Current.Shutdown();
}
private void Window_Closed(object sender, EventArgs e)
{
Application.Current.Shutdown();
}
}
}

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\Costura.Fody.4.1.0\build\Costura.Fody.props" Condition="Exists('..\packages\Costura.Fody.4.1.0\build\Costura.Fody.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@ -9,7 +8,7 @@
<OutputType>WinExe</OutputType>
<RootNamespace>ZKuP</RootNamespace>
<AssemblyName>ZKuP</AssemblyName>
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<WarningLevel>4</WarningLevel>
@ -126,56 +125,27 @@
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="BouncyCastle.Crypto, Version=1.8.3.0, Culture=neutral, PublicKeyToken=0e99375e54769942">
<HintPath>..\packages\BouncyCastle.1.8.3.1\lib\BouncyCastle.Crypto.dll</HintPath>
</Reference>
<Reference Include="Costura, Version=4.1.0.0, Culture=neutral, PublicKeyToken=9919ef960d84173d, processorArchitecture=MSIL">
<HintPath>..\packages\Costura.Fody.4.1.0\lib\net40\Costura.dll</HintPath>
</Reference>
<Reference Include="Google.Protobuf, Version=3.6.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
<HintPath>..\packages\Google.Protobuf.3.6.1\lib\net45\Google.Protobuf.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Office.Interop.Word, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Office.Interop.Word.15.0.4797.1003\lib\net20\Microsoft.Office.Interop.Word.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>
<Reference Include="MySql.Data, Version=8.0.18.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
<HintPath>..\packages\MySql.Data.8.0.18\lib\net452\MySql.Data.dll</HintPath>
</Reference>
<Reference Include="Renci.SshNet, Version=2016.1.0.0, Culture=neutral, PublicKeyToken=1cee9f8bde3db106, processorArchitecture=MSIL">
<HintPath>..\packages\SSH.NET.2016.1.0\lib\net40\Renci.SshNet.dll</HintPath>
</Reference>
<Reference Include="STPadLibNet">
<HintPath>..\..\..\..\..\..\Program Files\signotec\signoPAD-API\STPadLibNet\STPadLibNet.dll</HintPath>
<EmbedInteropTypes>False</EmbedInteropTypes>
<Private>True</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.4.0\lib\netstandard1.1\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel" />
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
<Reference Include="System.Configuration.Install" />
<Reference Include="System.Data" />
<Reference Include="System.Diagnostics.DiagnosticSource, Version=4.0.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.4.6.0\lib\net45\System.Diagnostics.DiagnosticSource.dll</HintPath>
</Reference>
<Reference Include="System.DirectoryServices.AccountManagement" />
<Reference Include="System.Drawing" />
<Reference Include="System.Drawing.Design" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.Management" />
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.3\lib\netstandard1.1\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.2\lib\netstandard1.0\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Transactions" />
<Reference Include="System.ValueTuple, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.ValueTuple.4.3.0\lib\netstandard1.0\System.ValueTuple.dll</HintPath>
</Reference>
<Reference Include="System.Web" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="Microsoft.CSharp" />
@ -208,28 +178,53 @@
<Compile Include="AspInfo.xaml.cs">
<DependentUpon>AspInfo.xaml</DependentUpon>
</Compile>
<Compile Include="BEImage.xaml.cs">
<DependentUpon>BEImage.xaml</DependentUpon>
</Compile>
<Compile Include="Belegung.xaml.cs">
<DependentUpon>Belegung.xaml</DependentUpon>
</Compile>
<Compile Include="Belegung2.xaml.cs">
<DependentUpon>Belegung2.xaml</DependentUpon>
</Compile>
<Compile Include="Cards.xaml.cs">
<DependentUpon>Cards.xaml</DependentUpon>
</Compile>
<Compile Include="CheckKennzeichen.xaml.cs">
<DependentUpon>CheckKennzeichen.xaml</DependentUpon>
</Compile>
<Compile Include="CheckParkausweis.xaml.cs">
<DependentUpon>CheckParkausweis.xaml</DependentUpon>
</Compile>
<Compile Include="CreateFirma.xaml.cs">
<DependentUpon>CreateFirma.xaml</DependentUpon>
</Compile>
<Compile Include="CreateMcFitUser.xaml.cs">
<DependentUpon>CreateMcFitUser.xaml</DependentUpon>
</Compile>
<Compile Include="CreateParkausweis.xaml.cs">
<DependentUpon>CreateParkausweis.xaml</DependentUpon>
</Compile>
<Compile Include="CreateParkEmailUser.xaml.cs">
<DependentUpon>CreateParkEmailUser.xaml</DependentUpon>
</Compile>
<Compile Include="CreateVisitor.xaml.cs">
<DependentUpon>CreateVisitor.xaml</DependentUpon>
</Compile>
<Compile Include="CreateVisitor_List.xaml.cs">
<DependentUpon>CreateVisitor_List.xaml</DependentUpon>
</Compile>
<Compile Include="Crypto.cs" />
<Compile Include="DBImageManager.cs" />
<Compile Include="Delivery.xaml.cs">
<DependentUpon>Delivery.xaml</DependentUpon>
</Compile>
<Compile Include="Family.xaml.cs">
<DependentUpon>Family.xaml</DependentUpon>
</Compile>
<Compile Include="FamilyBooking.xaml.cs">
<DependentUpon>FamilyBooking.xaml</DependentUpon>
</Compile>
<Compile Include="GrantParkausweis.xaml.cs">
<DependentUpon>GrantParkausweis.xaml</DependentUpon>
</Compile>
@ -253,17 +248,29 @@
<Compile Include="ManageUsers.xaml.cs">
<DependentUpon>ManageUsers.xaml</DependentUpon>
</Compile>
<Compile Include="Notifications.xaml.cs">
<DependentUpon>Notifications.xaml</DependentUpon>
</Compile>
<Compile Include="ParkausweisDisclaimer.xaml.cs">
<DependentUpon>ParkausweisDisclaimer.xaml</DependentUpon>
</Compile>
<Compile Include="PrintParkausweis.xaml.cs">
<DependentUpon>PrintParkausweis.xaml</DependentUpon>
</Compile>
<Compile Include="SetHinweis.xaml.cs">
<DependentUpon>SetHinweis.xaml</DependentUpon>
</Compile>
<Compile Include="Signature.xaml.cs">
<DependentUpon>Signature.xaml</DependentUpon>
</Compile>
<Compile Include="signoPad.cs" />
<Compile Include="SQL.cs" />
<Compile Include="ucSpinnerPiston.xaml.cs">
<DependentUpon>ucSpinnerPiston.xaml</DependentUpon>
</Compile>
<Compile Include="XMessageBox.xaml.cs">
<DependentUpon>XMessageBox.xaml</DependentUpon>
</Compile>
<Page Include="AddCardUser.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@ -280,10 +287,26 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="BEImage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Belegung.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Belegung2.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Cards.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="CheckKennzeichen.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="CheckParkausweis.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@ -292,10 +315,18 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="CreateMcFitUser.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="CreateParkausweis.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="CreateParkEmailUser.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="CreateVisitor.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@ -308,6 +339,14 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Family.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="FamilyBooking.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="GrantParkausweis.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@ -348,6 +387,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Notifications.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="ParkausweisDisclaimer.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@ -356,10 +399,22 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="SetHinweis.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Signature.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="ucSpinnerPiston.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="XMessageBox.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs">
@ -378,8 +433,8 @@
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<None Include="packages.config" />
<None Include="Properties\app.manifest" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
@ -419,6 +474,24 @@
<Resource Include="Resources\db-logo.png" />
</ItemGroup>
<ItemGroup>
<COMReference Include="Microsoft.Office.Core">
<Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
<VersionMajor>2</VersionMajor>
<VersionMinor>8</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
<COMReference Include="Microsoft.Office.Interop.Excel">
<Guid>{00020813-0000-0000-C000-000000000046}</Guid>
<VersionMajor>1</VersionMajor>
<VersionMinor>9</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
<EmbedInteropTypes>True</EmbedInteropTypes>
</COMReference>
<COMReference Include="VBIDE">
<Guid>{0002E157-0000-0000-C000-000000000046}</Guid>
<VersionMajor>5</VersionMajor>
@ -432,13 +505,164 @@
<ItemGroup>
<Resource Include="Resources\NoSignature.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Assets\BE1.JPG" />
<Resource Include="Assets\BE10.JPG" />
<Resource Include="Assets\BE2.JPG" />
<Resource Include="Assets\BE3.JPG" />
<Resource Include="Assets\BE4.JPG" />
<Resource Include="Assets\BE5.JPG" />
<Resource Include="Assets\BE6.JPG" />
<Resource Include="Assets\BE7.JPG" />
<Resource Include="Assets\BE8.JPG" />
<Resource Include="Assets\BE9.JPG" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\skull.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\Moon.png" />
<Resource Include="Resources\Sun.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\mcfit.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Assets\BE11.JPG" />
<Resource Include="Assets\BE12.JPG" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="BouncyCastle">
<Version>1.8.9</Version>
</PackageReference>
<PackageReference Include="Costura.Fody">
<Version>5.2.0</Version>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Google.Protobuf">
<Version>3.17.3</Version>
</PackageReference>
<PackageReference Include="K4os.Compression.LZ4.Streams">
<Version>1.2.6</Version>
</PackageReference>
<PackageReference Include="MahApps.Metro">
<Version>2.4.7</Version>
</PackageReference>
<PackageReference Include="Microsoft.NETCore.Platforms">
<Version>5.0.2</Version>
</PackageReference>
<PackageReference Include="Microsoft.Office.Interop.Word">
<Version>15.0.4797.1003</Version>
</PackageReference>
<PackageReference Include="Microsoft.Toolkit.Uwp.Notifications">
<Version>7.1.2</Version>
</PackageReference>
<PackageReference Include="MySql.Data">
<Version>8.0.25</Version>
</PackageReference>
<PackageReference Include="NETStandard.Library">
<Version>2.0.3</Version>
</PackageReference>
<PackageReference Include="SSH.NET">
<Version>2020.0.1</Version>
</PackageReference>
<PackageReference Include="System.Collections">
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="System.Collections.Concurrent">
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="System.Diagnostics.Debug">
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="System.Diagnostics.DiagnosticSource">
<Version>5.0.1</Version>
</PackageReference>
<PackageReference Include="System.Diagnostics.Tools">
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="System.Diagnostics.Tracing">
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="System.Globalization">
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="System.IO">
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="System.IO.Compression">
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="System.Linq">
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="System.Linq.Expressions">
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="System.Net.Http">
<Version>4.3.4</Version>
</PackageReference>
<PackageReference Include="System.Net.Primitives">
<Version>4.3.1</Version>
</PackageReference>
<PackageReference Include="System.ObjectModel">
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="System.Reflection">
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="System.Reflection.Extensions">
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="System.Reflection.Primitives">
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="System.Resources.ResourceManager">
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="System.Runtime">
<Version>4.3.1</Version>
</PackageReference>
<PackageReference Include="System.Runtime.Extensions">
<Version>4.3.1</Version>
</PackageReference>
<PackageReference Include="System.Runtime.InteropServices">
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="System.Runtime.Numerics">
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="System.Text.Encoding">
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="System.Text.Encoding.Extensions">
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="System.Text.RegularExpressions">
<Version>4.3.1</Version>
</PackageReference>
<PackageReference Include="System.Threading">
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="System.Threading.Tasks">
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="System.Threading.Timer">
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="System.ValueTuple">
<Version>4.5.0</Version>
</PackageReference>
<PackageReference Include="System.Xml.ReaderWriter">
<Version>4.3.1</Version>
</PackageReference>
<PackageReference Include="System.Xml.XDocument">
<Version>4.3.0</Version>
</PackageReference>
<PackageReference Include="WpfScreenHelper">
<Version>1.1.0</Version>
</PackageReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\Fody.6.0.0\build\Fody.targets" Condition="Exists('..\packages\Fody.6.0.0\build\Fody.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}".</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Fody.6.0.0\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.6.0.0\build\Fody.targets'))" />
<Error Condition="!Exists('..\packages\Costura.Fody.4.1.0\build\Costura.Fody.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.4.1.0\build\Costura.Fody.props'))" />
</Target>
</Project>

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="BouncyCastle" version="1.8.3.1" targetFramework="net452" />
<package id="Costura.Fody" version="4.1.0" targetFramework="net452" />
<package id="Fody" version="6.0.0" targetFramework="net452" developmentDependency="true" />
<package id="Google.Protobuf" version="3.6.1" targetFramework="net452" />
<package id="Microsoft.Office.Interop.Word" version="15.0.4797.1003" targetFramework="net452" />
<package id="MySql.Data" version="8.0.18" targetFramework="net452" />
<package id="SSH.NET" version="2016.1.0" targetFramework="net452" />
<package id="System.Buffers" version="4.4.0" targetFramework="net452" />
<package id="System.Diagnostics.DiagnosticSource" version="4.6.0" targetFramework="net452" />
<package id="System.Memory" version="4.5.3" targetFramework="net452" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.2" targetFramework="net452" />
<package id="System.ValueTuple" version="4.3.0" targetFramework="net452" />
</packages>

View File

@ -31,6 +31,14 @@ namespace ZKuP
set { sTPad = value; }
}
private static bool _signatureConfirmed = false;
public static bool SignatureConfirmed
{
get { return _signatureConfirmed; }
set { _signatureConfirmed = value; }
}
private static SignPad[] _signPads = null;
private static DisplayTarget _storeIdSigning = DisplayTarget.NewStandardStore;
@ -43,8 +51,10 @@ namespace ZKuP
static string _disclaimer = "";
private static void GetDevices()
private static bool GetDevices()
{
bool isDeviceAvailable = false;
try
{
//sTPad = new STPadLibControl();
@ -58,24 +68,8 @@ namespace ZKuP
if (deviceCount <= 0)
{ // no devices detected
_signPads = null;
System.Windows.MessageBox.Show("Kein Unterschriftenpad gefunden!", "Fehler", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Error);
//ListOfDevices.Items.Add("No Devices");
//ListOfDevices.Items.Add("detected");
//ListOfDevices.IsEnabled = false;
//ButtonOpenClose.Content = "Open";
//ButtonOpenClose.IsEnabled = false;
//ButtonStartCancel.IsEnabled = false;
//ButtonRetry.IsEnabled = false;
//ButtonConfirm.IsEnabled = false;
//ImagePad.Source = GetBitmapFromResource(STPadLibNet_Demo_App.Properties.Resources.Welcome, System.Drawing.Imaging.ImageFormat.Png);
//ImagePad.Visibility = Visibility.Visible;
//ImageLed.Visibility = Visibility.Hidden;
//STPadLibControlHost.Visibility = Visibility.Hidden;
//LabelType.Content = "Type: -";
//LabelPort.Content = "Port: -";
//LabelFirmware.Content = "Firmware: -";
//LabelSerial.Content = "Serial: -";
//LabelDisplay.Content = "Display: -";
System.Windows.MessageBox.Show("Kein Unterschriftenpad gefunden!\nMeldung 0x02", "Fehler", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Error);
isDeviceAvailable = false;
}
else
{ // build device list
@ -93,7 +87,10 @@ namespace ZKuP
_stPad.SensorHotSpotPressed += new SensorHotSpotPressedEventHandler(STPad_SensorHotSpotPressed);
_stPad.ControlMirrorDisplay = MirrorMode.Signature;
isDeviceAvailable = true;
}
return isDeviceAvailable;
}
catch (STPadException exc)
{
@ -106,15 +103,17 @@ namespace ZKuP
public static bool ShowDisclaimer(string Name = "", string Firma = "", string Kennzeichen = "", bool showDisclaimer = true)
public static bool ShowDisclaimerParken(string Name = "", string Firma = "", string Kennzeichen = "", bool showDisclaimer = true)
{
SignatureConfirmed = false;
// display disclaimer and two buttons "Cancel" and "Confirm"
GetDevices();
if (!GetDevices())
return false;
try
{
_stPad.DeviceOpen(0,true);
//_stPad.DeviceOpen(_signPads.Length - 1, true);
_stPad.DeviceOpen(0, true);
_stPad.DisplaySetStandbyImage(Helper.LoadBitmapFromResource("Resources/db-logo.png"));
// clear all hot spots
@ -123,9 +122,14 @@ namespace ZKuP
// clear signature window
_stPad.SensorClearSignRect();
// erase LCD and background buffer
_stPad.DisplayErase();
var nCapabilities = _stPad.DeviceGetCapabilities(0);
if (nCapabilities != null && nCapabilities.HasBacklight)
_stPad.DisplaySetBacklight(BacklightMode.On);
// set font
float fontSize = 0;
switch (_signPads[0].PadModel)
@ -344,6 +348,256 @@ namespace ZKuP
return true;
}
public static bool ShowDisclaimerMcFit(string Name = "", string Abteilung = "", string Handynr = "", bool showDisclaimer = true)
{
SignatureConfirmed = false;
// display disclaimer and two buttons "Cancel" and "Confirm"
if (!GetDevices())
return false;
try
{
//_stPad.DeviceOpen(_signPads.Length - 1, true);
_stPad.DeviceOpen(0, true);
_stPad.DisplaySetStandbyImage(Helper.LoadBitmapFromResource("Resources/db-logo.png"));
// clear all hot spots
ClearHotSpots();
// clear signature window
_stPad.SensorClearSignRect();
// erase LCD and background buffer
_stPad.DisplayErase();
var nCapabilities = _stPad.DeviceGetCapabilities(0);
if (nCapabilities != null && nCapabilities.HasBacklight)
_stPad.DisplaySetBacklight(BacklightMode.On);
// set font
float fontSize = 0;
switch (_signPads[0].PadModel)
{
case PadModel.Sigma:
case PadModel.Zeta:
fontSize = 20;
break;
case PadModel.Omega:
fontSize = 40;
break;
case PadModel.Gamma:
fontSize = 45;
break;
case PadModel.Delta:
case PadModel.Alpha:
fontSize = 60;
break;
}
_stPad.DisplaySetFont(new System.Drawing.Font("Arial", fontSize));
switch (_signPads[0].PadModel)
{
case PadModel.Sigma:
case PadModel.Zeta:
// do all the following drawing operations in the background buffer
_stPad.DisplaySetTarget(DisplayTarget.BackgroundBuffer);
// load button bitmaps and set hot spots
// "Cancel" button
System.Drawing.Bitmap button = Helper.LoadBitmapFromResource("Resources/Cancel BW.png");
int x = 20;
int y = _stPad.DisplayHeight - button.Height - 7;
_stPad.DisplaySetImage(x, y, button);
_buttonCancelId = _stPad.SensorAddHotSpot(x, y, button.Width, button.Height);
// "Confirm" button
button = Helper.LoadBitmapFromResource("Resources/OK BW.png");
x = _stPad.DisplayWidth - button.Width - 20;
_stPad.DisplaySetImage(x, y, button);
_buttonConfirmId = _stPad.SensorAddHotSpot(x, y, button.Width, button.Height);
if (showDisclaimer) // display disclaimer
{
if (Abteilung != "" && Name != "" && Handynr != "")
_stPad.DisplaySetTextInRect(10, 10, _stPad.DisplayWidth - 20, _stPad.DisplayHeight - 60, signotec.STPadLibNet.TextAlignment.Left, $"Ich bestätige hiermit dass ich die Mitgliedskarte inkl. Nutzungsbedingungen von McFit erhalten habe\n\nAbteilung: {Abteilung}\nName: {Name}\nHandynr: {Handynr}");
else if (Abteilung != "" && Name != "" && Handynr == "")
_stPad.DisplaySetTextInRect(10, 10, _stPad.DisplayWidth - 20, _stPad.DisplayHeight - 60, signotec.STPadLibNet.TextAlignment.Left, $"Ich bestätige hiermit dass ich die Mitgliedskarte inkl. Nutzungsbedingungen von McFit erhalten habe\n\nAbteilung: {Abteilung}\nName: {Name}");
else
_stPad.DisplaySetTextInRect(10, 10, _stPad.DisplayWidth - 20, _stPad.DisplayHeight - 60, signotec.STPadLibNet.TextAlignment.Left, $"Ich bestätige hiermit dass ich die Mitgliedskarte inkl. Nutzungsbedingungen von McFit erhalten habe\n\nAbteilung: {Abteilung}");
}
else
{
if (Abteilung != "" && Name != "" && Handynr != "")
_stPad.DisplaySetTextInRect(10, 10, _stPad.DisplayWidth - 20, _stPad.DisplayHeight - 60, signotec.STPadLibNet.TextAlignment.Left, $"Abteilung: {Abteilung}\nName: {Name}\nHandynr: {Handynr}");
else if (Abteilung != "" && Name != "" && Handynr == "")
_stPad.DisplaySetTextInRect(10, 10, _stPad.DisplayWidth - 20, _stPad.DisplayHeight - 60, signotec.STPadLibNet.TextAlignment.Left, $"Abteilung: {Abteilung}\nName: {Name}");
else
_stPad.DisplaySetTextInRect(10, 10, _stPad.DisplayWidth - 20, _stPad.DisplayHeight - 60, signotec.STPadLibNet.TextAlignment.Left, $"Abteilung: {Abteilung}");
}
break;
case PadModel.Omega:
case PadModel.Gamma:
case PadModel.Delta:
if (_signPads[0].FastConnection)
// fast connection: do all drawing operations in the overlay buffer
_storeIdOverlay = _stPad.DisplaySetTarget(DisplayTarget.OverlayBuffer);
else
// do all the following drawing operations in the permanent memory
_storeIdOverlay = _stPad.DisplaySetTarget(_storeIdOverlay);
// load button bitmaps and set hot spots for toolbar
// "Cancel" button
button = Helper.LoadBitmapFromResource("Resources/Cancel RGB.png");
switch (_signPads[0].PadModel)
{
case PadModel.Omega:
x = 24;
break;
default:
x = 45;
break;
}
y = _stPad.DisplayHeight - button.Height - 14;
_stPad.DisplaySetImage(x, y, button);
_buttonCancelId = _stPad.SensorAddHotSpot(x, y, button.Width, button.Height);
// "Confirm" button
button = Helper.LoadBitmapFromResource("Resources/OK RGB.png");
switch (_signPads[0].PadModel)
{
case PadModel.Omega:
x = 234;
break;
case PadModel.Gamma:
x = 315;
break;
case PadModel.Delta:
x = 555;
break;
}
_stPad.DisplaySetImage(x, y, button);
_buttonConfirmId = _stPad.SensorAddHotSpot(x, y, button.Width, button.Height);
// Scroll buttons
button = Helper.LoadBitmapFromResource("Resources/Scroll RGB.png");
switch (_signPads[0].PadModel)
{
case PadModel.Omega:
x = 444;
break;
case PadModel.Gamma:
x = 585;
break;
case PadModel.Delta:
x = 1065;
break;
}
_stPad.DisplaySetImage(x, y, button);
_stPad.SensorAddScrollHotSpot(x, y, 66, 66, ScrollOption.ScrollDown);
x += 104;
_stPad.SensorAddScrollHotSpot(x, y, 66, 66, ScrollOption.ScrollUp);
if (!_signPads[0].FastConnection)
{
// do all the following drawing operations in the overlay buffer
_stPad.DisplaySetTarget(DisplayTarget.OverlayBuffer);
// copy stored image to overlay buffer
_stPad.DisplaySetImageFromStore(_storeIdOverlay);
}
// do all the following drawing operations in the background buffer
_stPad.DisplaySetTarget(DisplayTarget.BackgroundBuffer);
// draw disclaimer
x = 10;
y = 10;
int size = _stPad.DisplaySetTextInRect(x, y, _stPad.DisplayWidth - 20, _stPad.DisplayHeight - 80, signotec.STPadLibNet.TextAlignment.Left, _disclaimer);
// use font size of the disclaimer text
if (size != (int)fontSize)
_stPad.DisplaySetFont(new System.Drawing.Font("Arial", size, System.Drawing.FontStyle.Regular));
// set scroll text
y = _stPad.DisplayHeight - 80;
_stPad.DisplaySetTextInRect(x, y, _stPad.DisplayWidth - 20, 100, signotec.STPadLibNet.TextAlignment.Left, "Congratulations! If you can read this text you have found the scroll buttons!");
if (_signPads[0].PadModel == PadModel.Delta)
{
y += _stPad.DisplayHeight;
_stPad.DisplaySetTextInRect(x, y, _stPad.DisplayWidth - 20, 200, 0, "Doesn't the Delta have an impressive large image buffer?");
const int x2 = 320;
while ((y + _stPad.DisplayHeight) < _stPad.DisplayTargetHeight)
{
y += _stPad.DisplayHeight;
_stPad.DisplaySetTextInRect(x, y, _stPad.DisplayWidth - 20, 200, 0, String.Format("You've reached line {0} of {1}!", y, _stPad.DisplayTargetHeight));
if ((y + _stPad.DisplayHeight) < _stPad.DisplayTargetHeight)
{
y += _stPad.DisplayHeight;
_stPad.DisplaySetTextInRect(x2, y, _stPad.DisplayWidth - 2 * x2, 200, signotec.STPadLibNet.TextAlignment.CenterCenteredVertically, "Click me, I'm a scrollable button!");
_stPad.SensorAddScrollHotSpot(x2, y, _stPad.DisplayWidth - 2 * x2, 200, ScrollOption.Scrollable);
}
}
}
// set end text
switch (_signPads[0].PadModel)
{
case PadModel.Omega:
y = _stPad.DisplayTargetHeight - 120;
break;
case PadModel.Gamma:
y = _stPad.DisplayTargetHeight - 140;
break;
case PadModel.Delta:
y = _stPad.DisplayTargetHeight - 160;
break;
}
_stPad.DisplaySetTextInRect(x, y, _stPad.DisplayWidth - 20, 60, signotec.STPadLibNet.TextAlignment.Left, "You have scrolled to the end of this text!");
// set overlay rect
y = _stPad.DisplayHeight - 80;
_stPad.DisplaySetOverlayRect(0, y, _stPad.DisplayWidth, 80);
break;
}
// do all drawing operations on the LCD
_stPad.DisplaySetTarget(DisplayTarget.ForegroundBuffer);
// draw buffered image
_stPad.DisplaySetImageFromStore(DisplayTarget.BackgroundBuffer);
// set complete buffer for scrolling
_stPad.SensorSetScrollArea(0, 0, 0, 0);
if (_signPads[0].SupportsPenScrolling)
// enable pen scrolling
_stPad.SensorSetPenScrollingEnabled(true);
//ButtonRetry.IsEnabled = false;
}
catch (STPadException exc)
{
Log.WriteLog(exc.ToString());
MessageBox.Show(exc.Message);
//throw;
return false;
}
finally
{
//this.Cursor = Cursors.Arrow;
}
return true;
}
private void CancelProcess()
{
try
@ -375,15 +629,6 @@ namespace ZKuP
//this.Cursor = Cursors.Arrow;
}
//ButtonStartCancel.Content = "Start";
//ButtonStartCancel.IsEnabled = true;
//ButtonRetry.IsEnabled = false;
//ButtonConfirm.IsEnabled = false;
try
{
// ImageLed.Source = GetBitmapFromResource(STPadLibNet_Demo_App.Properties.Resources.LED_Yellow, System.Drawing.Imaging.ImageFormat.Png);
}
catch { }
}
@ -421,6 +666,10 @@ namespace ZKuP
// clear hot spots
ClearHotSpots();
var nCapabilities = _stPad.DeviceGetCapabilities(0);
if (nCapabilities != null && nCapabilities.HasBacklight)
_stPad.DisplaySetBacklight(BacklightMode.Off);
_stPad.DeviceClose(0);
//_signPads = null;
@ -639,6 +888,7 @@ namespace ZKuP
// confirm capturing
_stPad.SignatureConfirm();
SignatureConfirmed = true;
// clear hot spots
ClearHotSpots();
}
@ -758,7 +1008,7 @@ namespace ZKuP
case 33:
return PadModel.Alpha;
default:
throw new Exception("This pad type is not supported by this demo application!");
throw new Exception("This pad type is not supported by this application!");
};
}
}

83
ZKuP/ucSpinnerPiston.xaml Normal file
View File

@ -0,0 +1,83 @@
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="ZKuP.ucSpinnerPiston"
x:Name="UserControl">
<UserControl.Resources>
<Storyboard x:Name="spinner" x:Key="spinner" RepeatBehavior="Forever" >
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ellipse1" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.10" Value="-6.83251953125"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.20" Value="-14"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.30" Value="-13.94000244140625"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.40" Value="-13.875"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ellipse" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.10" Value="6.95452880859375"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.20" Value="14.25"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.30" Value="14.13"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.40" Value="14"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ellipse" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.2440000" Value="0"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.5000000" Value="0"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.7400000" Value="-6.844"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.40" Value="-14"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ellipse1" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.20" Value="0"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.30" Value="0"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.40" Value="6.65972900390625"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.50" Value="13.875"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ellipse" Storyboard.TargetProperty="(UIElement.Opacity)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="1"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.10" Value="0.5"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.20" Value="1"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.30" Value="0.5"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.40" Value="1"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ellipse1" Storyboard.TargetProperty="(UIElement.Opacity)">
<EasingDoubleKeyFrame KeyTime="00:00:00" Value="1"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.10" Value="0.5"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.20" Value="1"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.30" Value="0.5"/>
<EasingDoubleKeyFrame KeyTime="00:00:00.40" Value="1"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</UserControl.Resources>
<UserControl.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard Storyboard="{StaticResource spinner}"/>
</EventTrigger>
</UserControl.Triggers>
<Canvas Height="27" Width="27">
<Ellipse x:Name="ellipse" Fill="{DynamicResource MahApps.Brushes.Accent}" Height="6" Width="6" RenderTransformOrigin="0.5,0.5" Canvas.Left="16" Canvas.Top="2">
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
<Ellipse x:Name="ellipse1" Fill="{DynamicResource MahApps.Brushes.Accent}" Height="6" Width="6" Canvas.Top="16" RenderTransformOrigin="0.5,0.5" Canvas.Left="2"><!--#FF04A7D6-->
<Ellipse.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform/>
<TranslateTransform/>
</TransformGroup>
</Ellipse.RenderTransform>
</Ellipse>
</Canvas>
</UserControl>

View File

@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace ZKuP
{
/// <summary>
/// Interaction logic for ucSpinnerPiston.xaml
/// </summary>
public partial class ucSpinnerPiston : UserControl
{
public ucSpinnerPiston()
{
this.InitializeComponent();
}
}
}