Overzicht persoon

This commit is contained in:
Luc Vandenbroucke 2025-02-10 07:05:37 +01:00
parent 953dd5ec6a
commit 351d3f722b
118 changed files with 16354 additions and 963 deletions

View file

@ -41,7 +41,7 @@ Copy-Item -Path "$SourcePath\eDosLocal\UpdateLocal.sql" -Destination "$DestPath\
Copy-Item -Path "$SourcePath\eDosLocal\Updates.sql" -Destination "$DestPath\Updates.sql" Copy-Item -Path "$SourcePath\eDosLocal\Updates.sql" -Destination "$DestPath\Updates.sql"
Copy-Item -Path "$SourcePathTools\LogFolderClean\bin\Release\logFolderClean.exe" -Destination "$DestPath\LogFolderClean.exe" Copy-Item -Path "$SourcePathTools\LogFolderClean\bin\Release\logFolderClean.exe" -Destination "$DestPath\LogFolderClean.exe"
Copy-Item -Path "$SourcePathTools\LogFolderClean\bin\Release\logFolderClean.exe.config" -Destination "$DestPath\LogFolderClean.exe.config" Copy-Item -Path "$SourcePathTools\LogFolderClean\bin\Release\logFolderClean.exe.config" -Destination "$DestPath\LogFolderClean.exe.config"
Copy-Item -Path "$DistributePath\OpenSSH\OpenSSH981Signed.zip" -Destination $DestPath Copy-Item -Path "$DistributePath\OpenSSH\OpenSSH981bSigned.zip" -Destination $DestPath
Copy-Item -Path "$TWN4DevPackPath\Tools\flash.exe" -Destination $DestPath Copy-Item -Path "$TWN4DevPackPath\Tools\flash.exe" -Destination $DestPath
Copy-Item -Path "$TWN4DevPackPath\Apps\Luc\TWN4_xCx480_EDOS100_Edos_Badge_Reader.bix" -Destination $DestPath Copy-Item -Path "$TWN4DevPackPath\Apps\Luc\TWN4_xCx480_EDOS100_Edos_Badge_Reader.bix" -Destination $DestPath
@ -57,8 +57,8 @@ exit
# SIG # Begin signature block # SIG # Begin signature block
# MIImVwYJKoZIhvcNAQcCoIImSDCCJkQCAQExDzANBglghkgBZQMEAgEFADB5Bgor # MIImVwYJKoZIhvcNAQcCoIImSDCCJkQCAQExDzANBglghkgBZQMEAgEFADB5Bgor
# BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG
# KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDJncE+G3QSzIEV # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCDBnGihpJaespex
# A9/XTbyKhHcIBZ4p+ySNnqcm9sYzH6CCDDYwggW8MIIDpKADAgECAgEfMA0GCSqG # O+JeMOWuCAno27Ybxvt+06LtTcniq6CCDDYwggW8MIIDpKADAgECAgEfMA0GCSqG
# SIb3DQEBCwUAMGYxCzAJBgNVBAYTAkJFMRIwEAYDVQQIEwlBbnR3ZXJwZW4xDDAK # SIb3DQEBCwUAMGYxCzAJBgNVBAYTAkJFMRIwEAYDVQQIEwlBbnR3ZXJwZW4xDDAK
# BgNVBAcTA01vbDEPMA0GA1UEChMGU0NLQ0VOMQwwCgYDVQQLEwNJQ1QxFjAUBgNV # BgNVBAcTA01vbDEPMA0GA1UEChMGU0NLQ0VOMQwwCgYDVQQLEwNJQ1QxFjAUBgNV
# BAMTDVNDS0NFTiBJQ1QgQ0EwHhcNMTgwNTI0MDYxMTAwWhcNMzAwNjAxMTIwMDAw # BAMTDVNDS0NFTiBJQ1QgQ0EwHhcNMTgwNTI0MDYxMTAwWhcNMzAwNjAxMTIwMDAw
@ -128,18 +128,18 @@ exit
# MA0GA1UEChMGU0NLQ0VOMQwwCgYDVQQLEwNJQ1QxFjAUBgNVBAMTDVNDS0NFTiBJ # MA0GA1UEChMGU0NLQ0VOMQwwCgYDVQQLEwNJQ1QxFjAUBgNVBAMTDVNDS0NFTiBJ
# Q1QgQ0ECAR8wDQYJYIZIAWUDBAIBBQCggbAwGQYJKoZIhvcNAQkDMQwGCisGAQQB # Q1QgQ0ECAR8wDQYJYIZIAWUDBAIBBQCggbAwGQYJKoZIhvcNAQkDMQwGCisGAQQB
# gjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkE # gjcCAQQwHAYKKwYBBAGCNwIBCzEOMAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkE
# MSIEIJKzATJgKpAm2Oao683qKw2ANzq3XO+LySAh2pPDK/AZMEQGCisGAQQBgjcC # MSIEIEv0yjRUuhHlEEetS5onAwOYMHkDLHRZ7Zw948L0+mzGMEQGCisGAQQBgjcC
# AQwxNjA0oDKAMABJAG4AdABlAGcAcgBpAHQAeQAgACYAIABBAHUAdABoAGUAbgB0 # AQwxNjA0oDKAMABJAG4AdABlAGcAcgBpAHQAeQAgACYAIABBAHUAdABoAGUAbgB0
# AGkAYwBpAHQAeTANBgkqhkiG9w0BAQEFAASCAQCznUJDAQxLJVGsohrzHRGuuAzv # AGkAYwBpAHQAeTANBgkqhkiG9w0BAQEFAASCAQCygh3EsVDF5Pej4wBQCDNUjlZc
# rj4WBob6gCNVVHcltjm+1eUcDLPGNqRM8sVWg+p3FfwNgI2xxtTuE7dWVQbj4uVM # +kseulMk/wsOufLZqy8LFmNptOvakXs+iz79V5GnOfCK6eSRUp/zyDD2u4PBF2cn
# 62nlnuQ3IgE3ohsjAEKlVaGTYz3ukke8KiSQWiMVm73Erw8rRllrLnz/3iibUQ71 # HR+vsuWPWPBullyB20jDoc5Gfj0MZYAx1fMlwhF7yDCy5cZCxLTtbpciF4ilK1Ym
# uh5RtY1gRG9Sm/qoxQUEUsF7oU+03w3XGRmGa2KYrWUh6di39XPJiIZQm8wb4DKi # Ha8ZQxqXtY7f/3i7q+b7pcsbL9sjEqT6+UrFF/XksBhg4mVD1ZtgeRP2gclAdlYk
# XiLSv6ETeIJyFv4r+2riZB+thb6EEOBAivTp5MHUZH+fPwXHk1eBcxGFXtldpinU # 0VsTOR0hefPrh/qI69OhvQtfhzAS8Gh94sFOQoepPYHnpJ3nqV92SPlXKGv3Alzp
# E9HKDDZQe2oeHwV20M9NpShH5N+v/EZ1Nv0222oVnKywX0vgPCNgLx4zqU7coYIX # fDmN0tOwM/mv/qdqfRRFwpw/2n7Dzvfi6ffmNOU2EHDIYzlhIC5ABsjGbY7/oYIX
# KjCCFyYGCisGAQQBgjcDAwExghcWMIIXEgYJKoZIhvcNAQcCoIIXAzCCFv8CAQMx # KjCCFyYGCisGAQQBgjcDAwExghcWMIIXEgYJKoZIhvcNAQcCoIIXAzCCFv8CAQMx
# DzANBglghkgBZQMEAgEFADBoBgsqhkiG9w0BCRABBKBZBFcwVQIBAQYJYIZIAYb9 # DzANBglghkgBZQMEAgEFADBoBgsqhkiG9w0BCRABBKBZBFcwVQIBAQYJYIZIAYb9
# bAcBMCEwCQYFKw4DAhoFAAQU/1clKaYHmhA9wjvbxDFqb7UT3FECEQDnBnnXS6W0 # bAcBMCEwCQYFKw4DAhoFAAQU1ep3uV3/Ejnz/9udM6BgFUwVYQ0CEQDzUXA60yKc
# iAOlwxxHyhnQGA8yMDI1MDEwOTE1MTAxOFqgghMDMIIGvDCCBKSgAwIBAgIQC65m # GgpvT7rKic5qGA8yMDI1MDIxMDA2MDIwMFqgghMDMIIGvDCCBKSgAwIBAgIQC65m
# vFq6f5WHxvnpBOMzBDANBgkqhkiG9w0BAQsFADBjMQswCQYDVQQGEwJVUzEXMBUG # vFq6f5WHxvnpBOMzBDANBgkqhkiG9w0BAQsFADBjMQswCQYDVQQGEwJVUzEXMBUG
# A1UEChMORGlnaUNlcnQsIEluYy4xOzA5BgNVBAMTMkRpZ2lDZXJ0IFRydXN0ZWQg # A1UEChMORGlnaUNlcnQsIEluYy4xOzA5BgNVBAMTMkRpZ2lDZXJ0IFRydXN0ZWQg
# RzQgUlNBNDA5NiBTSEEyNTYgVGltZVN0YW1waW5nIENBMB4XDTI0MDkyNjAwMDAw # RzQgUlNBNDA5NiBTSEEyNTYgVGltZVN0YW1waW5nIENBMB4XDTI0MDkyNjAwMDAw
@ -245,19 +245,19 @@ exit
# LCBJbmMuMTswOQYDVQQDEzJEaWdpQ2VydCBUcnVzdGVkIEc0IFJTQTQwOTYgU0hB # LCBJbmMuMTswOQYDVQQDEzJEaWdpQ2VydCBUcnVzdGVkIEc0IFJTQTQwOTYgU0hB
# MjU2IFRpbWVTdGFtcGluZyBDQQIQC65mvFq6f5WHxvnpBOMzBDANBglghkgBZQME # MjU2IFRpbWVTdGFtcGluZyBDQQIQC65mvFq6f5WHxvnpBOMzBDANBglghkgBZQME
# AgEFAKCB0TAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkF # AgEFAKCB0TAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkF
# MQ8XDTI1MDEwOTE1MTAxOFowKwYLKoZIhvcNAQkQAgwxHDAaMBgwFgQU29OF7mLb # MQ8XDTI1MDIxMDA2MDIwMFowKwYLKoZIhvcNAQkQAgwxHDAaMBgwFgQU29OF7mLb
# 0j575PZxSFCHJNWGW0UwLwYJKoZIhvcNAQkEMSIEIGkHSkWhVRKilPIQIe4PWd8r # 0j575PZxSFCHJNWGW0UwLwYJKoZIhvcNAQkEMSIEILH/oVxo1ATXyST9LBQJu6C/
# g7v39VmhXFAMD7HEifY2MDcGCyqGSIb3DQEJEAIvMSgwJjAkMCIEIHZ2n6jyYy8f # 59E7eug/CMTLVEYXbsJhMDcGCyqGSIb3DQEJEAIvMSgwJjAkMCIEIHZ2n6jyYy8f
# Qws6IzCu1lZ1/tdz2wXWZbkFk5hDj5rbMA0GCSqGSIb3DQEBAQUABIICAHaMCQ4Q # Qws6IzCu1lZ1/tdz2wXWZbkFk5hDj5rbMA0GCSqGSIb3DQEBAQUABIICAF5JWlu4
# x9T51D2cwCAFS8++nYMwgmqS/CTW245YaO/8grO9pDwfeaQZpto+LPfYb1vMrwba # OJItClolAXfv2EcbJsq6YUxvgrTxZIYWISvC+r+MXoDvluXDs9mfKV5FQg8lZD9o
# +Cszkm4zykaCRTxzuX52mstMyjA+BdyFYKu75EKzPYbIChNjiwf59ty3b58Bmdh0 # hBUZ29+osLdqzjZf1GrOpuDovu7/Wu/73giQEyW0wRQo3KhziwsgetGiJKumCBel
# ESakLXwQL0GH8ubst6UcUMGRViXLp7xuSgvU9qXZY6tcUWO9Eckek5xjpvty/Dt9 # 8Y72ZOVwUnXl4jWGgnA59aaYp0FjIGl4rcOqV95eslgqTBJnLfjhUS9NdpvZaeNa
# AEQMB3tfI4JhW2IqgmfWn9BFH+C+26gQTgYlxIcFI+bVLkcdEt8n2+ohKhr0r6Ye # Y6PCSS3TFGkQ6Sb9NkzA5VuhCzmqYhJQzT2Gif3+ZKTIJdkcrBu7WaP62SciFH+y
# FEjhWEZvBf6UmHwkt34/ubs8POT+ICTdubBCZX3/0tJBkPSc2DcFWT/1h7hpvDWx # hQk4cWAvfsPUp3j9bRkSVq+h9JCNAurnxRW3xmxzAuBUmO9iSrpu0pkdx6WvGWLz
# +0MEdEFp0eN9WuOSD8MxNyskzvzHQidOJM+czfpClDn7Rzljcva7WgcoP3E4CKhs # xmPRBS3scnLTT3YqJJO4DTYlmcIRfSAvm8XaG/X9uZ46gnTYpvlNQK/pjF7LaMZ2
# jEzU+qr9tJpnNxZlfLowmChwHen3BeY4tzfe8MTFr5nqhxiZQMkfkoCtDbRTXdRt # dMQho0738FanRPDJ/tSoA6UNIvp/mSN+FGvXWBeqpaoF8pm1JTMvrbiukTELlg8J
# JZ+664PcjnQbxX6A3419KEZpU0gp6YMULB0pzf5nawIe3z6Be4hJmBYqXvrUoX2M # rxvWqKN8Bv0k8FqtHxn+qf/Ii3YPA+c70uoI9Hdr8Wpg7sT/8dXo/mlOZ2LQe3rk
# 62t8iW7wCZpt/+p424auhMTf44ONrw1QpmNzIFC/G9K4DKb2msoNC2W1Lh3ZcMu1 # 3ZbmIw6LzdjsBIHLDG6Vk0WzGKDl2FNyaWedKcU5LlVc7SDb3xbzxP+ZAScu64NT
# f5r7pJ67biMtKYQqX1hi5LAvPYNMezUdC8uD5fHZtjtG/b0Yt37yl7H1KYR/+BT4 # BcrD0JFu1Ae5oau609kUsCNB6E/YtbODF3EMgNQCvLzGS5h0kLB2+d+NExNEc/RK
# J0LPATOSU+leRr8RyzwI/GLVEY/yBagtkNmW # kgFoDMo28uTodvJjR99rNw83Vq9UPj196x1l
# SIG # End signature block # SIG # End signature block

View file

@ -2,7 +2,7 @@
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup> <PropertyGroup>
<EnableUnmanagedDebugging>true</EnableUnmanagedDebugging> <EnableUnmanagedDebugging>true</EnableUnmanagedDebugging>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{D8543650-6A65-4DBF-A389-C55B7745D0E8}</ProjectGuid> <ProjectGuid>{D8543650-6A65-4DBF-A389-C55B7745D0E8}</ProjectGuid>
@ -66,12 +66,6 @@
<ItemGroup> <ItemGroup>
<None Include="App.config" /> <None Include="App.config" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<ProjectReference Include="..\LSWDevices\LSWDevices.vcxproj">
<Project>{dd7e3add-d2df-4755-80f3-853c49809ce6}</Project>
<Name>LSWDevices</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup> <ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.8"> <BootstrapperPackage Include=".NETFramework,Version=v4.8">
<Visible>False</Visible> <Visible>False</Visible>

View file

@ -579,3 +579,37 @@ BEGIN
WHERE [p].[PersID] = @PersID WHERE [p].[PersID] = @PersID
) [a]; ) [a];
END; END;
GO
CREATE OR ALTER PROCEDURE [dbo].[GetPersonOverview] @PersID INT = NULL
AS
SELECT [p].[PersID],
[p].[Type],
[p].[FirstName],
[p].[LastName],
[p].[NickName],
[AccessAllow] = [p].[AccessAllow],
[p].[Language],
[p].[MarginHP10_M],
[p].[MarginHP10_Y],
[p].[Margin],
[p].[VisitIDLocked],
[p].[ID_CommentToPerson],
[p].[Comment],
[p].[Deleted],
[p].[ReasonNoAccess],
[p].[Dose_52W_microSv],
[isAgent] = CONVERT ( BIT,
CASE
WHEN [p].[isAgent] IS NULL THEN
0
ELSE
[p].[isAgent]
END
),
[info]
FROM [dbo].[PersonInfoSnapshot] [p]
WHERE [p].[PersID] = @PersID;
GO
GRANT EXECUTE ON [GetPersonOverview] TO [edosstation];
GO

View file

@ -45,12 +45,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestReader", "TestReader\Te
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testdevcon", "testdevcon\testdevcon.vcxproj", "{5833AD7F-9316-4F65-B9BE-3EA5C34B8E12}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testdevcon", "testdevcon\testdevcon.vcxproj", "{5833AD7F-9316-4F65-B9BE-3EA5C34B8E12}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LSWDevices", "LSWDevices\LSWDevices.vcxproj", "{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestLSWDevice", "TestLSWDevice\TestLSWDevice.csproj", "{D8543650-6A65-4DBF-A389-C55B7745D0E8}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestLSWDevice", "TestLSWDevice\TestLSWDevice.csproj", "{D8543650-6A65-4DBF-A389-C55B7745D0E8}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "xPersonmNfo", "xPersonmNfo\xPersonmNfo.csproj", "{45319B6A-30CA-4DCF-8F6B-185A63FE2487}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "xPersonmNfo", "xPersonmNfo\xPersonmNfo.csproj", "{45319B6A-30CA-4DCF-8F6B-185A63FE2487}"
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LSWDevices", "..\LSWShared\LSWDevices\LSWDevices.vcxproj", "{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@ -431,26 +431,6 @@ Global
{5833AD7F-9316-4F65-B9BE-3EA5C34B8E12}.Release|x64.Build.0 = Release|x64 {5833AD7F-9316-4F65-B9BE-3EA5C34B8E12}.Release|x64.Build.0 = Release|x64
{5833AD7F-9316-4F65-B9BE-3EA5C34B8E12}.Release|x86.ActiveCfg = Release|Win32 {5833AD7F-9316-4F65-B9BE-3EA5C34B8E12}.Release|x86.ActiveCfg = Release|Win32
{5833AD7F-9316-4F65-B9BE-3EA5C34B8E12}.Release|x86.Build.0 = Release|Win32 {5833AD7F-9316-4F65-B9BE-3EA5C34B8E12}.Release|x86.Build.0 = Release|Win32
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Debug|Any CPU.ActiveCfg = Debug|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Debug|Any CPU.Build.0 = Debug|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Debug|ARM.ActiveCfg = Debug|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Debug|ARM.Build.0 = Debug|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Debug|ARM64.ActiveCfg = Debug|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Debug|ARM64.Build.0 = Debug|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Debug|x64.ActiveCfg = Debug|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Debug|x64.Build.0 = Debug|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Debug|x86.ActiveCfg = Debug|Win32
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Debug|x86.Build.0 = Debug|Win32
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Release|Any CPU.ActiveCfg = Release|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Release|Any CPU.Build.0 = Release|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Release|ARM.ActiveCfg = Release|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Release|ARM.Build.0 = Release|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Release|ARM64.ActiveCfg = Release|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Release|ARM64.Build.0 = Release|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Release|x64.ActiveCfg = Release|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Release|x64.Build.0 = Release|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Release|x86.ActiveCfg = Release|Win32
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Release|x86.Build.0 = Release|Win32
{D8543650-6A65-4DBF-A389-C55B7745D0E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D8543650-6A65-4DBF-A389-C55B7745D0E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D8543650-6A65-4DBF-A389-C55B7745D0E8}.Debug|Any CPU.Build.0 = Debug|Any CPU {D8543650-6A65-4DBF-A389-C55B7745D0E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D8543650-6A65-4DBF-A389-C55B7745D0E8}.Debug|ARM.ActiveCfg = Debug|Any CPU {D8543650-6A65-4DBF-A389-C55B7745D0E8}.Debug|ARM.ActiveCfg = Debug|Any CPU
@ -491,6 +471,26 @@ Global
{45319B6A-30CA-4DCF-8F6B-185A63FE2487}.Release|x64.Build.0 = Release|Any CPU {45319B6A-30CA-4DCF-8F6B-185A63FE2487}.Release|x64.Build.0 = Release|Any CPU
{45319B6A-30CA-4DCF-8F6B-185A63FE2487}.Release|x86.ActiveCfg = Release|Any CPU {45319B6A-30CA-4DCF-8F6B-185A63FE2487}.Release|x86.ActiveCfg = Release|Any CPU
{45319B6A-30CA-4DCF-8F6B-185A63FE2487}.Release|x86.Build.0 = Release|Any CPU {45319B6A-30CA-4DCF-8F6B-185A63FE2487}.Release|x86.Build.0 = Release|Any CPU
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Debug|Any CPU.ActiveCfg = Debug|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Debug|Any CPU.Build.0 = Debug|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Debug|ARM.ActiveCfg = Debug|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Debug|ARM.Build.0 = Debug|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Debug|ARM64.ActiveCfg = Debug|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Debug|ARM64.Build.0 = Debug|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Debug|x64.ActiveCfg = Debug|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Debug|x64.Build.0 = Debug|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Debug|x86.ActiveCfg = Debug|Win32
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Debug|x86.Build.0 = Debug|Win32
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Release|Any CPU.ActiveCfg = Release|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Release|Any CPU.Build.0 = Release|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Release|ARM.ActiveCfg = Release|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Release|ARM.Build.0 = Release|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Release|ARM64.ActiveCfg = Release|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Release|ARM64.Build.0 = Release|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Release|x64.ActiveCfg = Release|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Release|x64.Build.0 = Release|x64
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Release|x86.ActiveCfg = Release|Win32
{DD7E3ADD-D2DF-4755-80F3-853C49809CE6}.Release|x86.Build.0 = Release|Win32
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View file

@ -19,8 +19,6 @@ namespace eDosStation
private static extern IntPtr LoadLibraryEx(string lpFileName, IntPtr hFile, uint dwFlags); private static extern IntPtr LoadLibraryEx(string lpFileName, IntPtr hFile, uint dwFlags);
public System.IntPtr moduleHandle; public System.IntPtr moduleHandle;
public bool TestOrCreateFolder(string fn) public bool TestOrCreateFolder(string fn)
{ {
bool rv = true; bool rv = true;
@ -37,6 +35,10 @@ namespace eDosStation
return rv; return rv;
} }
public string eDosPort;
public string elatecPort, elatecFirmware;
public string RFIDReader;
private void Application_Startup(object sender, StartupEventArgs e) private void Application_Startup(object sender, StartupEventArgs e)
{ {
//var pth1 = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "EpdBaseClr.dll"); //var pth1 = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "EpdBaseClr.dll");
@ -44,6 +46,13 @@ namespace eDosStation
//moduleHandle = LoadLibraryEx(pth2, IntPtr.Zero, 0); //moduleHandle = LoadLibraryEx(pth2, IntPtr.Zero, 0);
//moduleHandle = LoadLibraryEx(pth1, IntPtr.Zero, 0); //moduleHandle = LoadLibraryEx(pth1, IntPtr.Zero, 0);
using (var h = new LSWDevices.LSWDevicesHelper())
{
eDosPort = h.eDosPort;
elatecPort = h.ElatecPort;
elatecFirmware = h.ElatecFirmware;
RFIDReader = h.RFIDReader;
}
TestOrCreateFolder("c:/temp"); TestOrCreateFolder("c:/temp");
TestOrCreateFolder("c:/Logs"); TestOrCreateFolder("c:/Logs");

View file

@ -1,30 +1,109 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization; using System.Data.SqlTypes;
using System.Linq; using System.Globalization;
using System.Text; using System.Linq;
using System.Threading.Tasks; using System.Text;
using System.Windows.Data; using System.Threading.Tasks;
using System.Windows.Media; using System.Windows.Controls;
using System.Windows.Data;
namespace eDosStation using System.Windows.Forms;
{ using System.Windows.Media;
class Converters using Telerik.Windows.Controls.ColorEditor;
{
namespace eDosStation
public class BrushColorConverter : IValueConverter {
{ class Converters
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
{ static public readonly Color cBlack = System.Windows.Media.Colors.Black;
Color rv = System.Windows.Media.Colors.Green; static public readonly Color cGreen= System.Windows.Media.Colors.LightGreen;
if (value == null || (bool?)value ==true ) rv = System.Windows.Media.Colors.Red; static public readonly Color cYellow = System.Windows.Media.Colors.Yellow;
return new SolidColorBrush(rv); static public readonly Color cRed = System.Windows.Media.Colors.LightCoral;
} static public readonly Color cBlue = System.Windows.Media.Colors.LightBlue;
static public readonly Color cGray = System.Windows.Media.Colors.Gray;
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{ static public readonly Brush cbBlack = new SolidColorBrush(cBlack);
throw new NotImplementedException(); static public readonly Brush cbGreen = new SolidColorBrush(cGreen);
} static public readonly Brush cbYellow = new SolidColorBrush(cYellow);
} static public readonly Brush cbRed = new SolidColorBrush(cRed);
} static public readonly Brush cbBlue = new SolidColorBrush(cBlue);
} static public readonly Brush cbGray = new SolidColorBrush(cGray);
public class BrushColorValueConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null) value = (int)0;
int cv = (int)value;
Brush rv ;
switch (value) {
case 0: rv = cbBlack; break;
case 1: rv = cbGreen; break;
case 2: rv = cbYellow; break;
case 3: rv = cbRed; break;
case 4: rv = cbBlue; break;
default: rv = cbGray; break;
}
return rv;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
public class BrushColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
Brush rv = cbGreen;
if (value == null || (bool?)value ==true ) rv = cbRed;
return rv;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
/// <summary>
/// Date expiry and boolean OK
/// </summary>
public class BrushExpiryConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
Brush rv = cbGreen;
if (parameter != null
&& ( (parameter is bool && !(bool)parameter)
|| (parameter is int && (int)parameter==0)
)
)
rv = cbRed;
else
{
if (value != null && value is DateTime dt)
{
int weeksleft = (dt - DateTime.Today).Days / 7;
if (weeksleft > 2) rv = cbGreen;
else if (weeksleft > -1) rv = cbYellow;
else rv = cbRed;
}
else
rv = cbBlack;
}
return rv;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -119,98 +119,134 @@
</Mappings> </Mappings>
<Sources /> <Sources />
</TableAdapter> </TableAdapter>
<TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="GetPersonOverviewTableAdapter" GeneratorDataComponentClassName="GetPersonOverviewTableAdapter" Name="GetPersonOverview" UserDataComponentName="GetPersonOverviewTableAdapter">
<MainSource>
<DbSource ConnectionRef="localConnectionString (Settings)" DbObjectName="eDosLocal.dbo.GetPersonOverview" DbObjectType="StoredProcedure" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="false" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetData" UserSourceName="Fill">
<SelectCommand>
<DbCommand CommandType="StoredProcedure" ModifiedByUser="false">
<CommandText>dbo.GetPersonOverview</CommandText>
<Parameters>
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="int" DbType="Int32" Direction="ReturnValue" ParameterName="@RETURN_VALUE" Precision="10" ProviderType="Int" Scale="0" Size="4" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="int" DbType="Int32" Direction="Input" ParameterName="@PersID" Precision="10" ProviderType="Int" Scale="0" Size="4" SourceColumnNullMapping="false" SourceVersion="Current" />
</Parameters>
</DbCommand>
</SelectCommand>
</DbSource>
</MainSource>
<Mappings>
<Mapping SourceColumn="PersID" DataSetColumn="PersID" />
<Mapping SourceColumn="Type" DataSetColumn="Type" />
<Mapping SourceColumn="FirstName" DataSetColumn="FirstName" />
<Mapping SourceColumn="LastName" DataSetColumn="LastName" />
<Mapping SourceColumn="NickName" DataSetColumn="NickName" />
<Mapping SourceColumn="AccessAllow" DataSetColumn="AccessAllow" />
<Mapping SourceColumn="Language" DataSetColumn="Language" />
<Mapping SourceColumn="MarginHP10_M" DataSetColumn="MarginHP10_M" />
<Mapping SourceColumn="MarginHP10_Y" DataSetColumn="MarginHP10_Y" />
<Mapping SourceColumn="Margin" DataSetColumn="Margin" />
<Mapping SourceColumn="VisitIDLocked" DataSetColumn="VisitIDLocked" />
<Mapping SourceColumn="ID_CommentToPerson" DataSetColumn="ID_CommentToPerson" />
<Mapping SourceColumn="Comment" DataSetColumn="Comment" />
<Mapping SourceColumn="Deleted" DataSetColumn="Deleted" />
<Mapping SourceColumn="ReasonNoAccess" DataSetColumn="ReasonNoAccess" />
<Mapping SourceColumn="Dose_52W_microSv" DataSetColumn="Dose_52W_microSv" />
<Mapping SourceColumn="isAgent" DataSetColumn="isAgent" />
<Mapping SourceColumn="info" DataSetColumn="info" />
</Mappings>
<Sources />
</TableAdapter>
</Tables> </Tables>
<Sources /> <Sources />
</DataSource> </DataSource>
</xs:appinfo> </xs:appinfo>
</xs:annotation> </xs:annotation>
<xs:element name="DataSet1" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:EnableTableAdapterManager="true" msprop:Generator_DataSetName="DataSet1" msprop:Generator_UserDSName="DataSet1"> <xs:element name="DataSet1" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:EnableTableAdapterManager="true" msprop:Generator_UserDSName="DataSet1" msprop:Generator_DataSetName="DataSet1">
<xs:complexType> <xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="GetTaskInfo" msprop:Generator_TableClassName="GetTaskInfoDataTable" msprop:Generator_TableVarName="tableGetTaskInfo" msprop:Generator_RowChangedName="GetTaskInfoRowChanged" msprop:Generator_TablePropName="GetTaskInfo" msprop:Generator_RowDeletingName="GetTaskInfoRowDeleting" msprop:Generator_RowChangingName="GetTaskInfoRowChanging" msprop:Generator_RowEvHandlerName="GetTaskInfoRowChangeEventHandler" msprop:Generator_RowDeletedName="GetTaskInfoRowDeleted" msprop:Generator_RowClassName="GetTaskInfoRow" msprop:Generator_UserTableName="GetTaskInfo" msprop:Generator_RowEvArgName="GetTaskInfoRowChangeEvent"> <xs:element name="GetTaskInfo" msprop:Generator_RowEvHandlerName="GetTaskInfoRowChangeEventHandler" msprop:Generator_RowDeletedName="GetTaskInfoRowDeleted" msprop:Generator_RowDeletingName="GetTaskInfoRowDeleting" msprop:Generator_RowEvArgName="GetTaskInfoRowChangeEvent" msprop:Generator_TablePropName="GetTaskInfo" msprop:Generator_RowChangedName="GetTaskInfoRowChanged" msprop:Generator_RowChangingName="GetTaskInfoRowChanging" msprop:Generator_TableClassName="GetTaskInfoDataTable" msprop:Generator_RowClassName="GetTaskInfoRow" msprop:Generator_TableVarName="tableGetTaskInfo" msprop:Generator_UserTableName="GetTaskInfo">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="ID_Task" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnVarNameInTable="columnID_Task" msprop:Generator_ColumnPropNameInRow="ID_Task" msprop:Generator_ColumnPropNameInTable="ID_TaskColumn" msprop:Generator_UserColumnName="ID_Task" type="xs:int" /> <xs:element name="ID_Task" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnPropNameInRow="ID_Task" msprop:Generator_ColumnPropNameInTable="ID_TaskColumn" msprop:Generator_ColumnVarNameInTable="columnID_Task" msprop:Generator_UserColumnName="ID_Task" type="xs:int" />
<xs:element name="Inst_CODE" msprop:Generator_ColumnVarNameInTable="columnInst_CODE" msprop:Generator_ColumnPropNameInRow="Inst_CODE" msprop:Generator_ColumnPropNameInTable="Inst_CODEColumn" msprop:Generator_UserColumnName="Inst_CODE" type="xs:int" minOccurs="0" /> <xs:element name="Inst_CODE" msprop:Generator_ColumnPropNameInRow="Inst_CODE" msprop:Generator_ColumnPropNameInTable="Inst_CODEColumn" msprop:Generator_ColumnVarNameInTable="columnInst_CODE" msprop:Generator_UserColumnName="Inst_CODE" type="xs:int" minOccurs="0" />
<xs:element name="TaskType_CODE" msprop:Generator_ColumnVarNameInTable="columnTaskType_CODE" msprop:Generator_ColumnPropNameInRow="TaskType_CODE" msprop:Generator_ColumnPropNameInTable="TaskType_CODEColumn" msprop:Generator_UserColumnName="TaskType_CODE" type="xs:int" minOccurs="0" /> <xs:element name="TaskType_CODE" msprop:Generator_ColumnPropNameInRow="TaskType_CODE" msprop:Generator_ColumnPropNameInTable="TaskType_CODEColumn" msprop:Generator_ColumnVarNameInTable="columnTaskType_CODE" msprop:Generator_UserColumnName="TaskType_CODE" type="xs:int" minOccurs="0" />
<xs:element name="Task_Name" msprop:Generator_ColumnVarNameInTable="columnTask_Name" msprop:Generator_ColumnPropNameInRow="Task_Name" msprop:Generator_ColumnPropNameInTable="Task_NameColumn" msprop:Generator_UserColumnName="Task_Name" minOccurs="0"> <xs:element name="Task_Name" msprop:Generator_ColumnPropNameInRow="Task_Name" msprop:Generator_ColumnPropNameInTable="Task_NameColumn" msprop:Generator_ColumnVarNameInTable="columnTask_Name" msprop:Generator_UserColumnName="Task_Name" minOccurs="0">
<xs:simpleType> <xs:simpleType>
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:maxLength value="2147483647" /> <xs:maxLength value="2147483647" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
</xs:element> </xs:element>
<xs:element name="TaskDescription" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnTaskDescription" msprop:Generator_ColumnPropNameInRow="TaskDescription" msprop:Generator_ColumnPropNameInTable="TaskDescriptionColumn" msprop:Generator_UserColumnName="TaskDescription"> <xs:element name="TaskDescription" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInRow="TaskDescription" msprop:Generator_ColumnPropNameInTable="TaskDescriptionColumn" msprop:Generator_ColumnVarNameInTable="columnTaskDescription" msprop:Generator_UserColumnName="TaskDescription">
<xs:simpleType> <xs:simpleType>
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:maxLength value="50" /> <xs:maxLength value="50" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
</xs:element> </xs:element>
<xs:element name="EPDRad" msprop:Generator_ColumnVarNameInTable="columnEPDRad" msprop:Generator_ColumnPropNameInRow="EPDRad" msprop:Generator_ColumnPropNameInTable="EPDRadColumn" msprop:Generator_UserColumnName="EPDRad"> <xs:element name="EPDRad" msprop:Generator_ColumnPropNameInRow="EPDRad" msprop:Generator_ColumnPropNameInTable="EPDRadColumn" msprop:Generator_ColumnVarNameInTable="columnEPDRad" msprop:Generator_UserColumnName="EPDRad">
<xs:simpleType> <xs:simpleType>
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:maxLength value="2" /> <xs:maxLength value="2" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
</xs:element> </xs:element>
<xs:element name="ID_AlarmEPD" msprop:Generator_ColumnVarNameInTable="columnID_AlarmEPD" msprop:Generator_ColumnPropNameInRow="ID_AlarmEPD" msprop:Generator_ColumnPropNameInTable="ID_AlarmEPDColumn" msprop:Generator_UserColumnName="ID_AlarmEPD" type="xs:int" minOccurs="0" /> <xs:element name="ID_AlarmEPD" msprop:Generator_ColumnPropNameInRow="ID_AlarmEPD" msprop:Generator_ColumnPropNameInTable="ID_AlarmEPDColumn" msprop:Generator_ColumnVarNameInTable="columnID_AlarmEPD" msprop:Generator_UserColumnName="ID_AlarmEPD" type="xs:int" minOccurs="0" />
<xs:element name="TaskDateStart" msprop:Generator_ColumnVarNameInTable="columnTaskDateStart" msprop:Generator_ColumnPropNameInRow="TaskDateStart" msprop:Generator_ColumnPropNameInTable="TaskDateStartColumn" msprop:Generator_UserColumnName="TaskDateStart" type="xs:dateTime" minOccurs="0" /> <xs:element name="TaskDateStart" msprop:Generator_ColumnPropNameInRow="TaskDateStart" msprop:Generator_ColumnPropNameInTable="TaskDateStartColumn" msprop:Generator_ColumnVarNameInTable="columnTaskDateStart" msprop:Generator_UserColumnName="TaskDateStart" type="xs:dateTime" minOccurs="0" />
<xs:element name="TaskDateEnd" msprop:Generator_ColumnVarNameInTable="columnTaskDateEnd" msprop:Generator_ColumnPropNameInRow="TaskDateEnd" msprop:Generator_ColumnPropNameInTable="TaskDateEndColumn" msprop:Generator_UserColumnName="TaskDateEnd" type="xs:dateTime" minOccurs="0" /> <xs:element name="TaskDateEnd" msprop:Generator_ColumnPropNameInRow="TaskDateEnd" msprop:Generator_ColumnPropNameInTable="TaskDateEndColumn" msprop:Generator_ColumnVarNameInTable="columnTaskDateEnd" msprop:Generator_UserColumnName="TaskDateEnd" type="xs:dateTime" minOccurs="0" />
<xs:element name="TaskEnable" msprop:Generator_ColumnVarNameInTable="columnTaskEnable" msprop:Generator_ColumnPropNameInRow="TaskEnable" msprop:Generator_ColumnPropNameInTable="TaskEnableColumn" msprop:Generator_UserColumnName="TaskEnable" type="xs:boolean" minOccurs="0" /> <xs:element name="TaskEnable" msprop:Generator_ColumnPropNameInRow="TaskEnable" msprop:Generator_ColumnPropNameInTable="TaskEnableColumn" msprop:Generator_ColumnVarNameInTable="columnTaskEnable" msprop:Generator_UserColumnName="TaskEnable" type="xs:boolean" minOccurs="0" />
<xs:element name="ID_FNGainANGain" msprop:Generator_ColumnVarNameInTable="columnID_FNGainANGain" msprop:Generator_ColumnPropNameInRow="ID_FNGainANGain" msprop:Generator_ColumnPropNameInTable="ID_FNGainANGainColumn" msprop:Generator_UserColumnName="ID_FNGainANGain" type="xs:int" minOccurs="0" /> <xs:element name="ID_FNGainANGain" msprop:Generator_ColumnPropNameInRow="ID_FNGainANGain" msprop:Generator_ColumnPropNameInTable="ID_FNGainANGainColumn" msprop:Generator_ColumnVarNameInTable="columnID_FNGainANGain" msprop:Generator_UserColumnName="ID_FNGainANGain" type="xs:int" minOccurs="0" />
<xs:element name="Hp10Dose1" msprop:Generator_ColumnVarNameInTable="columnHp10Dose1" msprop:Generator_ColumnPropNameInRow="Hp10Dose1" msprop:Generator_ColumnPropNameInTable="Hp10Dose1Column" msprop:Generator_UserColumnName="Hp10Dose1" type="xs:double" minOccurs="0" /> <xs:element name="Hp10Dose1" msprop:Generator_ColumnPropNameInRow="Hp10Dose1" msprop:Generator_ColumnPropNameInTable="Hp10Dose1Column" msprop:Generator_ColumnVarNameInTable="columnHp10Dose1" msprop:Generator_UserColumnName="Hp10Dose1" type="xs:double" minOccurs="0" />
<xs:element name="Hp10Dose2" msprop:Generator_ColumnVarNameInTable="columnHp10Dose2" msprop:Generator_ColumnPropNameInRow="Hp10Dose2" msprop:Generator_ColumnPropNameInTable="Hp10Dose2Column" msprop:Generator_UserColumnName="Hp10Dose2" type="xs:double" minOccurs="0" /> <xs:element name="Hp10Dose2" msprop:Generator_ColumnPropNameInRow="Hp10Dose2" msprop:Generator_ColumnPropNameInTable="Hp10Dose2Column" msprop:Generator_ColumnVarNameInTable="columnHp10Dose2" msprop:Generator_UserColumnName="Hp10Dose2" type="xs:double" minOccurs="0" />
<xs:element name="Hp07Dose" msprop:Generator_ColumnVarNameInTable="columnHp07Dose" msprop:Generator_ColumnPropNameInRow="Hp07Dose" msprop:Generator_ColumnPropNameInTable="Hp07DoseColumn" msprop:Generator_UserColumnName="Hp07Dose" type="xs:double" minOccurs="0" /> <xs:element name="Hp07Dose" msprop:Generator_ColumnPropNameInRow="Hp07Dose" msprop:Generator_ColumnPropNameInTable="Hp07DoseColumn" msprop:Generator_ColumnVarNameInTable="columnHp07Dose" msprop:Generator_UserColumnName="Hp07Dose" type="xs:double" minOccurs="0" />
<xs:element name="HP10Rate1ON" msprop:Generator_ColumnVarNameInTable="columnHP10Rate1ON" msprop:Generator_ColumnPropNameInRow="HP10Rate1ON" msprop:Generator_ColumnPropNameInTable="HP10Rate1ONColumn" msprop:Generator_UserColumnName="HP10Rate1ON" type="xs:double" minOccurs="0" /> <xs:element name="HP10Rate1ON" msprop:Generator_ColumnPropNameInRow="HP10Rate1ON" msprop:Generator_ColumnPropNameInTable="HP10Rate1ONColumn" msprop:Generator_ColumnVarNameInTable="columnHP10Rate1ON" msprop:Generator_UserColumnName="HP10Rate1ON" type="xs:double" minOccurs="0" />
<xs:element name="HP10Rate1OFF" msprop:Generator_ColumnVarNameInTable="columnHP10Rate1OFF" msprop:Generator_ColumnPropNameInRow="HP10Rate1OFF" msprop:Generator_ColumnPropNameInTable="HP10Rate1OFFColumn" msprop:Generator_UserColumnName="HP10Rate1OFF" type="xs:double" minOccurs="0" /> <xs:element name="HP10Rate1OFF" msprop:Generator_ColumnPropNameInRow="HP10Rate1OFF" msprop:Generator_ColumnPropNameInTable="HP10Rate1OFFColumn" msprop:Generator_ColumnVarNameInTable="columnHP10Rate1OFF" msprop:Generator_UserColumnName="HP10Rate1OFF" type="xs:double" minOccurs="0" />
<xs:element name="HP10Rate2ON" msprop:Generator_ColumnVarNameInTable="columnHP10Rate2ON" msprop:Generator_ColumnPropNameInRow="HP10Rate2ON" msprop:Generator_ColumnPropNameInTable="HP10Rate2ONColumn" msprop:Generator_UserColumnName="HP10Rate2ON" type="xs:double" minOccurs="0" /> <xs:element name="HP10Rate2ON" msprop:Generator_ColumnPropNameInRow="HP10Rate2ON" msprop:Generator_ColumnPropNameInTable="HP10Rate2ONColumn" msprop:Generator_ColumnVarNameInTable="columnHP10Rate2ON" msprop:Generator_UserColumnName="HP10Rate2ON" type="xs:double" minOccurs="0" />
<xs:element name="HP10Rate2OFF" msprop:Generator_ColumnVarNameInTable="columnHP10Rate2OFF" msprop:Generator_ColumnPropNameInRow="HP10Rate2OFF" msprop:Generator_ColumnPropNameInTable="HP10Rate2OFFColumn" msprop:Generator_UserColumnName="HP10Rate2OFF" type="xs:double" minOccurs="0" /> <xs:element name="HP10Rate2OFF" msprop:Generator_ColumnPropNameInRow="HP10Rate2OFF" msprop:Generator_ColumnPropNameInTable="HP10Rate2OFFColumn" msprop:Generator_ColumnVarNameInTable="columnHP10Rate2OFF" msprop:Generator_UserColumnName="HP10Rate2OFF" type="xs:double" minOccurs="0" />
<xs:element name="HP07RateON" msprop:Generator_ColumnVarNameInTable="columnHP07RateON" msprop:Generator_ColumnPropNameInRow="HP07RateON" msprop:Generator_ColumnPropNameInTable="HP07RateONColumn" msprop:Generator_UserColumnName="HP07RateON" type="xs:double" minOccurs="0" /> <xs:element name="HP07RateON" msprop:Generator_ColumnPropNameInRow="HP07RateON" msprop:Generator_ColumnPropNameInTable="HP07RateONColumn" msprop:Generator_ColumnVarNameInTable="columnHP07RateON" msprop:Generator_UserColumnName="HP07RateON" type="xs:double" minOccurs="0" />
<xs:element name="HP07RateOFF" msprop:Generator_ColumnVarNameInTable="columnHP07RateOFF" msprop:Generator_ColumnPropNameInRow="HP07RateOFF" msprop:Generator_ColumnPropNameInTable="HP07RateOFFColumn" msprop:Generator_UserColumnName="HP07RateOFF" type="xs:double" minOccurs="0" /> <xs:element name="HP07RateOFF" msprop:Generator_ColumnPropNameInRow="HP07RateOFF" msprop:Generator_ColumnPropNameInTable="HP07RateOFFColumn" msprop:Generator_ColumnVarNameInTable="columnHP07RateOFF" msprop:Generator_UserColumnName="HP07RateOFF" type="xs:double" minOccurs="0" />
<xs:element name="FNGain_ANGainValue" msprop:Generator_ColumnVarNameInTable="columnFNGain_ANGainValue" msprop:Generator_ColumnPropNameInRow="FNGain_ANGainValue" msprop:Generator_ColumnPropNameInTable="FNGain_ANGainValueColumn" msprop:Generator_UserColumnName="FNGain_ANGainValue" type="xs:double" minOccurs="0" /> <xs:element name="FNGain_ANGainValue" msprop:Generator_ColumnPropNameInRow="FNGain_ANGainValue" msprop:Generator_ColumnPropNameInTable="FNGain_ANGainValueColumn" msprop:Generator_ColumnVarNameInTable="columnFNGain_ANGainValue" msprop:Generator_UserColumnName="FNGain_ANGainValue" type="xs:double" minOccurs="0" />
<xs:element name="InstallationActivity" msprop:Generator_ColumnVarNameInTable="columnInstallationActivity" msprop:Generator_ColumnPropNameInRow="InstallationActivity" msprop:Generator_ColumnPropNameInTable="InstallationActivityColumn" msprop:Generator_UserColumnName="InstallationActivity" minOccurs="0"> <xs:element name="InstallationActivity" msprop:Generator_ColumnPropNameInRow="InstallationActivity" msprop:Generator_ColumnPropNameInTable="InstallationActivityColumn" msprop:Generator_ColumnVarNameInTable="columnInstallationActivity" msprop:Generator_UserColumnName="InstallationActivity" minOccurs="0">
<xs:simpleType> <xs:simpleType>
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:maxLength value="100" /> <xs:maxLength value="100" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
</xs:element> </xs:element>
<xs:element name="Description" msprop:Generator_ColumnVarNameInTable="columnDescription" msprop:Generator_ColumnPropNameInRow="Description" msprop:Generator_ColumnPropNameInTable="DescriptionColumn" msprop:Generator_UserColumnName="Description" minOccurs="0"> <xs:element name="Description" msprop:Generator_ColumnPropNameInRow="Description" msprop:Generator_ColumnPropNameInTable="DescriptionColumn" msprop:Generator_ColumnVarNameInTable="columnDescription" msprop:Generator_UserColumnName="Description" minOccurs="0">
<xs:simpleType> <xs:simpleType>
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:maxLength value="500" /> <xs:maxLength value="500" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
</xs:element> </xs:element>
<xs:element name="Inst_CODE1" msprop:Generator_ColumnVarNameInTable="columnInst_CODE1" msprop:Generator_ColumnPropNameInRow="Inst_CODE1" msprop:Generator_ColumnPropNameInTable="Inst_CODE1Column" msprop:Generator_UserColumnName="Inst_CODE1" type="xs:int" minOccurs="0" /> <xs:element name="Inst_CODE1" msprop:Generator_ColumnPropNameInRow="Inst_CODE1" msprop:Generator_ColumnPropNameInTable="Inst_CODE1Column" msprop:Generator_ColumnVarNameInTable="columnInst_CODE1" msprop:Generator_UserColumnName="Inst_CODE1" type="xs:int" minOccurs="0" />
<xs:element name="MinWorkerDosisMargin" msprop:Generator_ColumnVarNameInTable="columnMinWorkerDosisMargin" msprop:Generator_ColumnPropNameInRow="MinWorkerDosisMargin" msprop:Generator_ColumnPropNameInTable="MinWorkerDosisMarginColumn" msprop:Generator_UserColumnName="MinWorkerDosisMargin" type="xs:double" minOccurs="0" /> <xs:element name="MinWorkerDosisMargin" msprop:Generator_ColumnPropNameInRow="MinWorkerDosisMargin" msprop:Generator_ColumnPropNameInTable="MinWorkerDosisMarginColumn" msprop:Generator_ColumnVarNameInTable="columnMinWorkerDosisMargin" msprop:Generator_UserColumnName="MinWorkerDosisMargin" type="xs:double" minOccurs="0" />
<xs:element name="MarginExceeded" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnMarginExceeded" msprop:Generator_ColumnPropNameInRow="MarginExceeded" msprop:Generator_ColumnPropNameInTable="MarginExceededColumn" msprop:Generator_UserColumnName="MarginExceeded" type="xs:boolean" minOccurs="0" /> <xs:element name="MarginExceeded" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInRow="MarginExceeded" msprop:Generator_ColumnPropNameInTable="MarginExceededColumn" msprop:Generator_ColumnVarNameInTable="columnMarginExceeded" msprop:Generator_UserColumnName="MarginExceeded" type="xs:boolean" minOccurs="0" />
<xs:element name="ChirpRate" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnChirpRate" msprop:Generator_ColumnPropNameInRow="ChirpRate" msprop:Generator_ColumnPropNameInTable="ChirpRateColumn" msprop:Generator_UserColumnName="ChirpRate" type="xs:float" minOccurs="0" /> <xs:element name="ChirpRate" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInRow="ChirpRate" msprop:Generator_ColumnPropNameInTable="ChirpRateColumn" msprop:Generator_ColumnVarNameInTable="columnChirpRate" msprop:Generator_UserColumnName="ChirpRate" type="xs:float" minOccurs="0" />
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="GetTaskList" msprop:Generator_TableClassName="GetTaskListDataTable" msprop:Generator_TableVarName="tableGetTaskList" msprop:Generator_RowChangedName="GetTaskListRowChanged" msprop:Generator_TablePropName="GetTaskList" msprop:Generator_RowDeletingName="GetTaskListRowDeleting" msprop:Generator_RowChangingName="GetTaskListRowChanging" msprop:Generator_RowEvHandlerName="GetTaskListRowChangeEventHandler" msprop:Generator_RowDeletedName="GetTaskListRowDeleted" msprop:Generator_RowClassName="GetTaskListRow" msprop:Generator_UserTableName="GetTaskList" msprop:Generator_RowEvArgName="GetTaskListRowChangeEvent"> <xs:element name="GetTaskList" msprop:Generator_RowEvHandlerName="GetTaskListRowChangeEventHandler" msprop:Generator_RowDeletedName="GetTaskListRowDeleted" msprop:Generator_RowDeletingName="GetTaskListRowDeleting" msprop:Generator_RowEvArgName="GetTaskListRowChangeEvent" msprop:Generator_TablePropName="GetTaskList" msprop:Generator_RowChangedName="GetTaskListRowChanged" msprop:Generator_RowChangingName="GetTaskListRowChanging" msprop:Generator_TableClassName="GetTaskListDataTable" msprop:Generator_RowClassName="GetTaskListRow" msprop:Generator_TableVarName="tableGetTaskList" msprop:Generator_UserTableName="GetTaskList">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="ID_Task" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnVarNameInTable="columnID_Task" msprop:Generator_ColumnPropNameInRow="ID_Task" msprop:Generator_ColumnPropNameInTable="ID_TaskColumn" msprop:Generator_UserColumnName="ID_Task" type="xs:int" /> <xs:element name="ID_Task" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnPropNameInRow="ID_Task" msprop:Generator_ColumnPropNameInTable="ID_TaskColumn" msprop:Generator_ColumnVarNameInTable="columnID_Task" msprop:Generator_UserColumnName="ID_Task" type="xs:int" />
<xs:element name="Inst_CODE" msprop:Generator_ColumnVarNameInTable="columnInst_CODE" msprop:Generator_ColumnPropNameInRow="Inst_CODE" msprop:Generator_ColumnPropNameInTable="Inst_CODEColumn" msprop:Generator_UserColumnName="Inst_CODE" type="xs:int" minOccurs="0" /> <xs:element name="Inst_CODE" msprop:Generator_ColumnPropNameInRow="Inst_CODE" msprop:Generator_ColumnPropNameInTable="Inst_CODEColumn" msprop:Generator_ColumnVarNameInTable="columnInst_CODE" msprop:Generator_UserColumnName="Inst_CODE" type="xs:int" minOccurs="0" />
<xs:element name="TaskType_CODE" msprop:Generator_ColumnVarNameInTable="columnTaskType_CODE" msprop:Generator_ColumnPropNameInRow="TaskType_CODE" msprop:Generator_ColumnPropNameInTable="TaskType_CODEColumn" msprop:Generator_UserColumnName="TaskType_CODE" type="xs:int" minOccurs="0" /> <xs:element name="TaskType_CODE" msprop:Generator_ColumnPropNameInRow="TaskType_CODE" msprop:Generator_ColumnPropNameInTable="TaskType_CODEColumn" msprop:Generator_ColumnVarNameInTable="columnTaskType_CODE" msprop:Generator_UserColumnName="TaskType_CODE" type="xs:int" minOccurs="0" />
<xs:element name="Task_Name" msprop:Generator_ColumnVarNameInTable="columnTask_Name" msprop:Generator_ColumnPropNameInRow="Task_Name" msprop:Generator_ColumnPropNameInTable="Task_NameColumn" msprop:Generator_UserColumnName="Task_Name" minOccurs="0"> <xs:element name="Task_Name" msprop:Generator_ColumnPropNameInRow="Task_Name" msprop:Generator_ColumnPropNameInTable="Task_NameColumn" msprop:Generator_ColumnVarNameInTable="columnTask_Name" msprop:Generator_UserColumnName="Task_Name" minOccurs="0">
<xs:simpleType> <xs:simpleType>
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:maxLength value="2147483647" /> <xs:maxLength value="2147483647" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
</xs:element> </xs:element>
<xs:element name="TaskDescription" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnTaskDescription" msprop:Generator_ColumnPropNameInRow="TaskDescription" msprop:Generator_ColumnPropNameInTable="TaskDescriptionColumn" msprop:Generator_UserColumnName="TaskDescription"> <xs:element name="TaskDescription" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInRow="TaskDescription" msprop:Generator_ColumnPropNameInTable="TaskDescriptionColumn" msprop:Generator_ColumnVarNameInTable="columnTaskDescription" msprop:Generator_UserColumnName="TaskDescription">
<xs:simpleType> <xs:simpleType>
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:maxLength value="50" /> <xs:maxLength value="50" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
</xs:element> </xs:element>
<xs:element name="EPDRad" msprop:Generator_ColumnVarNameInTable="columnEPDRad" msprop:Generator_ColumnPropNameInRow="EPDRad" msprop:Generator_ColumnPropNameInTable="EPDRadColumn" msprop:Generator_UserColumnName="EPDRad"> <xs:element name="EPDRad" msprop:Generator_ColumnPropNameInRow="EPDRad" msprop:Generator_ColumnPropNameInTable="EPDRadColumn" msprop:Generator_ColumnVarNameInTable="columnEPDRad" msprop:Generator_UserColumnName="EPDRad">
<xs:simpleType> <xs:simpleType>
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:maxLength value="2" /> <xs:maxLength value="2" />
@ -220,40 +256,40 @@
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="CommentOnEvent" msprop:Generator_TableClassName="CommentOnEventDataTable" msprop:Generator_TableVarName="tableCommentOnEvent" msprop:Generator_RowChangedName="CommentOnEventRowChanged" msprop:Generator_TablePropName="CommentOnEvent" msprop:Generator_RowDeletingName="CommentOnEventRowDeleting" msprop:Generator_RowChangingName="CommentOnEventRowChanging" msprop:Generator_RowEvHandlerName="CommentOnEventRowChangeEventHandler" msprop:Generator_RowDeletedName="CommentOnEventRowDeleted" msprop:Generator_RowClassName="CommentOnEventRow" msprop:Generator_UserTableName="CommentOnEvent" msprop:Generator_RowEvArgName="CommentOnEventRowChangeEvent"> <xs:element name="CommentOnEvent" msprop:Generator_RowEvHandlerName="CommentOnEventRowChangeEventHandler" msprop:Generator_RowDeletedName="CommentOnEventRowDeleted" msprop:Generator_RowDeletingName="CommentOnEventRowDeleting" msprop:Generator_RowEvArgName="CommentOnEventRowChangeEvent" msprop:Generator_TablePropName="CommentOnEvent" msprop:Generator_RowChangedName="CommentOnEventRowChanged" msprop:Generator_RowChangingName="CommentOnEventRowChanging" msprop:Generator_TableClassName="CommentOnEventDataTable" msprop:Generator_RowClassName="CommentOnEventRow" msprop:Generator_TableVarName="tableCommentOnEvent" msprop:Generator_UserTableName="CommentOnEvent">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="ID_CommnentOnEvent" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnVarNameInTable="columnID_CommnentOnEvent" msprop:Generator_ColumnPropNameInRow="ID_CommnentOnEvent" msprop:Generator_ColumnPropNameInTable="ID_CommnentOnEventColumn" msprop:Generator_UserColumnName="ID_CommnentOnEvent" type="xs:int" /> <xs:element name="ID_CommnentOnEvent" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnPropNameInRow="ID_CommnentOnEvent" msprop:Generator_ColumnPropNameInTable="ID_CommnentOnEventColumn" msprop:Generator_ColumnVarNameInTable="columnID_CommnentOnEvent" msprop:Generator_UserColumnName="ID_CommnentOnEvent" type="xs:int" />
<xs:element name="TriggerTable" msprop:Generator_ColumnVarNameInTable="columnTriggerTable" msprop:Generator_ColumnPropNameInRow="TriggerTable" msprop:Generator_ColumnPropNameInTable="TriggerTableColumn" msprop:Generator_UserColumnName="TriggerTable" minOccurs="0"> <xs:element name="TriggerTable" msprop:Generator_ColumnPropNameInRow="TriggerTable" msprop:Generator_ColumnPropNameInTable="TriggerTableColumn" msprop:Generator_ColumnVarNameInTable="columnTriggerTable" msprop:Generator_UserColumnName="TriggerTable" minOccurs="0">
<xs:simpleType> <xs:simpleType>
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:maxLength value="100" /> <xs:maxLength value="100" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
</xs:element> </xs:element>
<xs:element name="TriggerField" msprop:Generator_ColumnVarNameInTable="columnTriggerField" msprop:Generator_ColumnPropNameInRow="TriggerField" msprop:Generator_ColumnPropNameInTable="TriggerFieldColumn" msprop:Generator_UserColumnName="TriggerField" minOccurs="0"> <xs:element name="TriggerField" msprop:Generator_ColumnPropNameInRow="TriggerField" msprop:Generator_ColumnPropNameInTable="TriggerFieldColumn" msprop:Generator_ColumnVarNameInTable="columnTriggerField" msprop:Generator_UserColumnName="TriggerField" minOccurs="0">
<xs:simpleType> <xs:simpleType>
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:maxLength value="100" /> <xs:maxLength value="100" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
</xs:element> </xs:element>
<xs:element name="TriggerStatus" msprop:Generator_ColumnVarNameInTable="columnTriggerStatus" msprop:Generator_ColumnPropNameInRow="TriggerStatus" msprop:Generator_ColumnPropNameInTable="TriggerStatusColumn" msprop:Generator_UserColumnName="TriggerStatus" type="xs:boolean" minOccurs="0" /> <xs:element name="TriggerStatus" msprop:Generator_ColumnPropNameInRow="TriggerStatus" msprop:Generator_ColumnPropNameInTable="TriggerStatusColumn" msprop:Generator_ColumnVarNameInTable="columnTriggerStatus" msprop:Generator_UserColumnName="TriggerStatus" type="xs:boolean" minOccurs="0" />
<xs:element name="Comment_FR" msprop:Generator_ColumnVarNameInTable="columnComment_FR" msprop:Generator_ColumnPropNameInRow="Comment_FR" msprop:Generator_ColumnPropNameInTable="Comment_FRColumn" msprop:Generator_UserColumnName="Comment_FR" minOccurs="0"> <xs:element name="Comment_FR" msprop:Generator_ColumnPropNameInRow="Comment_FR" msprop:Generator_ColumnPropNameInTable="Comment_FRColumn" msprop:Generator_ColumnVarNameInTable="columnComment_FR" msprop:Generator_UserColumnName="Comment_FR" minOccurs="0">
<xs:simpleType> <xs:simpleType>
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:maxLength value="5000" /> <xs:maxLength value="5000" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
</xs:element> </xs:element>
<xs:element name="Comment_NL" msprop:Generator_ColumnVarNameInTable="columnComment_NL" msprop:Generator_ColumnPropNameInRow="Comment_NL" msprop:Generator_ColumnPropNameInTable="Comment_NLColumn" msprop:Generator_UserColumnName="Comment_NL" minOccurs="0"> <xs:element name="Comment_NL" msprop:Generator_ColumnPropNameInRow="Comment_NL" msprop:Generator_ColumnPropNameInTable="Comment_NLColumn" msprop:Generator_ColumnVarNameInTable="columnComment_NL" msprop:Generator_UserColumnName="Comment_NL" minOccurs="0">
<xs:simpleType> <xs:simpleType>
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:maxLength value="5000" /> <xs:maxLength value="5000" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
</xs:element> </xs:element>
<xs:element name="Comment_EN" msprop:Generator_ColumnVarNameInTable="columnComment_EN" msprop:Generator_ColumnPropNameInRow="Comment_EN" msprop:Generator_ColumnPropNameInTable="Comment_ENColumn" msprop:Generator_UserColumnName="Comment_EN" minOccurs="0"> <xs:element name="Comment_EN" msprop:Generator_ColumnPropNameInRow="Comment_EN" msprop:Generator_ColumnPropNameInTable="Comment_ENColumn" msprop:Generator_ColumnVarNameInTable="columnComment_EN" msprop:Generator_UserColumnName="Comment_EN" minOccurs="0">
<xs:simpleType> <xs:simpleType>
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:maxLength value="5000" /> <xs:maxLength value="5000" />
@ -263,11 +299,11 @@
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="Installation" msprop:Generator_TableClassName="InstallationDataTable" msprop:Generator_TableVarName="tableInstallation" msprop:Generator_RowChangedName="InstallationRowChanged" msprop:Generator_TablePropName="Installation" msprop:Generator_RowDeletingName="InstallationRowDeleting" msprop:Generator_RowChangingName="InstallationRowChanging" msprop:Generator_RowEvHandlerName="InstallationRowChangeEventHandler" msprop:Generator_RowDeletedName="InstallationRowDeleted" msprop:Generator_RowClassName="InstallationRow" msprop:Generator_UserTableName="Installation" msprop:Generator_RowEvArgName="InstallationRowChangeEvent"> <xs:element name="Installation" msprop:Generator_RowEvHandlerName="InstallationRowChangeEventHandler" msprop:Generator_RowDeletedName="InstallationRowDeleted" msprop:Generator_RowDeletingName="InstallationRowDeleting" msprop:Generator_RowEvArgName="InstallationRowChangeEvent" msprop:Generator_TablePropName="Installation" msprop:Generator_RowChangedName="InstallationRowChanged" msprop:Generator_RowChangingName="InstallationRowChanging" msprop:Generator_TableClassName="InstallationDataTable" msprop:Generator_RowClassName="InstallationRow" msprop:Generator_TableVarName="tableInstallation" msprop:Generator_UserTableName="Installation">
<xs:complexType> <xs:complexType>
<xs:sequence> <xs:sequence>
<xs:element name="Inst_CODE" msprop:Generator_ColumnVarNameInTable="columnInst_CODE" msprop:Generator_ColumnPropNameInRow="Inst_CODE" msprop:Generator_ColumnPropNameInTable="Inst_CODEColumn" msprop:Generator_UserColumnName="Inst_CODE" type="xs:int" /> <xs:element name="Inst_CODE" msprop:Generator_ColumnPropNameInRow="Inst_CODE" msprop:Generator_ColumnPropNameInTable="Inst_CODEColumn" msprop:Generator_ColumnVarNameInTable="columnInst_CODE" msprop:Generator_UserColumnName="Inst_CODE" type="xs:int" />
<xs:element name="InstallationName" msprop:Generator_ColumnVarNameInTable="columnInstallationName" msprop:Generator_ColumnPropNameInRow="InstallationName" msprop:Generator_ColumnPropNameInTable="InstallationNameColumn" msprop:Generator_UserColumnName="InstallationName" minOccurs="0"> <xs:element name="InstallationName" msprop:Generator_ColumnPropNameInRow="InstallationName" msprop:Generator_ColumnPropNameInTable="InstallationNameColumn" msprop:Generator_ColumnVarNameInTable="columnInstallationName" msprop:Generator_UserColumnName="InstallationName" minOccurs="0">
<xs:simpleType> <xs:simpleType>
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:maxLength value="50" /> <xs:maxLength value="50" />
@ -277,6 +313,78 @@
</xs:sequence> </xs:sequence>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
<xs:element name="GetPersonOverview" msprop:Generator_RowEvHandlerName="GetPersonOverviewRowChangeEventHandler" msprop:Generator_RowDeletedName="GetPersonOverviewRowDeleted" msprop:Generator_RowDeletingName="GetPersonOverviewRowDeleting" msprop:Generator_RowEvArgName="GetPersonOverviewRowChangeEvent" msprop:Generator_TablePropName="GetPersonOverview" msprop:Generator_RowChangedName="GetPersonOverviewRowChanged" msprop:Generator_RowChangingName="GetPersonOverviewRowChanging" msprop:Generator_TableClassName="GetPersonOverviewDataTable" msprop:Generator_RowClassName="GetPersonOverviewRow" msprop:Generator_TableVarName="tableGetPersonOverview" msprop:Generator_UserTableName="GetPersonOverview">
<xs:complexType>
<xs:sequence>
<xs:element name="PersID" msprop:Generator_ColumnPropNameInRow="PersID" msprop:Generator_ColumnPropNameInTable="PersIDColumn" msprop:Generator_ColumnVarNameInTable="columnPersID" msprop:Generator_UserColumnName="PersID" type="xs:int" />
<xs:element name="Type" msprop:Generator_ColumnPropNameInRow="Type" msprop:Generator_ColumnPropNameInTable="TypeColumn" msprop:Generator_ColumnVarNameInTable="columnType" msprop:Generator_UserColumnName="Type" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="FirstName" msprop:Generator_ColumnPropNameInRow="FirstName" msprop:Generator_ColumnPropNameInTable="FirstNameColumn" msprop:Generator_ColumnVarNameInTable="columnFirstName" msprop:Generator_UserColumnName="FirstName" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="LastName" msprop:Generator_ColumnPropNameInRow="LastName" msprop:Generator_ColumnPropNameInTable="LastNameColumn" msprop:Generator_ColumnVarNameInTable="columnLastName" msprop:Generator_UserColumnName="LastName" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="NickName" msprop:Generator_ColumnPropNameInRow="NickName" msprop:Generator_ColumnPropNameInTable="NickNameColumn" msprop:Generator_ColumnVarNameInTable="columnNickName" msprop:Generator_UserColumnName="NickName" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="AccessAllow" msprop:Generator_ColumnPropNameInRow="AccessAllow" msprop:Generator_ColumnPropNameInTable="AccessAllowColumn" msprop:Generator_ColumnVarNameInTable="columnAccessAllow" msprop:Generator_UserColumnName="AccessAllow" type="xs:boolean" minOccurs="0" />
<xs:element name="Language" msprop:Generator_ColumnPropNameInRow="Language" msprop:Generator_ColumnPropNameInTable="LanguageColumn" msprop:Generator_ColumnVarNameInTable="columnLanguage" msprop:Generator_UserColumnName="Language">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="1" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="MarginHP10_M" msprop:Generator_ColumnPropNameInRow="MarginHP10_M" msprop:Generator_ColumnPropNameInTable="MarginHP10_MColumn" msprop:Generator_ColumnVarNameInTable="columnMarginHP10_M" msprop:Generator_UserColumnName="MarginHP10_M" type="xs:decimal" minOccurs="0" />
<xs:element name="MarginHP10_Y" msprop:Generator_ColumnPropNameInRow="MarginHP10_Y" msprop:Generator_ColumnPropNameInTable="MarginHP10_YColumn" msprop:Generator_ColumnVarNameInTable="columnMarginHP10_Y" msprop:Generator_UserColumnName="MarginHP10_Y" type="xs:decimal" minOccurs="0" />
<xs:element name="Margin" msprop:Generator_ColumnPropNameInRow="Margin" msprop:Generator_ColumnPropNameInTable="MarginColumn" msprop:Generator_ColumnVarNameInTable="columnMargin" msprop:Generator_UserColumnName="Margin" type="xs:decimal" minOccurs="0" />
<xs:element name="VisitIDLocked" msprop:Generator_ColumnPropNameInRow="VisitIDLocked" msprop:Generator_ColumnPropNameInTable="VisitIDLockedColumn" msprop:Generator_ColumnVarNameInTable="columnVisitIDLocked" msprop:Generator_UserColumnName="VisitIDLocked" type="xs:int" />
<xs:element name="ID_CommentToPerson" msprop:Generator_ColumnPropNameInRow="ID_CommentToPerson" msprop:Generator_ColumnPropNameInTable="ID_CommentToPersonColumn" msprop:Generator_ColumnVarNameInTable="columnID_CommentToPerson" msprop:Generator_UserColumnName="ID_CommentToPerson" type="xs:int" minOccurs="0" />
<xs:element name="Comment" msprop:Generator_ColumnPropNameInRow="Comment" msprop:Generator_ColumnPropNameInTable="CommentColumn" msprop:Generator_ColumnVarNameInTable="columnComment" msprop:Generator_UserColumnName="Comment" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="1000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Deleted" msprop:Generator_ColumnPropNameInRow="Deleted" msprop:Generator_ColumnPropNameInTable="DeletedColumn" msprop:Generator_ColumnVarNameInTable="columnDeleted" msprop:Generator_UserColumnName="Deleted" type="xs:boolean" />
<xs:element name="ReasonNoAccess" msprop:Generator_ColumnPropNameInRow="ReasonNoAccess" msprop:Generator_ColumnPropNameInTable="ReasonNoAccessColumn" msprop:Generator_ColumnVarNameInTable="columnReasonNoAccess" msprop:Generator_UserColumnName="ReasonNoAccess">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="5000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Dose_52W_microSv" msprop:Generator_ColumnPropNameInRow="Dose_52W_microSv" msprop:Generator_ColumnPropNameInTable="Dose_52W_microSvColumn" msprop:Generator_ColumnVarNameInTable="columnDose_52W_microSv" msprop:Generator_UserColumnName="Dose_52W_microSv" type="xs:double" minOccurs="0" />
<xs:element name="isAgent" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInRow="isAgent" msprop:Generator_ColumnPropNameInTable="isAgentColumn" msprop:Generator_ColumnVarNameInTable="columnisAgent" msprop:Generator_UserColumnName="isAgent" type="xs:boolean" minOccurs="0" />
<xs:element name="info" msprop:Generator_ColumnPropNameInRow="info" msprop:Generator_ColumnPropNameInTable="infoColumn" msprop:Generator_ColumnVarNameInTable="columninfo" msprop:Generator_UserColumnName="info" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2147483647" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice> </xs:choice>
</xs:complexType> </xs:complexType>
<xs:unique name="Constraint1" msdata:PrimaryKey="true"> <xs:unique name="Constraint1" msdata:PrimaryKey="true">
@ -291,5 +399,9 @@
<xs:selector xpath=".//mstns:CommentOnEvent" /> <xs:selector xpath=".//mstns:CommentOnEvent" />
<xs:field xpath="mstns:ID_CommnentOnEvent" /> <xs:field xpath="mstns:ID_CommnentOnEvent" />
</xs:unique> </xs:unique>
<xs:unique name="GetPersonOverview_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:GetPersonOverview" />
<xs:field xpath="mstns:PersID" />
</xs:unique>
</xs:element> </xs:element>
</xs:schema> </xs:schema>

View file

@ -4,12 +4,13 @@
Changes to this file may cause incorrect behavior and will be lost if Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated. the code is regenerated.
</autogenerated>--> </autogenerated>-->
<DiagramLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ex:showrelationlabel="False" ViewPortX="0" ViewPortY="45" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout"> <DiagramLayout xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ex:showrelationlabel="False" ViewPortX="0" ViewPortY="45" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
<Shapes> <Shapes>
<Shape ID="DesignTable:GetTaskInfo" ZOrder="4" X="285" Y="59" Height="305" Width="269" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" /> <Shape ID="DesignTable:GetTaskInfo" ZOrder="5" X="285" Y="59" Height="305" Width="269" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:GetTaskList" ZOrder="3" X="58" Y="55" Height="191" Width="211" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="140" /> <Shape ID="DesignTable:GetTaskList" ZOrder="4" X="58" Y="55" Height="191" Width="211" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="140" />
<Shape ID="DesignTable:CommentOnEvent" ZOrder="2" X="592" Y="61" Height="210" Width="285" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="159" /> <Shape ID="DesignTable:CommentOnEvent" ZOrder="3" X="592" Y="61" Height="210" Width="285" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="159" />
<Shape ID="DesignTable:Installation" ZOrder="1" X="630" Y="342" Height="135" Width="247" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="76" /> <Shape ID="DesignTable:Installation" ZOrder="2" X="591" Y="295" Height="135" Width="247" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="76" />
<Shape ID="DesignTable:GetPersonOverview" ZOrder="1" X="980" Y="98" Height="305" Width="259" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
</Shapes> </Shapes>
<Connectors /> <Connectors />
</DiagramLayout> </DiagramLayout>

View file

@ -582,9 +582,12 @@ namespace eDosStation
UserAccess.Text = ReasonNoAccess; UserAccess.Text = ReasonNoAccess;
Username.Text = _User.FullUserName(); Username.Text = _User.FullUserName();
thisStation.splunkLog?.KvAdd(LSWLib.CLog.skeys.persID, _User.PersID);
thisStation.splunkLog?.KvAdd(LSWLib.CLog.skeys.name, _User.FullUserName());
string msg = string.Empty; string msg = string.Empty;
if (!_User.HasMessage() && string.IsNullOrEmpty(ReasonNoAccess) && _User.AllowShowTask()) if (!_User.HasMessage() && string.IsNullOrEmpty(ReasonNoAccess) && _User.AllowShowTask())
{ {
thisStation.splunkLog?.WriteSplunkLog(module, step, LSWLib.CLog.iseverity.info);
step = "AskTask"; step = "AskTask";
msg = $"ShowUserInfo to AskTask {DateTime.Now.ToString("HH:mm:ss.fff")}"; msg = $"ShowUserInfo to AskTask {DateTime.Now.ToString("HH:mm:ss.fff")}";
dataInterface.stationLog?.WriteLine(msg); dataInterface.stationLog?.WriteLine(msg);
@ -595,10 +598,11 @@ namespace eDosStation
} }
else else
{ {
thisStation.splunkLog?.WriteSplunkLog(module, step, LSWLib.CLog.iseverity.warning, lresultMessage: ReasonNoAccess);
step = "Add timer"; step = "Add timer";
msg = $"ShowUserInfo {step} {DateTime.Now.ToString("HH:mm:ss.fff")}"; msg = $"ShowUserInfo {step} {DateTime.Now.ToString("HH:mm:ss.fff")}";
dataInterface.stationLog?.WriteLine(msg); dataInterface.stationLog?.WriteLine(msg);
thisStation.splunkLog?.WriteSplunkLog(module, null, LSWLib.CLog.iseverity.info, msg);
tReasonNoAccess.Text = ReasonNoAccess; tReasonNoAccess.Text = ReasonNoAccess;
pUserSeconds.Visibility = Visibility.Visible; pUserSeconds.Visibility = Visibility.Visible;
pUserSeconds.Maximum = pUserSeconds.Value = UserSeconds; pUserSeconds.Maximum = pUserSeconds.Value = UserSeconds;
@ -606,7 +610,6 @@ namespace eDosStation
dispatcherTimer.Interval = TimeSpan.FromSeconds(1); dispatcherTimer.Interval = TimeSpan.FromSeconds(1);
dispatcherTimer.Tick += SwitchToTask; dispatcherTimer.Tick += SwitchToTask;
dispatcherTimer.Start(); dispatcherTimer.Start();
thisStation.splunkLog?.WriteSplunkLog(module, step,LSWLib.CLog.iseverity.info);
} }
} }
@ -934,6 +937,7 @@ namespace eDosStation
sp.Visibility = Visibility.Visible; sp.Visibility = Visibility.Visible;
} }
private void Window_Loaded(object sender, RoutedEventArgs e) private void Window_Loaded(object sender, RoutedEventArgs e)
{ {
initialising = true; initialising = true;

View file

@ -0,0 +1,9 @@
<?xml version="1.0" ?>
<ResourceDictionary xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<DrawingGroup x:Key="Image">
<DrawingGroup.ClipGeometry>
<RectangleGeometry Rect="0.0,0.0,96.0,96.0"/>
</DrawingGroup.ClipGeometry>
</DrawingGroup>
<DrawingImage Drawing="{StaticResource Image}" x:Key="di_Image"/>
</ResourceDictionary>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19.25 7.57692C19.25 7.99114 19.5858 8.32692 20 8.32692C20.4143 8.32692 20.75 7.99114 20.75 7.57692H19.25ZM7.54545 21.75C7.95967 21.75 8.29545 21.4142 8.29545 21C8.29545 20.5858 7.95967 20.25 7.54545 20.25V21.75ZM16.6569 1.29459L17.1885 0.765534L16.6569 1.29459ZM20.75 7.57692V5.06666H19.25V7.57692H20.75ZM20.2404 3.83219L17.1885 0.765534L16.1253 1.82365L19.1772 4.8903L20.2404 3.83219ZM15.9481 0.25H2.50004V1.75H15.9481V0.25ZM0.250041 2.49999L0.250003 19.5L1.75 19.5L1.75004 2.5L0.250041 2.49999ZM2.5 21.75H7.54545V20.25H2.5V21.75ZM0.250003 19.5C0.250001 20.7426 1.25736 21.75 2.5 21.75V20.25C2.08579 20.25 1.75 19.9142 1.75 19.5L0.250003 19.5ZM2.50004 0.25C1.2574 0.25 0.250044 1.25736 0.250041 2.49999L1.75004 2.5C1.75004 2.08579 2.08583 1.75 2.50004 1.75V0.25ZM17.1885 0.765534C16.86 0.435529 16.4136 0.25 15.9481 0.25V1.75C16.0146 1.75 16.0783 1.7765 16.1253 1.82365L17.1885 0.765534ZM20.75 5.06666C20.75 4.60398 20.5668 4.16013 20.2404 3.83219L19.1772 4.8903C19.2239 4.93715 19.25 5.00056 19.25 5.06666H20.75Z" fill="#71717A"/>
<path d="M5 6H15.5752" stroke="#71717A" stroke-width="1.5" stroke-linecap="round"/>
<path d="M5 11H10.2374" stroke="#71717A" stroke-width="1.5" stroke-linecap="round"/>
<path d="M5 16H7.24461" stroke="#71717A" stroke-width="1.5" stroke-linecap="round"/>
<circle cx="17.5" cy="17.5" r="5.5" stroke="#71717A" stroke-width="1.5"/>
<path d="M15.5 18L16.5826 19.0826C16.8011 19.3011 17.1635 19.2711 17.3431 19.0197L19.5 16" stroke="#71717A" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" stroke-width="3" stroke="#000000" fill="none"><polyline points="33.16 21.45 43.07 31.36 33.16 41.27"/><line x1="43.07" y1="31.36" x2="6.72" y2="31.36"/><path d="M22.3,37.69V51.45a2.8,2.8,0,0,0,2.8,2.81H50.33a2.8,2.8,0,0,0,2.8-2.81V11.27a2.8,2.8,0,0,0-2.8-2.8H25.1a2.8,2.8,0,0,0-2.8,2.8V24.51"/></svg>

After

Width:  |  Height:  |  Size: 508 B

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" stroke-width="3" stroke="#000000" fill="none"><polyline points="46.02 21.95 55.93 31.86 46.02 41.77"/><line x1="55.93" y1="31.86" x2="19.59" y2="31.86"/><path d="M40,38.18V52a2.8,2.8,0,0,1-2.81,2.8H12A2.8,2.8,0,0,1,9.16,52V11.77A2.8,2.8,0,0,1,12,9H37.19A2.8,2.8,0,0,1,40,11.77V25"/></svg>

After

Width:  |  Height:  |  Size: 496 B

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13 8C13 7.44772 12.5523 7 12 7C11.4477 7 11 7.44772 11 8C11 8.55228 11.4477 9 12 9C12.5523 9 13 8.55228 13 8Z" fill="#1C274C"/>
<path d="M12 17.75C12.4142 17.75 12.75 17.4142 12.75 17V11C12.75 10.5858 12.4142 10.25 12 10.25C11.5858 10.25 11.25 10.5858 11.25 11V17C11.25 17.4142 11.5858 17.75 12 17.75Z" fill="#1C274C"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.0574 1.25H11.9426C9.63424 1.24999 7.82519 1.24998 6.41371 1.43975C4.96897 1.63399 3.82895 2.03933 2.93414 2.93414C2.03933 3.82895 1.63399 4.96897 1.43975 6.41371C1.24998 7.82519 1.24999 9.63422 1.25 11.9426V12.0574C1.24999 14.3658 1.24998 16.1748 1.43975 17.5863C1.63399 19.031 2.03933 20.1711 2.93414 21.0659C3.82895 21.9607 4.96897 22.366 6.41371 22.5603C7.82519 22.75 9.63423 22.75 11.9426 22.75H12.0574C14.3658 22.75 16.1748 22.75 17.5863 22.5603C19.031 22.366 20.1711 21.9607 21.0659 21.0659C21.9607 20.1711 22.366 19.031 22.5603 17.5863C22.75 16.1748 22.75 14.3658 22.75 12.0574V11.9426C22.75 9.63423 22.75 7.82519 22.5603 6.41371C22.366 4.96897 21.9607 3.82895 21.0659 2.93414C20.1711 2.03933 19.031 1.63399 17.5863 1.43975C16.1748 1.24998 14.3658 1.24999 12.0574 1.25ZM3.9948 3.9948C4.56445 3.42514 5.33517 3.09825 6.61358 2.92637C7.91356 2.75159 9.62177 2.75 12 2.75C14.3782 2.75 16.0864 2.75159 17.3864 2.92637C18.6648 3.09825 19.4355 3.42514 20.0052 3.9948C20.5749 4.56445 20.9018 5.33517 21.0736 6.61358C21.2484 7.91356 21.25 9.62177 21.25 12C21.25 14.3782 21.2484 16.0864 21.0736 17.3864C20.9018 18.6648 20.5749 19.4355 20.0052 20.0052C19.4355 20.5749 18.6648 20.9018 17.3864 21.0736C16.0864 21.2484 14.3782 21.25 12 21.25C9.62177 21.25 7.91356 21.2484 6.61358 21.0736C5.33517 20.9018 4.56445 20.5749 3.9948 20.0052C3.42514 19.4355 3.09825 18.6648 2.92637 17.3864C2.75159 16.0864 2.75 14.3782 2.75 12C2.75 9.62177 2.75159 7.91356 2.92637 6.61358C3.09825 5.33517 3.42514 4.56445 3.9948 3.9948Z" fill="#1C274C"/>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View file

@ -12,6 +12,15 @@
WindowStartupLocation="CenterScreen" WindowState="Maximized" WindowStyle="None" WindowStartupLocation="CenterScreen" WindowState="Maximized" WindowStyle="None"
Loaded="Window_Loaded" GotFocus="Window_GotFocus" LostFocus="Window_LostFocus" Loaded="Window_Loaded" GotFocus="Window_GotFocus" LostFocus="Window_LostFocus"
> >
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources/checklist.xaml" />
</ResourceDictionary.MergedDictionaries>
<telerik:RadSvgImageSource x:Key="iExit" Source="Images/exit.svg" />
</ResourceDictionary>
</Window.Resources>
<DockPanel> <DockPanel>
<Menu DockPanel.Dock="Top"> <Menu DockPanel.Dock="Top">
<Menu.ItemsPanel> <Menu.ItemsPanel>
@ -28,8 +37,11 @@
</MenuItem> </MenuItem>
<MenuItem Header="About" Name="mAbout" Click="mAbout_Click" HorizontalAlignment="Right" /> <MenuItem Header="About" Name="mAbout" Click="mAbout_Click" HorizontalAlignment="Right" />
</Menu> </Menu>
<StatusBar DockPanel.Dock="Bottom" > <StatusBar DockPanel.Dock="Bottom" HorizontalAlignment="Center" HorizontalContentAlignment="Center" >
<StatusBarItem Name="TruDose" Content="COMxx" Margin="10,0,50,0" />
<StatusBarItem Name="BadgeReader" Content="COMxx" Margin="0,0,100,0"/>
<StatusBarItem Name="Status" Content="Offline" HorizontalContentAlignment="Center" HorizontalAlignment="Stretch" Style="{StaticResource xstatusOnLine}" /> <StatusBarItem Name="Status" Content="Offline" HorizontalContentAlignment="Center" HorizontalAlignment="Stretch" Style="{StaticResource xstatusOnLine}" />
</StatusBar> </StatusBar>
<Grid> <Grid>
<Grid.RowDefinitions> <Grid.RowDefinitions>
@ -51,19 +63,53 @@
<StackPanel DockPanel.Dock="Left" Width="100" /> <StackPanel DockPanel.Dock="Left" Width="100" />
<StackPanel DockPanel.Dock="right" Width="100" /> <StackPanel DockPanel.Dock="right" Width="100" />
<TextBlock DockPanel.Dock="Bottom" Name="tVersion" Text="eDosStation 2021-2024 v" FontSize="12" HorizontalAlignment="Center" /> <TextBlock DockPanel.Dock="Bottom" Name="tVersion" Text="eDosStation 2021-2024 v" FontSize="12" HorizontalAlignment="Center" />
<Grid > <Grid Name="MenuGrid" >
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="auto" /> <RowDefinition Height="auto" />
<RowDefinition Height="*" /> <RowDefinition Height="*" />
<RowDefinition Height="*"/> <RowDefinition Height="*"/>
<RowDefinition Height="*"/> <RowDefinition Height="*"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Border Name="ibComment" Grid.Row="0" Background="Bisque" Visibility="Collapsed"> <Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Border Name="ibComment" Grid.Row="0" Grid.ColumnSpan="2" Background="Bisque" Visibility="Collapsed">
<TextBlock Name="itComment" HorizontalAlignment="Stretch" TextWrapping="Wrap" FontSize="15" Margin="10,10,10,10" Foreground="{StaticResource sckbP}" /> <TextBlock Name="itComment" HorizontalAlignment="Stretch" TextWrapping="Wrap" FontSize="15" Margin="10,10,10,10" Foreground="{StaticResource sckbP}" />
</Border> </Border>
<telerik:RadButton Grid.Row="1" Grid.Column="0" Content="Start visit" Name="bEntry" Click="BEntry_Click" Margin="20,20,20,20" Style="{StaticResource bigButton}" /> <telerik:RadButton Grid.Row="1" Grid.RowSpan="3" Grid.Column="0" x:Name="bInfo" Margin="20,20,20,20" Style="{StaticResource bigButton}" Height="200" Click="bInfo_Click" >
<telerik:RadButton Grid.Row="2" Grid.Column="0" Content="End Visit" Name="bExit" Click="BExit_Click" Margin="20,20,20,20" Style="{StaticResource bigButton}" /> <telerik:RadButton.Content>
<telerik:RadButton Grid.Row="3" Grid.Column="0" Content="EPD Info &amp; Dose" Click="Button_Click" Margin="20,20,20,20" Style="{StaticResource bigButton}" /> <StackPanel Orientation="Horizontal">
<telerik:RadSvgImage ImageSource="{StaticResource checklist_xaml}" Width="100" />
<TextBlock Text="Info" />
</StackPanel>
</telerik:RadButton.Content>
</telerik:RadButton>
<telerik:RadButton Grid.Row="1" Grid.Column="1" Name="bEntry" Click="BEntry_Click" Margin="20,20,20,20" Style="{StaticResource bigButton}" >
<telerik:RadButton.Content>
<StackPanel Orientation="Horizontal">
<telerik:RadSvgImage ImageSource="{StaticResource entry_xaml}" Width="100" />
<TextBlock Text="Start visit" />
</StackPanel>
</telerik:RadButton.Content>
</telerik:RadButton>
<telerik:RadButton Grid.Row="2" Grid.Column="1" Name="bExit" Click="BExit_Click" Margin="20,20,20,20" Style="{StaticResource bigButton}" >
<telerik:RadButton.Content>
<StackPanel Orientation="Horizontal">
<telerik:RadSvgImage ImageSource="{StaticResource exit_xaml}" Width="100" />
<TextBlock Text="End visit" />
</StackPanel>
</telerik:RadButton.Content>
</telerik:RadButton>
<telerik:RadButton Grid.Row="3" Grid.Column="1" Click="Button_Click" Margin="20,20,20,20" Style="{StaticResource bigButton}" >
<telerik:RadButton.Content>
<StackPanel Orientation="Horizontal">
<telerik:RadSvgImage ImageSource="{StaticResource info_square_xaml}" Width="100" />
<TextBlock Text="EPD Info &amp; Dose" />
</StackPanel>
</telerik:RadButton.Content>
</telerik:RadButton>
</Grid> </Grid>
</DockPanel> </DockPanel>
</Grid> </Grid>

View file

@ -2,6 +2,7 @@
using System.Windows; using System.Windows;
using System.Windows.Media; using System.Windows.Media;
using System.Windows.Threading; using System.Windows.Threading;
using Telerik.Windows.Controls;
namespace eDosStation namespace eDosStation
{ {
@ -16,6 +17,7 @@ namespace eDosStation
public Station thisStation; public Station thisStation;
DispatcherTimer bgTimer; DispatcherTimer bgTimer;
private bool Offline = true; private bool Offline = true;
private App curApp;
#if SimulateEPD #if SimulateEPD
public SimulateData simulData = new SimulateData(); public SimulateData simulData = new SimulateData();
@ -23,7 +25,15 @@ namespace eDosStation
public MainWindow() public MainWindow()
{ {
InitializeComponent(); InitializeComponent();
curApp = Application.Current as App;
} }
public void loadsvg()
{
// var m_imageSource = new SvgImageSource(new Uri("mySvgImage.svg"));
}
private void Button_Click(object sender, RoutedEventArgs e) private void Button_Click(object sender, RoutedEventArgs e)
{ {
string ers = string.Empty; string ers = string.Empty;
@ -146,6 +156,19 @@ namespace eDosStation
Status.Foreground = Brushes.Yellow; Status.Foreground = Brushes.Yellow;
Status.Background = Brushes.Red; Status.Background = Brushes.Red;
} }
private void showBadge(int persid)
{
UserInfo UI = new UserInfo(thisStation, persid);
UI.ShowDialog();
thisStation.ReceivedPersid = Pelatec_DataReceived;
}
private void Pelatec_DataReceived(int PersID)
{
this.Dispatcher.InvokeAsync(new Action(() => showBadge(PersID)), DispatcherPriority.Background);
}
private void Window_Loaded(object sender, RoutedEventArgs e) private void Window_Loaded(object sender, RoutedEventArgs e)
{ {
bool ok = true; bool ok = true;
@ -160,7 +183,7 @@ namespace eDosStation
try try
{ {
dataInterface = new DataInterface(); dataInterface = new DataInterface();
thisStation = new Station(dataInterface, string.Empty); thisStation = new Station(dataInterface, string.Empty, curApp);
dataInterface.splunkLog = thisStation.splunkLog; dataInterface.splunkLog = thisStation.splunkLog;
} }
catch (System.Exception ex) catch (System.Exception ex)
@ -170,6 +193,7 @@ namespace eDosStation
ok = false; ok = false;
dataInterface.stationLog?.WriteLine($"Window_Loaded {ex.Message}"); dataInterface.stationLog?.WriteLine($"Window_Loaded {ex.Message}");
} }
if (ok && thisStation.Error > 0) if (ok && thisStation.Error > 0)
{ {
errMsg = $"Startup error {thisStation.ErrorMessage} "; errMsg = $"Startup error {thisStation.ErrorMessage} ";
@ -177,30 +201,7 @@ namespace eDosStation
ok = false; ok = false;
} }
// if (ok)
// try
// {
// //var sp = new System.IO.Ports.SerialPort($"com{thisStation.ComPort}");
// //sp.BaudRate = 9600;
// //sp.Parity = System.IO.Ports.Parity.None;
// //sp.StopBits = System.IO.Ports.StopBits.One;
// //sp.Open();
// //sp.DiscardInBuffer();
// //sp.Close();
//#if SimulateEPD
// thisStation.ComPort = 0;
//#endif
// //ep = new EpdBaseClr.Epd2(thisStation.ComPort);
// //ep.SetFeedbackSound(thisStation.useBeep);
// }
// catch (System.Exception ex)
// {
// errMsg = $"Edp software error {ex.Message}";
// MessageBox.Show(errMsg);
// ok = false;
// thisStation.splunkLog.WriteException("mainWindow", "Epd", ex);
// dataInterface.stationLog?.WriteLine($"Window_Loaded {ex.Message}");
// }
if (ok) if (ok)
{ {
if (thisStation.insComments.Length > 2) if (thisStation.insComments.Length > 2)
@ -216,9 +217,27 @@ namespace eDosStation
else else
setErrorStatus(errMsg); setErrorStatus(errMsg);
TruDose.Content = $"TruDose: {thisStation.sComPort}";
BadgeReader.Content = thisStation.ReaderName;
BgTimer_Tick(null, null); BgTimer_Tick(null, null);
bgTimer.Start(); bgTimer.Start();
if (thisStation.isElatec)
{
thisStation.ReceivedPersid = Pelatec_DataReceived;
} else
{
DisableUserInfo();
}
} }
private void DisableUserInfo()
{
bInfo.Visibility = Visibility.Collapsed;
MenuGrid.ColumnDefinitions[0].Width = new GridLength(0);
}
private void BgTimer_Tick(object sender, EventArgs e) private void BgTimer_Tick(object sender, EventArgs e)
{ {
setLocalStatus(); setLocalStatus();
@ -249,7 +268,11 @@ namespace eDosStation
thisStation.splunkLog.KvClear(); thisStation.splunkLog.KvClear();
thisStation.splunkLog?.CloseSplunkLog(); thisStation.splunkLog?.CloseSplunkLog();
Application.Current.Shutdown(); Application.Current.Shutdown();
Environment.Exit(0); try
{
Environment.Exit(0);
}
catch { }
} }
private void mReverseSync_Click(object sender, RoutedEventArgs e) private void mReverseSync_Click(object sender, RoutedEventArgs e)
@ -260,5 +283,12 @@ namespace eDosStation
else else
MessageBox.Show("Fout", null, MessageBoxButton.OK, MessageBoxImage.Error); MessageBox.Show("Fout", null, MessageBoxButton.OK, MessageBoxImage.Error);
} }
private void bInfo_Click(object sender, RoutedEventArgs e)
{
UserInfo ui = new UserInfo(thisStation, 0);
ui.ShowDialog();
thisStation.ReceivedPersid = Pelatec_DataReceived;
}
} }
} }

View file

@ -68,5 +68,6 @@ using System.Windows;
//2.37 Detail alarm //2.37 Detail alarm
//2.38 Check before writeearer //2.38 Check before writeearer
//2.41 Maximized exit en Dose screen (Karel) //2.41 Maximized exit en Dose screen (Karel)
[assembly: AssemblyVersion("2.40.0.0")] //2.42 User Info screen (kiosk)
[assembly: AssemblyFileVersion("2.40.0.0")] [assembly: AssemblyVersion("2.42.0.0")]
[assembly: AssemblyFileVersion("2.42.0.0")]

View file

@ -1 +1 @@
Wed 01/15/2025 15:18:43.29 Mon 02/10/2025 6:59:40.53

View file

@ -0,0 +1,141 @@
<?xml version="1.0" ?>
<ResourceDictionary xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<DrawingGroup x:Key="checklist_xaml">
<DrawingGroup.ClipGeometry>
<RectangleGeometry Rect="0.0,0.0,24.0,24.0"/>
</DrawingGroup.ClipGeometry>
<GeometryDrawing Brush="#ff71717a">
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 19.25 7.57692 C 19.25 7.99114 19.5858 8.32692 20 8.32692 C 20.4143 8.32692 20.75 7.99114 20.75 7.57692 H 19.25 Z M 7.54545 21.75 C 7.95967 21.75 8.29545 21.4142 8.29545 21 C 8.29545 20.5858 7.95967 20.25 7.54545 20.25 V 21.75 Z M 16.6569 1.29459 L 17.1885 0.765534 L 16.6569 1.29459 Z M 20.75 7.57692 V 5.06666 H 19.25 V 7.57692 H 20.75 Z M 20.2404 3.83219 L 17.1885 0.765534 L 16.1253 1.82365 L 19.1772 4.8903 L 20.2404 3.83219 Z M 15.9481 0.25 H 2.50004 V 1.75 H 15.9481 V 0.25 Z M 0.250041 2.49999 L 0.250003 19.5 L 1.75 19.5 L 1.75004 2.5 L 0.250041 2.49999 Z M 2.5 21.75 H 7.54545 V 20.25 H 2.5 V 21.75 Z M 0.250003 19.5 C 0.250001 20.7426 1.25736 21.75 2.5 21.75 V 20.25 C 2.08579 20.25 1.75 19.9142 1.75 19.5 L 0.250003 19.5 Z M 2.50004 0.25 C 1.2574 0.25 0.250044 1.25736 0.250041 2.49999 L 1.75004 2.5 C 1.75004 2.08579 2.08583 1.75 2.50004 1.75 V 0.25 Z M 17.1885 0.765534 C 16.86 0.435529 16.4136 0.25 15.9481 0.25 V 1.75 C 16.0146 1.75 16.0783 1.7765 16.1253 1.82365 L 17.1885 0.765534 Z M 20.75 5.06666 C 20.75 4.60398 20.5668 4.16013 20.2404 3.83219 L 19.1772 4.8903 C 19.2239 4.93715 19.25 5.00056 19.25 5.06666 H 20.75 Z" FillRule="Nonzero"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Brush="#ff71717a" Thickness="1.5" DashCap="Round" EndLineCap="Round" StartLineCap="Round"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 5 6 H 15.5752" FillRule="Nonzero"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Brush="#ff71717a" Thickness="1.5" DashCap="Round" EndLineCap="Round" StartLineCap="Round"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 5 11 H 10.2374" FillRule="Nonzero"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Brush="#ff71717a" Thickness="1.5" DashCap="Round" EndLineCap="Round" StartLineCap="Round"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 5 16 H 7.24461" FillRule="Nonzero"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Brush="#ff71717a" Thickness="1.5" DashCap="Flat"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<EllipseGeometry RadiusX="5.5" RadiusY="5.5" Center="17.5,17.5"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Brush="#ff71717a" LineJoin="Round" Thickness="1.5" DashCap="Round" EndLineCap="Round" StartLineCap="Round"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 15.5 18 L 16.5826 19.0826 C 16.8011 19.3011 17.1635 19.2711 17.3431 19.0197 L 19.5 16" FillRule="Nonzero"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup>
<DrawingBrush Stretch="Uniform" Drawing="{StaticResource checklist_xaml}" x:Key="db_checklist_xaml"/>
<DrawingGroup x:Key="entry_xaml">
<DrawingGroup.ClipGeometry>
<RectangleGeometry Rect="0.0,0.0,64.0,64.0"/>
</DrawingGroup.ClipGeometry>
<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Brush="#ff000000" Thickness="3.0" DashCap="Flat"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 33.16 21.45 L 43.07 31.36 L 33.16 41.27"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Brush="#ff000000" Thickness="3.0" DashCap="Flat"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<LineGeometry StartPoint="43.07,31.36" EndPoint="6.72,31.36"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Brush="#ff000000" Thickness="3.0" DashCap="Flat"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 22.3 37.69 V 51.45 a 2.8 2.8 0 0 0 2.8 2.81 H 50.33 a 2.8 2.8 0 0 0 2.8 -2.81 V 11.27 a 2.8 2.8 0 0 0 -2.8 -2.8 H 25.1 a 2.8 2.8 0 0 0 -2.8 2.8 V 24.51" FillRule="Nonzero"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup>
<DrawingImage Drawing="{StaticResource entry_xaml}" x:Key="di_entry_xaml"/>
<DrawingGroup x:Key="exit_xaml">
<DrawingGroup.ClipGeometry>
<RectangleGeometry Rect="0.0,0.0,64.0,64.0"/>
</DrawingGroup.ClipGeometry>
<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Brush="#ff000000" Thickness="3.0" DashCap="Flat"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 46.02 21.95 L 55.93 31.86 L 46.02 41.77"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Brush="#ff000000" Thickness="3.0" DashCap="Flat"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<LineGeometry StartPoint="55.93,31.86" EndPoint="19.59,31.86"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Brush="#ff000000" Thickness="3.0" DashCap="Flat"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 40 38.18 V 52 a 2.8 2.8 0 0 1 -2.81 2.8 H 12 A 2.8 2.8 0 0 1 9.16 52 V 11.77 A 2.8 2.8 0 0 1 12 9 H 37.19 A 2.8 2.8 0 0 1 40 11.77 V 25" FillRule="Nonzero"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup>
<DrawingImage Drawing="{StaticResource exit_xaml}" x:Key="di_exit_xaml"/>
<DrawingGroup x:Key="info_square_xaml">
<DrawingGroup.ClipGeometry>
<RectangleGeometry Rect="0.0,0.0,24.0,24.0"/>
</DrawingGroup.ClipGeometry>
<GeometryDrawing Brush="#ff1c274c">
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 13 8 C 13 7.44772 12.5523 7 12 7 C 11.4477 7 11 7.44772 11 8 C 11 8.55228 11.4477 9 12 9 C 12.5523 9 13 8.55228 13 8 Z" FillRule="Nonzero"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing Brush="#ff1c274c">
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 12 17.75 C 12.4142 17.75 12.75 17.4142 12.75 17 V 11 C 12.75 10.5858 12.4142 10.25 12 10.25 C 11.5858 10.25 11.25 10.5858 11.25 11 V 17 C 11.25 17.4142 11.5858 17.75 12 17.75 Z" FillRule="Nonzero"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing Brush="#ff1c274c">
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 12.0574 1.25 H 11.9426 C 9.63424 1.24999 7.82519 1.24998 6.41371 1.43975 C 4.96897 1.63399 3.82895 2.03933 2.93414 2.93414 C 2.03933 3.82895 1.63399 4.96897 1.43975 6.41371 C 1.24998 7.82519 1.24999 9.63422 1.25 11.9426 V 12.0574 C 1.24999 14.3658 1.24998 16.1748 1.43975 17.5863 C 1.63399 19.031 2.03933 20.1711 2.93414 21.0659 C 3.82895 21.9607 4.96897 22.366 6.41371 22.5603 C 7.82519 22.75 9.63423 22.75 11.9426 22.75 H 12.0574 C 14.3658 22.75 16.1748 22.75 17.5863 22.5603 C 19.031 22.366 20.1711 21.9607 21.0659 21.0659 C 21.9607 20.1711 22.366 19.031 22.5603 17.5863 C 22.75 16.1748 22.75 14.3658 22.75 12.0574 V 11.9426 C 22.75 9.63423 22.75 7.82519 22.5603 6.41371 C 22.366 4.96897 21.9607 3.82895 21.0659 2.93414 C 20.1711 2.03933 19.031 1.63399 17.5863 1.43975 C 16.1748 1.24998 14.3658 1.24999 12.0574 1.25 Z M 3.9948 3.9948 C 4.56445 3.42514 5.33517 3.09825 6.61358 2.92637 C 7.91356 2.75159 9.62177 2.75 12 2.75 C 14.3782 2.75 16.0864 2.75159 17.3864 2.92637 C 18.6648 3.09825 19.4355 3.42514 20.0052 3.9948 C 20.5749 4.56445 20.9018 5.33517 21.0736 6.61358 C 21.2484 7.91356 21.25 9.62177 21.25 12 C 21.25 14.3782 21.2484 16.0864 21.0736 17.3864 C 20.9018 18.6648 20.5749 19.4355 20.0052 20.0052 C 19.4355 20.5749 18.6648 20.9018 17.3864 21.0736 C 16.0864 21.2484 14.3782 21.25 12 21.25 C 9.62177 21.25 7.91356 21.2484 6.61358 21.0736 C 5.33517 20.9018 4.56445 20.5749 3.9948 20.0052 C 3.42514 19.4355 3.09825 18.6648 2.92637 17.3864 C 2.75159 16.0864 2.75 14.3782 2.75 12 C 2.75 9.62177 2.75159 7.91356 2.92637 6.61358 C 3.09825 5.33517 3.42514 4.56445 3.9948 3.9948 Z"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup>
<DrawingImage Drawing="{StaticResource info_square_xaml}" x:Key="di_info_square_xaml"/>
</ResourceDictionary>

View file

@ -0,0 +1,33 @@
<?xml version="1.0" ?>
<ResourceDictionary xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<DrawingGroup x:Key="entry_xaml">
<DrawingGroup.ClipGeometry>
<RectangleGeometry Rect="0.0,0.0,64.0,64.0"/>
</DrawingGroup.ClipGeometry>
<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Brush="#ff000000" Thickness="3.0" DashCap="Flat"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 33.16 21.45 L 43.07 31.36 L 33.16 41.27"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Brush="#ff000000" Thickness="3.0" DashCap="Flat"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<LineGeometry StartPoint="43.07,31.36" EndPoint="6.72,31.36"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Brush="#ff000000" Thickness="3.0" DashCap="Flat"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 22.3 37.69 V 51.45 a 2.8 2.8 0 0 0 2.8 2.81 H 50.33 a 2.8 2.8 0 0 0 2.8 -2.81 V 11.27 a 2.8 2.8 0 0 0 -2.8 -2.8 H 25.1 a 2.8 2.8 0 0 0 -2.8 2.8 V 24.51" FillRule="Nonzero"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup>
<DrawingImage Drawing="{StaticResource entry_xaml}" x:Key="di_entry_xaml"/>
</ResourceDictionary>

View file

@ -0,0 +1,33 @@
<?xml version="1.0" ?>
<ResourceDictionary xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<DrawingGroup x:Key="exit_xaml">
<DrawingGroup.ClipGeometry>
<RectangleGeometry Rect="0.0,0.0,64.0,64.0"/>
</DrawingGroup.ClipGeometry>
<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Brush="#ff000000" Thickness="3.0" DashCap="Flat"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 46.02 21.95 L 55.93 31.86 L 46.02 41.77"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Brush="#ff000000" Thickness="3.0" DashCap="Flat"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<LineGeometry StartPoint="55.93,31.86" EndPoint="19.59,31.86"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Brush="#ff000000" Thickness="3.0" DashCap="Flat"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 40 38.18 V 52 a 2.8 2.8 0 0 1 -2.81 2.8 H 12 A 2.8 2.8 0 0 1 9.16 52 V 11.77 A 2.8 2.8 0 0 1 12 9 H 37.19 A 2.8 2.8 0 0 1 40 11.77 V 25" FillRule="Nonzero"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup>
<DrawingImage Drawing="{StaticResource exit_xaml}" x:Key="di_exit_xaml"/>
</ResourceDictionary>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" ?>
<ResourceDictionary xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<DrawingGroup x:Key="info_square_xaml">
<DrawingGroup.ClipGeometry>
<RectangleGeometry Rect="0.0,0.0,24.0,24.0"/>
</DrawingGroup.ClipGeometry>
<GeometryDrawing Brush="#ff1c274c">
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 13 8 C 13 7.44772 12.5523 7 12 7 C 11.4477 7 11 7.44772 11 8 C 11 8.55228 11.4477 9 12 9 C 12.5523 9 13 8.55228 13 8 Z" FillRule="Nonzero"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing Brush="#ff1c274c">
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 12 17.75 C 12.4142 17.75 12.75 17.4142 12.75 17 V 11 C 12.75 10.5858 12.4142 10.25 12 10.25 C 11.5858 10.25 11.25 10.5858 11.25 11 V 17 C 11.25 17.4142 11.5858 17.75 12 17.75 Z" FillRule="Nonzero"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing Brush="#ff1c274c">
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 12.0574 1.25 H 11.9426 C 9.63424 1.24999 7.82519 1.24998 6.41371 1.43975 C 4.96897 1.63399 3.82895 2.03933 2.93414 2.93414 C 2.03933 3.82895 1.63399 4.96897 1.43975 6.41371 C 1.24998 7.82519 1.24999 9.63422 1.25 11.9426 V 12.0574 C 1.24999 14.3658 1.24998 16.1748 1.43975 17.5863 C 1.63399 19.031 2.03933 20.1711 2.93414 21.0659 C 3.82895 21.9607 4.96897 22.366 6.41371 22.5603 C 7.82519 22.75 9.63423 22.75 11.9426 22.75 H 12.0574 C 14.3658 22.75 16.1748 22.75 17.5863 22.5603 C 19.031 22.366 20.1711 21.9607 21.0659 21.0659 C 21.9607 20.1711 22.366 19.031 22.5603 17.5863 C 22.75 16.1748 22.75 14.3658 22.75 12.0574 V 11.9426 C 22.75 9.63423 22.75 7.82519 22.5603 6.41371 C 22.366 4.96897 21.9607 3.82895 21.0659 2.93414 C 20.1711 2.03933 19.031 1.63399 17.5863 1.43975 C 16.1748 1.24998 14.3658 1.24999 12.0574 1.25 Z M 3.9948 3.9948 C 4.56445 3.42514 5.33517 3.09825 6.61358 2.92637 C 7.91356 2.75159 9.62177 2.75 12 2.75 C 14.3782 2.75 16.0864 2.75159 17.3864 2.92637 C 18.6648 3.09825 19.4355 3.42514 20.0052 3.9948 C 20.5749 4.56445 20.9018 5.33517 21.0736 6.61358 C 21.2484 7.91356 21.25 9.62177 21.25 12 C 21.25 14.3782 21.2484 16.0864 21.0736 17.3864 C 20.9018 18.6648 20.5749 19.4355 20.0052 20.0052 C 19.4355 20.5749 18.6648 20.9018 17.3864 21.0736 C 16.0864 21.2484 14.3782 21.25 12 21.25 C 9.62177 21.25 7.91356 21.2484 6.61358 21.0736 C 5.33517 20.9018 4.56445 20.5749 3.9948 20.0052 C 3.42514 19.4355 3.09825 18.6648 2.92637 17.3864 C 2.75159 16.0864 2.75 14.3782 2.75 12 C 2.75 9.62177 2.75159 7.91356 2.92637 6.61358 C 3.09825 5.33517 3.42514 4.56445 3.9948 3.9948 Z"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup>
<DrawingImage Drawing="{StaticResource info_square_xaml}" x:Key="di_info_square_xaml"/>
</ResourceDictionary>

View file

@ -26,8 +26,12 @@ namespace eDosStation
public string TestCSN { get; set; } public string TestCSN { get; set; }
public string TestCode { get; set; } public string TestCode { get; set; }
public string Reader { get; internal set; } public string Reader { get; internal set; }
public string ReaderName {
get { if (isElatec) return $"Elatec: {ElatecPort}/{ElatecFW}"; else return $"RFID {Reader}"; }
}
public bool isElatec { get; internal set; } public bool isElatec { get; internal set; }
public string ElatecPort { get; internal set; } public string ElatecPort { get; internal set; }
public string ElatecFW { get; internal set; }
public bool useTestButtons { get; set; } public bool useTestButtons { get; set; }
public byte useBeep { get; set; } public byte useBeep { get; set; }
public bool checkUser { get; internal set; } public bool checkUser { get; internal set; }
@ -76,12 +80,12 @@ namespace eDosStation
return beepMk3Map[useBeep]; return beepMk3Map[useBeep];
else return beepMk3Map[0b00011010]; else return beepMk3Map[0b00011010];
} }
public Station(DataInterface mDataInterface, string Station) public Station(DataInterface mDataInterface, string Station, App curApp)
{ {
const string module = "StationInit"; const string module = "StationInit";
string step = null; string step = null;
ReceivedPersid = null; ReceivedPersid = null;
splunkLog = new spl1(Environment.MachineName); splunkLog = new spl1(Environment.MachineName,hourlyLog:true);
stationLog = null; stationLog = null;
dataInterface = mDataInterface; dataInterface = mDataInterface;
Error = 0; Error = 0;
@ -97,13 +101,18 @@ namespace eDosStation
LogAll = bool.Parse(System.Configuration.ConfigurationManager.AppSettings["LogAll"]); LogAll = bool.Parse(System.Configuration.ConfigurationManager.AppSettings["LogAll"]);
else else
LogAll = false; LogAll = false;
if (System.Configuration.ConfigurationManager.AppSettings["Elatec"] != null) { if (!String.IsNullOrEmpty(curApp.elatecPort))
ElatecPort = System.Configuration.ConfigurationManager.AppSettings["Elatec"]; {
if (!string.IsNullOrWhiteSpace(ElatecPort)) isElatec = true; ElatecPort = curApp.elatecPort;
} else ElatecFW = curApp.elatecFirmware;
isElatec = false; }
//else if (System.Configuration.ConfigurationManager.AppSettings["Elatec"] != null)
//{
// ElatecPort = System.Configuration.ConfigurationManager.AppSettings["Elatec"];
// ElatecFW = "EDOS000";
//}
isElatec = (!string.IsNullOrWhiteSpace(ElatecPort) && ElatecFW.StartsWith("EDOS",StringComparison.CurrentCultureIgnoreCase));
if (System.Configuration.ConfigurationManager.AppSettings["WriteConfig"] != null) if (System.Configuration.ConfigurationManager.AppSettings["WriteConfig"] != null)
WriteConfig = bool.Parse(System.Configuration.ConfigurationManager.AppSettings["WriteConfig"]); WriteConfig = bool.Parse(System.Configuration.ConfigurationManager.AppSettings["WriteConfig"]);
@ -143,7 +152,13 @@ namespace eDosStation
object[] Values = new object[rs.FieldCount]; object[] Values = new object[rs.FieldCount];
int rv = rs.GetValues(Values); int rv = rs.GetValues(Values);
ID_Station = (int)Values[rs.GetOrdinal("ID_Station")]; ID_Station = (int)Values[rs.GetOrdinal("ID_Station")];
ComPort = (int)Values[rs.GetOrdinal("ComPort")];
ComPort = 0;
if (!string.IsNullOrEmpty(curApp.eDosPort) && curApp.eDosPort.StartsWith("COM",StringComparison.CurrentCultureIgnoreCase))
{
if (int.TryParse(curApp.eDosPort.Substring(3), out int port)) ComPort = port;
}
if (ComPort == 0) ComPort = (int)Values[rs.GetOrdinal("ComPort")];
Inst_CODE1 = rs.IntOrDefault("Inst_CODE1", 0); Inst_CODE1 = rs.IntOrDefault("Inst_CODE1", 0);
Inst_CODE2 = rs.IntOrDefault("Inst_CODE2", 0); Inst_CODE2 = rs.IntOrDefault("Inst_CODE2", 0);
@ -151,7 +166,12 @@ namespace eDosStation
Inst_Name2 = rs.StringOrDefault("Inst_Name2", string.Empty); Inst_Name2 = rs.StringOrDefault("Inst_Name2", string.Empty);
TestCSN = rs.StringOrDefault("TestCSN", string.Empty); TestCSN = rs.StringOrDefault("TestCSN", string.Empty);
if (!isElatec) Reader = rs.StringOrDefault("Reader", string.Empty); else Reader = string.Empty; Reader = string.Empty;
if (!isElatec) {
if (!string.IsNullOrEmpty(curApp.RFIDReader)) Reader = curApp.RFIDReader;
else Reader = rs.StringOrDefault("Reader", string.Empty);
}
useTestButtons = rs.BoolOrDefault("useTestButtons", false); useTestButtons = rs.BoolOrDefault("useTestButtons", false);
useBeep = rs.ByteOrDefault("useBeep", 0b00010110); useBeep = rs.ByteOrDefault("useBeep", 0b00010110);
doLog = rs.BoolOrDefault("doLog", false); doLog = rs.BoolOrDefault("doLog", false);
@ -174,7 +194,12 @@ namespace eDosStation
TestCSN = System.Configuration.ConfigurationManager.AppSettings["TestCSN"]; TestCSN = System.Configuration.ConfigurationManager.AppSettings["TestCSN"];
TestCode = System.Configuration.ConfigurationManager.AppSettings["TestCode"]; TestCode = System.Configuration.ConfigurationManager.AppSettings["TestCode"];
Changed = true; Changed = true;
if (!isElatec) Reader = System.Configuration.ConfigurationManager.AppSettings["Reader"]; else Reader = string.Empty; Reader = string.Empty;
if (!isElatec)
{
if (!string.IsNullOrEmpty(curApp.RFIDReader)) Reader = curApp.RFIDReader;
else Reader = System.Configuration.ConfigurationManager.AppSettings["Reader"];
}
checkUser = false; checkUser = false;
EPDTimeOut = 10000; EPDTimeOut = 10000;
EPDRetries = 2; EPDRetries = 2;
@ -234,14 +259,11 @@ namespace eDosStation
} }
co?.Close(); co?.Close();
} }
DevCon = new cDevCon(ComPort, splunkLog); DevCon = new cDevCon(ComPort, splunkLog);
if (isElatec) openElatec(); if (isElatec) openElatec();
} }
private void CmdSetParams(SqlCommand cmd) private void CmdSetParams(SqlCommand cmd)
{ {
try try
{ {
cmd.SetIfExists("ComPort", ComPort); cmd.SetIfExists("ComPort", ComPort);
@ -299,6 +321,8 @@ namespace eDosStation
public void UpdateAppSettings() public void UpdateAppSettings()
{ {
const string module = "UpdateAppSettings";
string step = null;
string[] Keys = { "LogAll", "Elatec" } ; string[] Keys = { "LogAll", "Elatec" } ;
string[] Values = { "false" ,"" }; string[] Values = { "false" ,"" };
@ -306,6 +330,7 @@ namespace eDosStation
Values[1] = ElatecPort; Values[1] = ElatecPort;
try try
{ {
step = "open";
var configFile = System.Configuration.ConfigurationManager.OpenExeConfiguration(System.Configuration.ConfigurationUserLevel.None); var configFile = System.Configuration.ConfigurationManager.OpenExeConfiguration(System.Configuration.ConfigurationUserLevel.None);
var settings = configFile.AppSettings.Settings; var settings = configFile.AppSettings.Settings;
for (int idx = 0; idx < Keys.Length; idx++) for (int idx = 0; idx < Keys.Length; idx++)
@ -319,12 +344,14 @@ namespace eDosStation
settings[Keys[idx]].Value = Values[idx]; settings[Keys[idx]].Value = Values[idx];
} }
} }
step = "save";
configFile.Save(System.Configuration.ConfigurationSaveMode.Modified); configFile.Save(System.Configuration.ConfigurationSaveMode.Modified);
step = "refresh";
System.Configuration.ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name); System.Configuration.ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);
} }
catch (System.Configuration.ConfigurationErrorsException) catch (System.Exception ex)
{ {
splunkLog?.WriteException(module, step, ex);
} }
} }
public void Update() public void Update()
@ -407,7 +434,6 @@ namespace eDosStation
if (!int.TryParse(v, out PersID)) PersID = 0; if (!int.TryParse(v, out PersID)) PersID = 0;
ReceivedPersid(PersID); ReceivedPersid(PersID);
} }
} }
} }
} }

View file

@ -0,0 +1,32 @@
<UserControl x:Class="eDosStation.TimeColor"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:eDosStation"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<UserControl.Resources>
</UserControl.Resources>
<Rectangle>
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,4" >
<LinearGradientBrush.Transform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform Angle="-90"/>
<TranslateTransform/>
</TransformGroup>
</LinearGradientBrush.Transform>
<GradientStop Color="Green" />
<GradientStop Color="Yellow" Offset="0.2" />
<GradientStop Color="Red" Offset="0.7"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
</UserControl>

View file

@ -0,0 +1,44 @@
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.Navigation;
using System.Windows.Shapes;
namespace eDosStation
{
/// <summary>
/// Interaction logic for TimeColor.xaml
/// </summary>
public partial class TimeColor : UserControl
{
public DateTime ExpireDate
{
get { return (DateTime)GetValue(ExpireDateProperty); }
set { SetValue(ExpireDateProperty, value); }
}
// Using a DependencyProperty as the backing store for Property1.
// This enables animation, styling, binding, etc...
public static readonly DependencyProperty ExpireDateProperty
= DependencyProperty.Register(
"ExpireDate",
typeof(DateTime),
typeof(TimeColor),
new PropertyMetadata(DateTime.Now)
);
public TimeColor()
{
InitializeComponent();
}
}
}

View file

@ -5,83 +5,102 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:eDosStation" xmlns:local="clr-namespace:eDosStation"
mc:Ignorable="d" mc:Ignorable="d"
Title="UserInfo" Height="450" Width="800"> Title="UserInfo"
Height="814.417" Width="1316.258"
FontFamily="Segoe UI"
FontSize="36"
WindowStartupLocation="CenterScreen" WindowState="Maximized" WindowStyle="None"
Loaded="Window_Loaded" >
<Border BorderBrush="{StaticResource sckbP}" BorderThickness="10" Margin="0,0,0,-178">
<Grid Name="G1" Margin="48,0,12,0" >
<Grid.RowDefinitions >
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto"/>
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="300" />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Border Grid.Row="0" Grid.ColumnSpan="5" Height="auto" BorderThickness="5" BorderBrush="{StaticResource sckbP}" >
<TextBlock Text="Overzicht documenten en status" FontSize="50" FontWeight="Bold" HorizontalAlignment="Center" Margin="10,10,10,10" />
</Border>
<Line Grid.Row="2" Height="50" />
<TextBlock Grid.Row="3" Grid.Column="1" Text="Leenaers" Name="LastName" Style="{DynamicResource UserInfoNameItem}"/>
<TextBlock Grid.Row="3" Grid.Column="2" Text="Ann" Name="FirstName" Style="{DynamicResource UserInfoNameItem}"/>
<TextBlock Grid.Row="3" Grid.Column="3" Text="W" Name="Type" Style="{DynamicResource UserInfoNameItem}"/>
<TextBlock Grid.Row="3" Grid.Column="4" Text="Blue" Name="BadgeColor" Visibility="Collapsed" />
<Line Grid.Row="4" Grid.ColumnSpan="4" Stroke="Blue" Height="1" Margin="0,10,0,10" />
<Grid> <TextBlock Grid.Row="6" Grid.Column="1" Text="Status" HorizontalAlignment="Left" FontWeight="Bold" Style="{StaticResource UserInfoItemStatus}"/>
<TextBlock Grid.Row="6" Grid.Column="2" Text="Expires" HorizontalAlignment="Left" FontWeight="Bold" Style="{StaticResource UserInfoItemExpires}"/>
<StackPanel <TextBlock Grid.Row="7" Grid.Column="0" Text="Quiz" Style="{StaticResource UserInfoItemTitle}"/>
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" <TextBlock Grid.Row="7" Grid.Column="1" Text="OK" Name="QuizOK" Style="{StaticResource UserInfoItemStatus}"/>
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" <TextBlock Grid.Row="7" Grid.Column="2" Text="end" Name="QuizExpiry" Style="{StaticResource UserInfoItemExpires}"/>
Background="Cornsilk">
<StackPanel.Resources>
<XmlDataProvider x:Key="InventoryData" XPath="Inventory/Books">
<x:XData>
<Inventory xmlns="">
<Books>
<Book ISBN="0-7356-0562-9" Stock="in" Number="9">
<Title>XML in Action</Title>
<Summary>XML Web Technology</Summary>
</Book>
<Book ISBN="0-7356-1370-2" Stock="in" Number="8">
<Title>Programming Microsoft Windows With C#</Title>
<Summary>C# Programming using the .NET Framework</Summary>
</Book>
<Book ISBN="0-7356-1288-9" Stock="out" Number="7">
<Title>Inside C#</Title>
<Summary>C# Language Programming</Summary>
</Book>
<Book ISBN="0-7356-1377-X" Stock="in" Number="5">
<Title>Introducing Microsoft .NET</Title>
<Summary>Overview of .NET Technology</Summary>
</Book>
<Book ISBN="0-7356-1448-2" Stock="out" Number="4">
<Title>Microsoft C# Language Specifications</Title>
<Summary>The C# language definition</Summary>
</Book>
</Books>
<CDs>
<CD Stock="in" Number="3">
<Title>Classical Collection</Title>
<Summary>Classical Music</Summary>
</CD>
<CD Stock="out" Number="9">
<Title>Jazz Collection</Title>
<Summary>Jazz Music</Summary>
</CD>
</CDs>
</Inventory>
</x:XData>
</XmlDataProvider>
</StackPanel.Resources>
<TextBlock FontSize="18" FontWeight="Bold" Margin="10" <TextBlock Grid.Row="8" Grid.Column="0" Text="Document A" Style="{StaticResource UserInfoItemTitle}"/>
HorizontalAlignment="Center">XML Data Source Sample</TextBlock> <TextBlock Grid.Row="8" Grid.Column="2" Text="end" Name="RFEnd" Style="{StaticResource UserInfoItemExpires}"/>
<ListBox
Width="400" Height="300" Background="Honeydew">
<ListBox.ItemsSource>
<Binding Source="{StaticResource InventoryData}"
XPath="*[@Stock='out'] | *[@Number>=8 or @Number=3]"/>
</ListBox.ItemsSource>
<!--Alternatively, you can do the following. --> <TextBlock Grid.Row="9" Grid.Column="0" Text="Medic" Style="{StaticResource UserInfoItemTitle}"/>
<!--<ListBox Width="400" Height="300" Background="Honeydew" <TextBlock Grid.Row="9" Grid.Column="1" Text="ok" Name="MedicOK" Style="{StaticResource UserInfoItemStatus}"/>
ItemsSource="{Binding Source={StaticResource InventoryData}, <TextBlock Grid.Row="9" Grid.Column="2" Text="End" Name="MedicExpiry" Style="{StaticResource UserInfoItemExpires}"/>
XPath=*[@Stock\=\'out\'] | *[@Number>\=8 or @Number\=3]}">-->
<TextBlock Grid.Row="10" Grid.Column="0" Text="Bunker" Style="{StaticResource UserInfoItemTitle}" />
<TextBlock Grid.Row="10" Grid.Column="1" Text="ok" Name="InVivoOK" Style="{StaticResource UserInfoItemStatus}"/>
<TextBlock Grid.Row="10" Grid.Column="2" Text="" Name="InVivoWbcExpiry" Style="{StaticResource UserInfoItemExpires}"/>
<!--<TextBlock Grid.Row="10" Grid.Column="3" Text="Freq:" Name="InVivoWbcFreq" Style="{StaticResource UserInfoItem}"/>-->
<TextBlock Grid.Row="11" Grid.Column="0" Text="LRM" Style="{StaticResource UserInfoItemTitle}" />
<TextBlock Grid.Row="11" Grid.Column="1" Text="ok" Name="InVitroOK" Style="{StaticResource UserInfoItemStatus}"/>
<TextBlock Grid.Row="11" Grid.Column="2" Text="" Name="InVitroExpiry" Style="{StaticResource UserInfoItemExpires}"/>
<!--<TextBlock Grid.Row="11" Grid.Column="3" Text="Freq:" Name="InVitroFreq" Style="{StaticResource UserInfoItem}"/>-->
<TextBlock Grid.Row="12" Grid.Column="0" Text="Clearance" Style="{StaticResource UserInfoItemTitle}"/>
<TextBlock Grid.Row="12" Grid.Column="1" Text="ok" Name="VxColor" Style="{StaticResource UserInfoItemStatus}"/>
<TextBlock Grid.Row="12" Grid.Column="2" Text="End" Name="VxExpiry" Style="{StaticResource UserInfoItemExpires}"/>
<TextBlock Grid.Row="13" Grid.Column="0" Text="eDos ACCESS" Style="{StaticResource UserInfoItemTitle}"/>
<TextBlock Grid.Row="13" Grid.Column="1" Text="" Name="AccessAllow" Style="{StaticResource UserInfoItemStatus}"/>
<TextBlock Grid.Row="14" Grid.Column="0" Text="Comment" Style="{StaticResource UserInfoItemTitle}"/>
<TextBlock Grid.Row="14" Grid.Column="1" Text="" Name="Comment" Style="{StaticResource UserInfoItem}"/>
<TextBlock Grid.Row="15" Grid.Column="0" Text="Visit with Alarm" Style="{StaticResource UserInfoItemTitle}"/>
<TextBlock Grid.Row="15" Grid.Column="1" Text="" Name="VisitLocked" Style="{StaticResource UserInfoItem}"/>
<TextBlock Grid.Row="16" Grid.Column="0" Text="Dosislimiet" Style="{StaticResource UserInfoItemTitle}"/>
<TextBlock Grid.Row="16" Grid.Column="2" Text="1000UsV" Name="MarginHP10_Y" Style="{StaticResource UserInfoItem}"/>
<telerik:RadButton Grid.Row="17" Grid.Column="0" Grid.ColumnSpan="5" Content="OK" Name="cmdOK" Width="350" Height="50" Margin="5,50,5,0" Click="cmdOK_Click" />
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock FontSize="12" Foreground="Red">
<TextBlock.Text>
<Binding XPath="Title"/>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</Grid> </Grid>
</Border>
</Window> </Window>

View file

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data;
using System.Linq; using System.Linq;
using System.Reflection.Emit; using System.Reflection.Emit;
using System.Text; using System.Text;
@ -12,7 +13,9 @@ using System.Windows.Input;
using System.Windows.Media; using System.Windows.Media;
using System.Windows.Media.Imaging; using System.Windows.Media.Imaging;
using System.Windows.Shapes; using System.Windows.Shapes;
using System.Windows.Threading;
using System.Xml; using System.Xml;
using Telerik.Windows.Input.Touch;
namespace eDosStation namespace eDosStation
{ {
@ -21,18 +24,213 @@ namespace eDosStation
/// </summary> /// </summary>
public partial class UserInfo : Window public partial class UserInfo : Window
{ {
public XmlDocument UInfo; int PersID;
public UserInfo() DataTable dsInfo;
DataSet1.GetPersonOverviewRow rw;
GridLength glz = new GridLength(0);
Station station;
public UserInfo( Station s, int persid)
{ {
InitializeComponent(); InitializeComponent();
PersID = persid;
if (PersID == 0)
{
station = s;
s.ReceivedPersid = Pelatec_DataReceived;
}
} }
public void LoadInfo() private void showBadge(int persid)
{ {
const string testInfo = "<Info PersID=\"17183\" Name=\"Mutert\" FirstName=\"Peter\" Group=\"W\" badgeColor=\"Blue\" RFStart=\"2006-01-01\" RFEnd=\"2046-07-31\" MedicOK=\"1\" MedicExpiry=\"2025-04-09\" MedicCat=\"A\" QuizOK=\"1\" QuizDate=\"2024-08-06T09:13:24.643\" QuizExpiry=\"2025-08-06\" InVitroReq=\"0\" InVitroFreq=\"0\" InVitroOK=\"1\" InVivoReq=\"1\" InVivoWbcFreq=\"1\" InVivoWbcExpiry=\"2025-12-04\" InVivoLungFreq=\"1\" InVivoLungExpiry=\"2025-12-04\" InVivoOK=\"1\" VxMinLevel=\"2\" VxColor=\"1\" VxExpiry=\"2028-03-17\" VxType=\"1\" hasVx=\"1\" />"; PersID = persid;
UInfo = new XmlDocument(); dataLoad();
UInfo.LoadXml(testInfo);
}
private void Pelatec_DataReceived(int PersID)
{
this.Dispatcher.InvokeAsync(new Action(() => showBadge(PersID)), DispatcherPriority.Background);
}
private void cmdOK_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
private void SetEmpty()
{
LastName.Text = "Please scan your badge";
FirstName.Text = string.Empty;
Type.Text = string.Empty;
BadgeColor.Text = string.Empty;
QuizExpiry.Text = string.Empty;
MedicExpiry.Text = string.Empty;
RFEnd.Text = string.Empty;
BadgeColor.Text = string.Empty;
QuizOK.Text = string.Empty;
MedicOK.Text = string.Empty;
int r = Grid.GetRow(InVivoOK);
RowDefinition rowDef = G1.RowDefinitions[r];
rowDef.Height = glz;
r = Grid.GetRow(InVitroOK);
rowDef = G1.RowDefinitions[r];
rowDef.Height = glz;
VxExpiry.Text = string.Empty;
VxColor.Text = string.Empty;
}
void setTBExpiry(TextBlock tb, DateTime? exp, bool? ok)
{
Brush rv;
if (ok.HasValue && !ok.Value)
{
rv = Converters.cbRed;
}
else
{
if (exp.HasValue)
{
DateTime dt = exp.Value;
int weeks = (int)((dt - DateTime.Today).TotalDays / 7.0);
if (weeks > 2) rv = Converters.cbGreen;
else if (weeks > -1) rv = Converters.cbYellow;
else rv = Converters.cbRed;
}
else
rv = Converters.cbGray;
}
if (exp.HasValue) tb.Text = exp.Value.ToString("yyyy-MM-dd"); else tb.Text = string.Empty;
tb.Background = rv;
}
void setTB( TextBlock tb, bool? ok, string yes="OK", string no = "Not OK")
{
if ( ok.HasValue && ok.Value)
{
tb.Text = yes;
tb.Background = Converters.cbGreen;
} else
{
tb.Text = no;
tb.Background = Converters.cbGreen;
}
}
private void dataLoad()
{
rw = null;
using (var ta = new DataSet1TableAdapters.GetPersonOverviewTableAdapter())
{
dsInfo = ta.GetData(PersID);
if (dsInfo != null && dsInfo.Rows.Count > 0) rw = dsInfo.Rows[0] as DataSet1.GetPersonOverviewRow;
}
if (rw != null)
{
LastName.Text = rw.LastName;
FirstName.Text = rw.FirstName;
Type.Text = rw.Type;
MarginHP10_Y.Text = rw.MarginHP10_Y.ToString() + " µSv";
if (rw.VisitIDLocked > 0)
VisitLocked.Text = rw.VisitIDLocked.ToString();
else
VisitLocked.Text = string.Empty;
bool? bAccessAllow = rw.AccessAllow as bool?;
setTB(AccessAllow, bAccessAllow, no: "No Access");
Comment.Text = rw.ReasonNoAccess;
if (!rw.IsinfoNull())
{
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(rw.info);
var nl = xmlDocument.SelectSingleNode("Info[1]") as XmlElement;
//QuizDate.Text = XmlConvert.ToDateTime(nl.GetAttribute("QuizDate"), XmlDateTimeSerializationMode.Local).ToString("yyyy-MM-dd");
bool bQuizOK = XmlConvert.ToBoolean(nl.GetAttribute("QuizOK"));
setTB(QuizOK, bQuizOK);
setTBExpiry(QuizExpiry, XmlConvert.ToDateTime( nl.GetAttribute("QuizExpiry"), XmlDateTimeSerializationMode.Local), bQuizOK);
bool bMedicOK = XmlConvert.ToBoolean(nl.GetAttribute("MedicOK"));
setTB(MedicOK, bMedicOK);
setTBExpiry(MedicExpiry, XmlConvert.ToDateTime(nl.GetAttribute("MedicExpiry"), XmlDateTimeSerializationMode.Local),bMedicOK);
setTBExpiry(RFEnd, XmlConvert.ToDateTime(nl.GetAttribute("RFEnd"), XmlDateTimeSerializationMode.Local), null);
BadgeColor.Text = nl.GetAttribute("badgeColor");
bool BunkerReq = XmlConvert.ToBoolean(nl.GetAttribute("InVivoReq"));
int r = Grid.GetRow(InVivoOK);
RowDefinition rowDef = G1.RowDefinitions[r];
rowDef.Height = BunkerReq ? GridLength.Auto : glz;
if (BunkerReq)
{
bool bInvivoOK = XmlConvert.ToBoolean(nl.GetAttribute("InVivoOK"));
//InVivoWbcFreq.Text = nl.GetAttribute("InVivoWbcFreq");
setTB(InVivoOK, bInvivoOK);
setTBExpiry(InVivoWbcExpiry, XmlConvert.ToDateTime(nl.GetAttribute("InVivoWbcExpiry"), XmlDateTimeSerializationMode.Local), bInvivoOK);
}
bool LRMReq = XmlConvert.ToBoolean(nl.GetAttribute("InVitroReq"));
r = Grid.GetRow(InVitroOK);
rowDef = G1.RowDefinitions[r];
rowDef.Height = LRMReq ? GridLength.Auto : glz;
if (LRMReq)
{
bool bInvitroOK = XmlConvert.ToBoolean(nl.GetAttribute("InVitroOK"));
//InVitroFreq.Text = nl.GetAttribute("InVitroFreq");
setTB(InVitroOK, bInvitroOK);
setTBExpiry(InVivoWbcExpiry, XmlConvert.ToDateTime(nl.GetAttribute("InVitroExpiry"), XmlDateTimeSerializationMode.Local), bInvitroOK);
}
bool bVXOK = nl.GetAttribute("VxColor").Equals("1");
setTB(VxColor, bVXOK);
setTBExpiry(VxExpiry, XmlConvert.ToDateTime(nl.GetAttribute("VxExpiry"), XmlDateTimeSerializationMode.Local), bVXOK);
}
else
{
//QuizDate.Text = string.Empty;
QuizExpiry.Text = string.Empty;
MedicExpiry.Text = string.Empty;
//RFStart.Text = string.Empty;
RFEnd.Text = string.Empty;
BadgeColor.Text = string.Empty;
QuizOK.Text = string.Empty;
MedicOK.Text = string.Empty;
int r = Grid.GetRow(InVivoOK);
RowDefinition rowDef = G1.RowDefinitions[r];
rowDef.Height = glz;
r = Grid.GetRow(InVitroOK);
rowDef = G1.RowDefinitions[r];
rowDef.Height = glz;
VxExpiry.Text = string.Empty;
VxColor.Text = string.Empty;
}
}
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
SetEmpty();
if (PersID != 0) dataLoad();
} }
} }
} }

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19.25 7.57692C19.25 7.99114 19.5858 8.32692 20 8.32692C20.4143 8.32692 20.75 7.99114 20.75 7.57692H19.25ZM7.54545 21.75C7.95967 21.75 8.29545 21.4142 8.29545 21C8.29545 20.5858 7.95967 20.25 7.54545 20.25V21.75ZM16.6569 1.29459L17.1885 0.765534L16.6569 1.29459ZM20.75 7.57692V5.06666H19.25V7.57692H20.75ZM20.2404 3.83219L17.1885 0.765534L16.1253 1.82365L19.1772 4.8903L20.2404 3.83219ZM15.9481 0.25H2.50004V1.75H15.9481V0.25ZM0.250041 2.49999L0.250003 19.5L1.75 19.5L1.75004 2.5L0.250041 2.49999ZM2.5 21.75H7.54545V20.25H2.5V21.75ZM0.250003 19.5C0.250001 20.7426 1.25736 21.75 2.5 21.75V20.25C2.08579 20.25 1.75 19.9142 1.75 19.5L0.250003 19.5ZM2.50004 0.25C1.2574 0.25 0.250044 1.25736 0.250041 2.49999L1.75004 2.5C1.75004 2.08579 2.08583 1.75 2.50004 1.75V0.25ZM17.1885 0.765534C16.86 0.435529 16.4136 0.25 15.9481 0.25V1.75C16.0146 1.75 16.0783 1.7765 16.1253 1.82365L17.1885 0.765534ZM20.75 5.06666C20.75 4.60398 20.5668 4.16013 20.2404 3.83219L19.1772 4.8903C19.2239 4.93715 19.25 5.00056 19.25 5.06666H20.75Z" fill="#71717A"/>
<path d="M5 6H15.5752" stroke="#71717A" stroke-width="1.5" stroke-linecap="round"/>
<path d="M5 11H10.2374" stroke="#71717A" stroke-width="1.5" stroke-linecap="round"/>
<path d="M5 16H7.24461" stroke="#71717A" stroke-width="1.5" stroke-linecap="round"/>
<circle cx="17.5" cy="17.5" r="5.5" stroke="#71717A" stroke-width="1.5"/>
<path d="M15.5 18L16.5826 19.0826C16.8011 19.3011 17.1635 19.2711 17.3431 19.0197L19.5 16" stroke="#71717A" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -0,0 +1,54 @@
<?xml version="1.0" ?>
<ResourceDictionary xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<DrawingGroup x:Key="checklist_xaml">
<DrawingGroup.ClipGeometry>
<RectangleGeometry Rect="0.0,0.0,24.0,24.0"/>
</DrawingGroup.ClipGeometry>
<GeometryDrawing Brush="#ff71717a">
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 19.25 7.57692 C 19.25 7.99114 19.5858 8.32692 20 8.32692 C 20.4143 8.32692 20.75 7.99114 20.75 7.57692 H 19.25 Z M 7.54545 21.75 C 7.95967 21.75 8.29545 21.4142 8.29545 21 C 8.29545 20.5858 7.95967 20.25 7.54545 20.25 V 21.75 Z M 16.6569 1.29459 L 17.1885 0.765534 L 16.6569 1.29459 Z M 20.75 7.57692 V 5.06666 H 19.25 V 7.57692 H 20.75 Z M 20.2404 3.83219 L 17.1885 0.765534 L 16.1253 1.82365 L 19.1772 4.8903 L 20.2404 3.83219 Z M 15.9481 0.25 H 2.50004 V 1.75 H 15.9481 V 0.25 Z M 0.250041 2.49999 L 0.250003 19.5 L 1.75 19.5 L 1.75004 2.5 L 0.250041 2.49999 Z M 2.5 21.75 H 7.54545 V 20.25 H 2.5 V 21.75 Z M 0.250003 19.5 C 0.250001 20.7426 1.25736 21.75 2.5 21.75 V 20.25 C 2.08579 20.25 1.75 19.9142 1.75 19.5 L 0.250003 19.5 Z M 2.50004 0.25 C 1.2574 0.25 0.250044 1.25736 0.250041 2.49999 L 1.75004 2.5 C 1.75004 2.08579 2.08583 1.75 2.50004 1.75 V 0.25 Z M 17.1885 0.765534 C 16.86 0.435529 16.4136 0.25 15.9481 0.25 V 1.75 C 16.0146 1.75 16.0783 1.7765 16.1253 1.82365 L 17.1885 0.765534 Z M 20.75 5.06666 C 20.75 4.60398 20.5668 4.16013 20.2404 3.83219 L 19.1772 4.8903 C 19.2239 4.93715 19.25 5.00056 19.25 5.06666 H 20.75 Z" FillRule="Nonzero"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Brush="#ff71717a" Thickness="1.5" DashCap="Round" EndLineCap="Round" StartLineCap="Round"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 5 6 H 15.5752" FillRule="Nonzero"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Brush="#ff71717a" Thickness="1.5" DashCap="Round" EndLineCap="Round" StartLineCap="Round"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 5 11 H 10.2374" FillRule="Nonzero"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Brush="#ff71717a" Thickness="1.5" DashCap="Round" EndLineCap="Round" StartLineCap="Round"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 5 16 H 7.24461" FillRule="Nonzero"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Brush="#ff71717a" Thickness="1.5" DashCap="Flat"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<EllipseGeometry RadiusX="5.5" RadiusY="5.5" Center="17.5,17.5"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing>
<GeometryDrawing.Pen>
<Pen Brush="#ff71717a" LineJoin="Round" Thickness="1.5" DashCap="Round" EndLineCap="Round" StartLineCap="Round"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry Figures="M 15.5 18 L 16.5826 19.0826 C 16.8011 19.3011 17.1635 19.2711 17.3431 19.0197 L 19.5 16" FillRule="Nonzero"/>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup>
<DrawingBrush Stretch="Uniform" Drawing="{StaticResource checklist_xaml}" x:Key="db_checklist_xaml"/>
</ResourceDictionary>

View file

@ -1,285 +1,322 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
xmlns:local="clr-namespace:eDosStation"> xmlns:local="clr-namespace:eDosStation">
<BitmapImage x:Key="iBG" UriSource="Images/EPD-MK2.png" /> <BitmapImage x:Key="iBG" UriSource="Images/EPD-MK2.png" />
<BitmapImage x:Key="iNG" UriSource="Images/EPD-N2.png" /> <BitmapImage x:Key="iNG" UriSource="Images/EPD-N2.png" />
<BitmapImage x:Key="iRD" UriSource="Images/Mk2OnReader.jpg" /> <BitmapImage x:Key="iRD" UriSource="Images/Mk2OnReader.jpg" />
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="HorizontalContentAlignment" Value="Left" /> <Style TargetType="{x:Type ListBoxItem}">
<Setter Property="VerticalContentAlignment" Value="Top" /> <Setter Property="HorizontalContentAlignment" Value="Left" />
</Style> <Setter Property="VerticalContentAlignment" Value="Top" />
</Style>
<Style x:Key="ScrollBarPageButton"
TargetType="{x:Type RepeatButton}"> <Style x:Key="ScrollBarPageButton"
<Setter Property="SnapsToDevicePixels" TargetType="{x:Type RepeatButton}">
Value="True" /> <Setter Property="SnapsToDevicePixels"
<Setter Property="OverridesDefaultStyle" Value="True" />
Value="true" /> <Setter Property="OverridesDefaultStyle"
<Setter Property="IsTabStop" Value="true" />
Value="false" /> <Setter Property="IsTabStop"
<Setter Property="Focusable" Value="false" />
Value="false" /> <Setter Property="Focusable"
<Setter Property="Template"> Value="false" />
<Setter.Value> <Setter Property="Template">
<ControlTemplate TargetType="{x:Type RepeatButton}"> <Setter.Value>
<Border Background="Transparent" /> <ControlTemplate TargetType="{x:Type RepeatButton}">
</ControlTemplate> <Border Background="Transparent" />
</Setter.Value> </ControlTemplate>
</Setter> </Setter.Value>
</Style> </Setter>
</Style>
<Style x:Key="ScrollBarThumb"
TargetType="{x:Type Thumb}"> <Style x:Key="ScrollBarThumb"
<Setter Property="SnapsToDevicePixels" TargetType="{x:Type Thumb}">
Value="True" /> <Setter Property="SnapsToDevicePixels"
<Setter Property="OverridesDefaultStyle" Value="True" />
Value="true" /> <Setter Property="OverridesDefaultStyle"
<Setter Property="IsTabStop" Value="true" />
Value="false" /> <Setter Property="IsTabStop"
<Setter Property="Focusable" Value="false" />
Value="false" /> <Setter Property="Focusable"
<Setter Property="Template"> Value="false" />
<Setter.Value> <Setter Property="Template">
<ControlTemplate TargetType="{x:Type Thumb}"> <Setter.Value>
<Border CornerRadius="12" <ControlTemplate TargetType="{x:Type Thumb}">
Background="Red"> <Border CornerRadius="12"
<Border.Style> Background="Red">
<Style TargetType="{x:Type Border}"> <Border.Style>
<Setter Property="Opacity" <Style TargetType="{x:Type Border}">
Value="0.7" /> <Setter Property="Opacity"
<Style.Triggers> Value="0.7" />
<Trigger Property="IsMouseOver" <Style.Triggers>
Value="True"> <Trigger Property="IsMouseOver"
<Setter Property="Opacity" Value="True">
Value="0.3" /> <Setter Property="Opacity"
</Trigger> Value="0.3" />
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=Thumb}, Path=IsDragging}" </Trigger>
Value="True"> <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=Thumb}, Path=IsDragging}"
<Setter Property="Opacity" Value="True">
Value="0.3" /> <Setter Property="Opacity"
</DataTrigger> Value="0.3" />
</Style.Triggers> </DataTrigger>
</Style> </Style.Triggers>
</Border.Style> </Style>
</Border> </Border.Style>
</ControlTemplate> </Border>
</Setter.Value> </ControlTemplate>
</Setter> </Setter.Value>
</Style> </Setter>
</Style>
<ControlTemplate x:Key="VerticalScrollBar"
TargetType="{x:Type ScrollBar}"> <ControlTemplate x:Key="VerticalScrollBar"
<Grid> TargetType="{x:Type ScrollBar}">
<Grid.RowDefinitions> <Grid>
<RowDefinition Height="0.00001*" /> <Grid.RowDefinitions>
</Grid.RowDefinitions> <RowDefinition Height="0.00001*" />
<Border Grid.RowSpan="3" </Grid.RowDefinitions>
CornerRadius="12" <Border Grid.RowSpan="3"
Background="Gray" CornerRadius="12"
Opacity="0.2" /> Background="Gray"
<Track Name="PART_Track" Opacity="0.2" />
Grid.Row="1" <Track Name="PART_Track"
IsDirectionReversed="true"> Grid.Row="1"
<Track.DecreaseRepeatButton> IsDirectionReversed="true">
<RepeatButton Style="{StaticResource ScrollBarPageButton}" <Track.DecreaseRepeatButton>
Command="ScrollBar.PageUpCommand" /> <RepeatButton Style="{StaticResource ScrollBarPageButton}"
</Track.DecreaseRepeatButton> Command="ScrollBar.PageUpCommand" />
<Track.Thumb> </Track.DecreaseRepeatButton>
<Thumb Style="{StaticResource ScrollBarThumb}" <Track.Thumb>
Margin="1,0,1,0" <Thumb Style="{StaticResource ScrollBarThumb}"
Background="Transparent" /> Margin="1,0,1,0"
</Track.Thumb> Background="Transparent" />
<Track.IncreaseRepeatButton> </Track.Thumb>
<RepeatButton Style="{StaticResource ScrollBarPageButton}" <Track.IncreaseRepeatButton>
Command="ScrollBar.PageDownCommand" /> <RepeatButton Style="{StaticResource ScrollBarPageButton}"
</Track.IncreaseRepeatButton> Command="ScrollBar.PageDownCommand" />
</Track> </Track.IncreaseRepeatButton>
</Grid> </Track>
</ControlTemplate> </Grid>
</ControlTemplate>
<ControlTemplate x:Key="HorizontalScrollBar"
TargetType="{x:Type ScrollBar}"> <ControlTemplate x:Key="HorizontalScrollBar"
<Grid> TargetType="{x:Type ScrollBar}">
<Grid.ColumnDefinitions> <Grid>
<ColumnDefinition MaxWidth="18" /> <Grid.ColumnDefinitions>
<ColumnDefinition Width="0.00001*" /> <ColumnDefinition MaxWidth="18" />
<ColumnDefinition MaxWidth="18" /> <ColumnDefinition Width="0.00001*" />
</Grid.ColumnDefinitions> <ColumnDefinition MaxWidth="18" />
<Border Grid.ColumnSpan="3" </Grid.ColumnDefinitions>
CornerRadius="2" <Border Grid.ColumnSpan="3"
Background="#F0F0F0" /> CornerRadius="2"
<Track Name="PART_Track" Background="#F0F0F0" />
Grid.Column="1" <Track Name="PART_Track"
IsDirectionReversed="False"> Grid.Column="1"
<Track.DecreaseRepeatButton> IsDirectionReversed="False">
<RepeatButton Style="{StaticResource ScrollBarPageButton}" <Track.DecreaseRepeatButton>
Command="ScrollBar.PageLeftCommand" /> <RepeatButton Style="{StaticResource ScrollBarPageButton}"
</Track.DecreaseRepeatButton> Command="ScrollBar.PageLeftCommand" />
<Track.Thumb> </Track.DecreaseRepeatButton>
<Thumb Style="{StaticResource ScrollBarThumb}" <Track.Thumb>
Margin="0,1,0,1" <Thumb Style="{StaticResource ScrollBarThumb}"
Background="Transparent" /> Margin="0,1,0,1"
</Track.Thumb> Background="Transparent" />
<Track.IncreaseRepeatButton> </Track.Thumb>
<RepeatButton Style="{StaticResource ScrollBarPageButton}" <Track.IncreaseRepeatButton>
Command="ScrollBar.PageRightCommand" /> <RepeatButton Style="{StaticResource ScrollBarPageButton}"
</Track.IncreaseRepeatButton> Command="ScrollBar.PageRightCommand" />
</Track> </Track.IncreaseRepeatButton>
</Grid> </Track>
</ControlTemplate> </Grid>
</ControlTemplate>
<Style x:Key="{x:Type ScrollBar}"
TargetType="{x:Type ScrollBar}"> <Style x:Key="{x:Type ScrollBar}"
<Setter Property="SnapsToDevicePixels" TargetType="{x:Type ScrollBar}">
Value="True" /> <Setter Property="SnapsToDevicePixels"
<Setter Property="OverridesDefaultStyle" Value="True" />
Value="true" /> <Setter Property="OverridesDefaultStyle"
<Style.Triggers> Value="true" />
<Trigger Property="Orientation" <Style.Triggers>
Value="Horizontal"> <Trigger Property="Orientation"
<Setter Property="Width" Value="Horizontal">
Value="Auto" /> <Setter Property="Width"
<Setter Property="Height" Value="Auto" />
Value="30" /> <Setter Property="Height"
<Setter Property="Template" Value="30" />
Value="{StaticResource HorizontalScrollBar}" /> <Setter Property="Template"
</Trigger> Value="{StaticResource HorizontalScrollBar}" />
<Trigger Property="Orientation" </Trigger>
Value="Vertical"> <Trigger Property="Orientation"
<Setter Property="Width" Value="Vertical">
Value="30" /> <Setter Property="Width"
<Setter Property="Height" Value="30" />
Value="Auto" /> <Setter Property="Height"
<Setter Property="Margin" Value="Auto" />
Value="0,2,0,2" /> <Setter Property="Margin"
<Setter Property="Template" Value="0,2,0,2" />
Value="{StaticResource VerticalScrollBar}" /> <Setter Property="Template"
</Trigger> Value="{StaticResource VerticalScrollBar}" />
</Style.Triggers> </Trigger>
</Style> </Style.Triggers>
</Style>
<Style x:Key="CustomScrollViewer"
TargetType="{x:Type ScrollViewer}"> <Style x:Key="CustomScrollViewer"
<Setter Property="OverridesDefaultStyle" TargetType="{x:Type ScrollViewer}">
Value="True" /> <Setter Property="OverridesDefaultStyle"
<Setter Property="Template"> Value="True" />
<Setter.Value> <Setter Property="Template">
<ControlTemplate TargetType="{x:Type ScrollViewer}"> <Setter.Value>
<Grid> <ControlTemplate TargetType="{x:Type ScrollViewer}">
<Grid.ColumnDefinitions> <Grid>
<ColumnDefinition Width="Auto"/> <Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" />
<Grid.RowDefinitions> </Grid.ColumnDefinitions>
<RowDefinition Height="Auto" /> <Grid.RowDefinitions>
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
</Grid.RowDefinitions> <RowDefinition Height="Auto" />
<ScrollContentPresenter Grid.Column="0" /> </Grid.RowDefinitions>
<ScrollContentPresenter Grid.Column="0" />
<ScrollBar Name="PART_VerticalScrollBar"
Value="{TemplateBinding VerticalOffset}" <ScrollBar Name="PART_VerticalScrollBar"
Maximum="{TemplateBinding ScrollableHeight}" Value="{TemplateBinding VerticalOffset}"
ViewportSize="{TemplateBinding ViewportHeight}" Maximum="{TemplateBinding ScrollableHeight}"
Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" ViewportSize="{TemplateBinding ViewportHeight}"
Grid.Column="1" /> Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"
<ScrollBar Name="PART_HorizontalScrollBar" Grid.Column="1" />
Orientation="Horizontal" <ScrollBar Name="PART_HorizontalScrollBar"
Grid.Column="0" Orientation="Horizontal"
Value="{TemplateBinding HorizontalOffset}" Grid.Column="0"
Maximum="{TemplateBinding ScrollableWidth}" Value="{TemplateBinding HorizontalOffset}"
ViewportSize="{TemplateBinding ViewportWidth}" Maximum="{TemplateBinding ScrollableWidth}"
Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" /> ViewportSize="{TemplateBinding ViewportWidth}"
</Grid> Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" />
</ControlTemplate> </Grid>
</Setter.Value> </ControlTemplate>
</Setter> </Setter.Value>
</Style> </Setter>
</Style>
<Style x:Key="OkCancelButton" TargetType="telerik:RadButton">
<Setter Property="Width" Value="190"/> <Style x:Key="OkCancelButton" TargetType="telerik:RadButton">
<Setter Property="CornerRadius" Value="10"/> <Setter Property="Width" Value="190"/>
<Setter Property="Height" Value="50"/> <Setter Property="CornerRadius" Value="10"/>
<Setter Property="Width" Value="190"/> <Setter Property="Height" Value="50"/>
<Setter Property="TextBlock.FontSize" Value="25" /> <Setter Property="Width" Value="190"/>
</Style> <Setter Property="TextBlock.FontSize" Value="25" />
</Style>
<Color x:Key="sckcLB">#A1DAF7</Color>
<Color x:Key="sckcP">#9F4191</Color> <Color x:Key="sckcLB">#A1DAF7</Color>
<Color x:Key="sckcDP">#56256B</Color> <Color x:Key="sckcP">#9F4191</Color>
<SolidColorBrush x:Key="sckbLB" Color="{StaticResource sckcLB}"/> <Color x:Key="sckcDP">#56256B</Color>
<SolidColorBrush x:Key="sckbP" Color="{StaticResource sckcP}"/> <SolidColorBrush x:Key="sckbLB" Color="{StaticResource sckcLB}"/>
<SolidColorBrush x:Key="sckbP" Color="{StaticResource sckcP}"/>
<TextBlock x:Key="tbFooter" Foreground="white" FontSize="12" >
&#x2B24;&#x2B24;&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;<LineBreak/> <TextBlock x:Key="tbFooter" Foreground="white" FontSize="12" >
&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run><LineBreak/> &#x2B24;&#x2B24;&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;<LineBreak/>
&#x2B24;&#x2B24;&#x2B24;&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;<LineBreak/> &#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run><LineBreak/>
<Run Foreground="#9F4191">&#x2B24;</Run><Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run><Run Foreground="#56256B">&#x2B24;</Run><Run Foreground="#9F4191">&#x2B24;</Run>&#x2B24;&#x2B24;<Run Foreground="#9F4191">&#x2B24;</Run>&#x2B24;&#x2B24;&#x2B24;<Run Foreground="#9F4191">&#x2B24;</Run>&#x2B24;&#x2B24;<Run Foreground="#9F4191">&#x2B24;&#x2B24;</Run>&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;&#x2B24;<Run Foreground="#9F4191">&#x2B24;</Run><Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run><Run Foreground="#56256B">&#x2B24;</Run><Run Foreground="#9F4191">&#x2B24;</Run>&#x2B24;&#x2B24;<Run Foreground="#9F4191">&#x2B24;</Run><LineBreak/> &#x2B24;&#x2B24;&#x2B24;&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;<LineBreak/>
<Run Foreground="#9F4191">&#x2B24;&#x2B24;&#x2B24;</Run><Run Foreground="#56256B">&#x2B24;&#x2B24;</Run><Run Foreground="#9F4191">&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;</Run><Run Foreground="#56256B">&#x2B24;</Run><Run Foreground="#9F4191">&#x2B24;&#x2B24;&#x2B24;</Run><Run Foreground="#A1DAF7">&#x2B24;</Run><Run Foreground="#9F4191">&#x2B24;&#x2B24;&#x2B24;&#x2B24;</Run><Run Foreground="#56256B">&#x2B24;&#x2B24;</Run><Run Foreground="#9F4191">&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;</Run><LineBreak/> <Run Foreground="#9F4191">&#x2B24;</Run><Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run><Run Foreground="#56256B">&#x2B24;</Run><Run Foreground="#9F4191">&#x2B24;</Run>&#x2B24;&#x2B24;<Run Foreground="#9F4191">&#x2B24;</Run>&#x2B24;&#x2B24;&#x2B24;<Run Foreground="#9F4191">&#x2B24;</Run>&#x2B24;&#x2B24;<Run Foreground="#9F4191">&#x2B24;&#x2B24;</Run>&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;&#x2B24;<Run Foreground="#9F4191">&#x2B24;</Run><Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run>&#x2B24;&#x2B24;<Run Foreground="#A1DAF7">&#x2B24;</Run><Run Foreground="#56256B">&#x2B24;</Run><Run Foreground="#9F4191">&#x2B24;</Run>&#x2B24;&#x2B24;<Run Foreground="#9F4191">&#x2B24;</Run><LineBreak/>
<Run Foreground="#56256B">&#x2B24;&#x2B24;</Run><Run Foreground="#9F4191">&#x2B24;</Run><Run Foreground="#56256B">&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;</Run><Run Foreground="#9F4191">&#x2B24;</Run><Run Foreground="#56256B">&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;</Run><Run Foreground="#9F4191">&#x2B24;</Run><Run Foreground="#56256B">&#x2B24;&#x2B24;&#x2B24;</Run><Run Foreground="#A1DAF7">&#x2B24;</Run><Run Foreground="#56256B">&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;</Run><Run Foreground="#9F4191">&#x2B24;</Run><Run Foreground="#56256B">&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;</Run><Run Foreground="#9F4191">&#x2B24;</Run><Run Foreground="#56256B">&#x2B24;</Run><LineBreak/> <Run Foreground="#9F4191">&#x2B24;&#x2B24;&#x2B24;</Run><Run Foreground="#56256B">&#x2B24;&#x2B24;</Run><Run Foreground="#9F4191">&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;</Run><Run Foreground="#56256B">&#x2B24;</Run><Run Foreground="#9F4191">&#x2B24;&#x2B24;&#x2B24;</Run><Run Foreground="#A1DAF7">&#x2B24;</Run><Run Foreground="#9F4191">&#x2B24;&#x2B24;&#x2B24;&#x2B24;</Run><Run Foreground="#56256B">&#x2B24;&#x2B24;</Run><Run Foreground="#9F4191">&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;</Run><LineBreak/>
</TextBlock> <Run Foreground="#56256B">&#x2B24;&#x2B24;</Run><Run Foreground="#9F4191">&#x2B24;</Run><Run Foreground="#56256B">&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;</Run><Run Foreground="#9F4191">&#x2B24;</Run><Run Foreground="#56256B">&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;</Run><Run Foreground="#9F4191">&#x2B24;</Run><Run Foreground="#56256B">&#x2B24;&#x2B24;&#x2B24;</Run><Run Foreground="#A1DAF7">&#x2B24;</Run><Run Foreground="#56256B">&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;</Run><Run Foreground="#9F4191">&#x2B24;</Run><Run Foreground="#56256B">&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;&#x2B24;</Run><Run Foreground="#9F4191">&#x2B24;</Run><Run Foreground="#56256B">&#x2B24;</Run><LineBreak/>
</TextBlock>
<Style x:Key="bigButton" TargetType="telerik:RadButton">
<Setter Property="CornerRadius" Value="15"/> <Style x:Key="bigButton" TargetType="telerik:RadButton">
<Setter Property="Foreground" Value="{StaticResource sckbP}"></Setter> <Setter Property="CornerRadius" Value="15"/>
<Setter Property="FontWeight" Value="Bold"/> <Setter Property="Foreground" Value="{StaticResource sckbP}"></Setter>
<Setter Property="Background"> <Setter Property="FontWeight" Value="Bold"/>
<Setter.Value> <Setter Property="Background">
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> <Setter.Value>
<GradientStop Color="White" Offset="0"/> <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="{StaticResource sckcLB}" Offset="0.5"/> <GradientStop Color="White" Offset="0"/>
<GradientStop Color="White" Offset="1"/> <GradientStop Color="{StaticResource sckcLB}" Offset="0.5"/>
</LinearGradientBrush> <GradientStop Color="White" Offset="1"/>
</Setter.Value> </LinearGradientBrush>
</Setter> </Setter.Value>
</Style> </Setter>
</Style>
<Style x:Key="xstatusOnLine" TargetType="StatusBarItem">
<Style.Triggers> <Style x:Key="xstatusOnLine" TargetType="StatusBarItem">
<Trigger Property="Content" Value="*** Offline ***"> <Style.Triggers>
<Setter Property="Background" Value="Red"/> <Trigger Property="Content" Value="*** Offline ***">
<Setter Property="Foreground" Value="Yellow"/> <Setter Property="Background" Value="Red"/>
</Trigger> <Setter Property="Foreground" Value="Yellow"/>
<Trigger Property="Content" Value="--- Online ---"> </Trigger>
<Setter Property="Background" Value="White"/> <Trigger Property="Content" Value="--- Online ---">
<Setter Property="Foreground" Value="Green"/> <Setter Property="Background" Value="White"/>
</Trigger> <Setter Property="Foreground" Value="Green"/>
</Style.Triggers> </Trigger>
</Style> </Style.Triggers>
</Style>
<Style x:Key="styleAlarmBorder" TargetType="Border">
<Setter Property="Background" Value="LightYellow" /> <Style x:Key="styleAlarmBorder" TargetType="Border">
<Setter Property="TextBlock.FontSize" Value="30" /> <Setter Property="Background" Value="LightYellow" />
<Setter Property="TextBlock.FontWeight" Value="Bold" /> <Setter Property="TextBlock.FontSize" Value="30" />
<Setter Property="TextBlock.LineHeight" Value="30px" /> <Setter Property="TextBlock.FontWeight" Value="Bold" />
<Setter Property="Padding" Value="20,20,20,20" /> <Setter Property="TextBlock.LineHeight" Value="30px" />
</Style> <Setter Property="Padding" Value="20,20,20,20" />
</Style>
<Style x:Key="styleTOProgessBar" TargetType="ProgressBar">
<Setter Property="Background" Value="Blue" /> <Style x:Key="styleTOProgessBar" TargetType="ProgressBar">
<Setter Property="Height" Value="25" /> <Setter Property="Background" Value="Blue" />
<Setter Property="Maximum" Value="10" /> <Setter Property="Height" Value="25" />
<Setter Property="Minimum" Value="1" /> <Setter Property="Maximum" Value="10" />
<Setter Property="Margin" Value="100,5,100,5" /> <Setter Property="Minimum" Value="1" />
</Style> <Setter Property="Margin" Value="100,5,100,5" />
</Style>
<Style x:Key="styleTTOProgessBar" TargetType="telerik:RadProgressBar">
<Setter Property="Background" Value="Blue" /> <Style x:Key="styleTTOProgessBar" TargetType="telerik:RadProgressBar">
<Setter Property="Height" Value="25" /> <Setter Property="Background" Value="Blue" />
<Setter Property="Maximum" Value="10" /> <Setter Property="Height" Value="25" />
<Setter Property="Minimum" Value="1" /> <Setter Property="Maximum" Value="10" />
<Setter Property="Margin" Value="100,5,100,5" /> <Setter Property="Minimum" Value="1" />
</Style> <Setter Property="Margin" Value="100,5,100,5" />
</Style>
<Style x:Key="sIssuedSubHeader" TargetType="{x:Type TextBlock}">
<Setter Property="HorizontalAlignment" Value="Stretch"/> <Style x:Key="sIssuedSubHeader" TargetType="{x:Type TextBlock}">
<Setter Property="TextAlignment" Value="Center"/> <Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="Background" Value="{StaticResource sckbLB}" /> <Setter Property="TextAlignment" Value="Center"/>
<Setter Property="Padding" Value="20,0,20,0" /> <Setter Property="Background" Value="{StaticResource sckbLB}" />
<Setter Property="FontWeight" Value="Bold"/> <Setter Property="Padding" Value="20,0,20,0" />
</Style> <Setter Property="FontWeight" Value="Bold"/>
</Style>
<Style x:Key="UserInfoItemTitle" TargetType="{x:Type TextBlock}">
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="TextAlignment" Value="Right"/>
<Setter Property="Padding" Value="20,0,20,0" />
<Setter Property="FontWeight" Value="Bold"/>
</Style>
<Style x:Key="UserInfoNameItem" TargetType="{x:Type TextBlock}">
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="TextAlignment" Value="Right"/>
<Setter Property="Padding" Value="20,0,20,0" />
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="FontSize" Value="50"/>
</Style>
<Style x:Key="UserInfoItem" TargetType="{x:Type TextBlock}">
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="TextAlignment" Value="Left"/>
<Setter Property="Padding" Value="20,0,20,0" />
<Setter Property="FontWeight" Value="Normal"/>
</Style>
<Style x:Key="UserInfoItemStatus" TargetType="{x:Type TextBlock}">
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="TextAlignment" Value="Left"/>
<Setter Property="Padding" Value="20,0,20,0" />
<Setter Property="FontWeight" Value="Normal"/>
</Style>
<Style x:Key="UserInfoItemExpires" TargetType="{x:Type TextBlock}">
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="TextAlignment" Value="Left"/>
<Setter Property="Padding" Value="20,0,20,0" />
<Setter Property="FontWeight" Value="Normal"/>
</Style>
</ResourceDictionary> </ResourceDictionary>

View file

@ -205,6 +205,9 @@
<Compile Include="SimulateData.cs" /> <Compile Include="SimulateData.cs" />
<Compile Include="SqlLog.cs" /> <Compile Include="SqlLog.cs" />
<Compile Include="Station.cs" /> <Compile Include="Station.cs" />
<Compile Include="TimeColor.xaml.cs">
<DependentUpon>TimeColor.xaml</DependentUpon>
</Compile>
<Compile Include="TouchEnabledTextBox.cs" /> <Compile Include="TouchEnabledTextBox.cs" />
<Compile Include="User.cs" /> <Compile Include="User.cs" />
<Compile Include="UserInfo.xaml.cs"> <Compile Include="UserInfo.xaml.cs">
@ -218,6 +221,10 @@
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</Page> </Page>
<Page Include="checklist.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="eDosDict.xaml"> <Page Include="eDosDict.xaml">
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
@ -250,6 +257,11 @@
<DependentUpon>MainWindow.xaml</DependentUpon> <DependentUpon>MainWindow.xaml</DependentUpon>
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Page Include="Resources\checklist.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Page>
<Page Include="Settings.xaml"> <Page Include="Settings.xaml">
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
@ -259,6 +271,10 @@
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
<TransformOnBuild>true</TransformOnBuild> <TransformOnBuild>true</TransformOnBuild>
</Page> </Page>
<Page Include="TimeColor.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="UserInfo.xaml"> <Page Include="UserInfo.xaml">
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
@ -327,6 +343,18 @@
<Content Include="extra\devcon.exe"> <Content Include="extra\devcon.exe">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content> </Content>
<Content Include="Images\checklist.svg">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Images\entry.svg">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Images\exit.svg">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Images\info-square.svg">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Reader32.dll"> <Content Include="Reader32.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content> </Content>
@ -360,6 +388,10 @@
</BootstrapperPackage> </BootstrapperPackage>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\LSWShared\LSWDevices\LSWDevices.vcxproj">
<Project>{dd7e3add-d2df-4755-80f3-853c49809ce6}</Project>
<Name>LSWDevices</Name>
</ProjectReference>
<ProjectReference Include="..\EpdBaseClr\EpdBaseClr.vcxproj"> <ProjectReference Include="..\EpdBaseClr\EpdBaseClr.vcxproj">
<Project>{f1f47b79-9930-48b0-8dde-56e2c4bed2a2}</Project> <Project>{f1f47b79-9930-48b0-8dde-56e2c4bed2a2}</Project>
<Name>EpdBaseClr</Name> <Name>EpdBaseClr</Name>

View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="LSWDesfirePublic" version="1.3.9" targetFramework="net48" /> <package id="LSWDesfirePublic" version="1.3.9" targetFramework="net48" />
<package id="LSWDevicesLib" version="1.0.1" targetFramework="net48" />
<package id="LSWLib2" version="4.1.2" targetFramework="net48" /> <package id="LSWLib2" version="4.1.2" targetFramework="net48" />
<package id="Microsoft.VisualStudio.SlowCheetah" version="4.0.50" targetFramework="net48" developmentDependency="true" /> <package id="Microsoft.VisualStudio.SlowCheetah" version="4.0.50" targetFramework="net48" developmentDependency="true" />
<package id="SharpDX" version="4.2.0" targetFramework="net48" /> <package id="SharpDX" version="4.2.0" targetFramework="net48" />

View file

@ -0,0 +1,89 @@
<Window x:Class="eDosStation.About"
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:telerik="http://schemas.telerik.com/2008/xaml/presentation"
xmlns:local="clr-namespace:eDosStation"
mc:Ignorable="d"
Title="About" Height="658.389" Width="800" FontFamily="Segoe UI"
WindowStartupLocation="CenterScreen" WindowStyle="SingleBorderWindow" WindowState="Normal" >
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="*" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<FlowDocumentScrollViewer Grid.Row="1" ScrollViewer.CanContentScroll="False" ScrollViewer.VerticalScrollBarVisibility="Auto">
<FlowDocument>
<Paragraph FontSize="30" >
<Image Source="/Images/EPD-MK3.png" VerticalAlignment="Center" Stretch="None" />
<Run BaselineAlignment="Center">eDos EPD station</Run>
</Paragraph>
<Paragraph>
<TextBlock Name="aVersion" Text="1.1" />
</Paragraph>
<Table BorderBrush="#FF1E8CED" BorderThickness="1" >
<Table.Columns>
<TableColumn Width="200" ></TableColumn>
<TableColumn Width="auto" ></TableColumn>
</Table.Columns>
<TableRowGroup >
<TableRow>
<TableCell ><Paragraph TextAlignment="Right" Margin="0,5,20,0">Station ID</Paragraph></TableCell>
<TableCell>
<Paragraph>
<Run BaselineAlignment="Bottom" Name="stationID" Text="99" />
</Paragraph>
</TableCell>
</TableRow>
<TableRow>
<TableCell >
<Paragraph TextAlignment="Right" Margin="0,0,20,0" >Remote sql alias</Paragraph>
</TableCell>
<TableCell>
<Paragraph>
<Run BaselineAlignment="Bottom" x:Name="remoteSql" Text="sql"/>
</Paragraph>
</TableCell>
</TableRow>
<TableRow>
<TableCell >
<Paragraph TextAlignment="Right" Margin="0,0,20,0" >Local sql alias</Paragraph>
</TableCell>
<TableCell>
<Paragraph>
<Run BaselineAlignment="Bottom" x:Name="localSql" Text="sql"/>
</Paragraph>
</TableCell>
</TableRow>
<TableRow>
<TableCell >
<Paragraph TextAlignment="Right" Margin="0,0,20,0" >Check users quiz</Paragraph>
</TableCell>
<TableCell>
<Paragraph>
<Run BaselineAlignment="Bottom" x:Name="checkUser" Text=""/>
</Paragraph>
</TableCell>
</TableRow>
</TableRowGroup>
</Table>
<Paragraph Margin="50,10,0,10" FontStyle="Italic">
<Run>Architecture and testing by Isabelle Majkowski, Luc Praet, Raf Aarts, Eric Boogers, Kris Bruns</Run>
<LineBreak />
<Run>Feedback by Cools Job, Thijs Bart, Mutert Peter, Smets Gunter</Run>
<LineBreak />
<Run>Developed by Luc Vandenbroucke, Karel Janssen</Run>
<LineBreak />
<Run>Technical info by Thermo</Run>
<LineBreak/>
<Run>and lots of research …</Run>
</Paragraph>
</FlowDocument>
</FlowDocumentScrollViewer>
<telerik:RadButton Grid.Row="2" Content="OK" Width="200" HorizontalAlignment="Center" Click="RadButton_Click" Style="{DynamicResource OkCancelButton}" />
</Grid>
</Window>

View file

@ -0,0 +1,47 @@
using Microsoft.Win32;
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 eDosStation
{
/// <summary>
/// Interaction logic for About.xaml
/// </summary>
public partial class About : Window
{
public About(Station station)
{
InitializeComponent();
aVersion.Text = "2021 - 2024 Version " + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()+ " (Build "+Properties.Resources.BuildDate.Trim() +")";
stationID.Text = station.ID_Station.ToString();
ReadAlias();
if (station.checkUser) checkUser.Text = "Yes"; else checkUser.Text = "No";
}
private void RadButton_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
private void ReadAlias()
{
using (RegistryKey key = Registry.LocalMachine.OpenSubKey("SOFTWARE\\WOW6432Node\\Microsoft\\MSSQLServer\\Client\\ConnectTo",false))
{
remoteSql.Text = key.GetValue("eDos").ToString();
localSql.Text = key.GetValue("eDosLocal").ToString();
}
}
}
}

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!--For more information on using transformations see the web.config examples at http://go.microsoft.com/fwlink/?LinkId=214134. -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
<add name="eDosStation.Properties.Settings.localConnectionString" connectionString="Data Source=eDosLocal;Initial Catalog=eDosLocal;User ID=eDosStation;Password=Infopla+8;TrustServerCertificate=True;Application Name=eDosStation" xdt:Locator="Match(name)" xdt:Transform="Replace"/>
</connectionStrings>
<userSettings>
<eDosStation.Properties.Settings>
<setting name="ComPort" serializeAs="String">
<value>6</value>
</setting>
</eDosStation.Properties.Settings>
</userSettings>
<appSettings >
<add key="Reader" value="HID Global OMNIKEY 5022 Smart Card Reader 0" xdt:Locator="Match(key)" xdt:Transform="Replace" />
<add key="TestCSN" value="0428790A0B4E80" xdt:Locator="Match(key)" xdt:Transform="Replace" />
<add key="TestCode" value="12925" xdt:Locator="Match(key)" xdt:Transform="Replace" />
<add key="LogAll" value="true" xdt:Locator="Match(key)" xdt:Transform="Replace" />
<add key="WriteConfig" value="true" xdt:Locator="Match(key)" xdt:Transform="Replace" />
<add key="Elatec" value="COM3" xdt:Locator="Match(key)" xdt:Transform="Replace" />/>
</appSettings>
</configuration>

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<!--For more information on using transformations see the web.config examples at http://go.microsoft.com/fwlink/?LinkId=214134. -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<appSettings>
<add key="LogAll" value="false" xdt:Locator="Match(key)" xdt:Transform="Replace" />
<add key="WriteConfig" value="false" xdt:Locator="Match(key)" xdt:Transform="Replace" />
</appSettings>
</configuration>

View file

@ -0,0 +1,71 @@
<?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="eDosStation.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<connectionStrings>
<add name="eDosStation.Properties.Settings.localConnectionString" connectionString="Data Source=eDosLocal;Initial Catalog=eDosLocal;User ID=eDosStation;Password=Infopla+8;TrustServerCertificate=True;Application Name=eDosStation" providerName="System.Data.SqlClient" />
<add name="eDosConnectionString" connectionString="Data Source=eDos;Initial Catalog=eDos;User ID=eDosStation;Password=Infopla+8;TrustServerCertificate=True;Application Name=eDosStation" providerName="System.Data.SqlClient" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<userSettings>
<eDosStation.Properties.Settings>
<setting name="ComPort" serializeAs="String">
<value>3</value>
</setting>
<setting name="Inst_CODE1" serializeAs="String">
<value>1</value>
</setting>
<setting name="Inst_CODE2" serializeAs="String">
<value>11</value>
</setting>
<setting name="Inst_Name1" serializeAs="String">
<value>BR1</value>
</setting>
<setting name="Inst_Name2" serializeAs="String">
<value>Venus</value>
</setting>
<setting name="TestCSN" serializeAs="String">
<value>0428790A0B4E80</value>
</setting>
<setting name="useTestButtons" serializeAs="String">
<value>True</value>
</setting>
</eDosStation.Properties.Settings>
</userSettings>
<appSettings>
<add key="Reader" value="HID Global OMNIKEY 5022 Smart Card Reader 0" />
<add key="TestCSN" value="" />
<add key="TestCode" value="" />
<add key="sqlLogFolder" value="c:\logs" />
<add key="ClientSettingsProvider.ServiceUri" value="" />
<add key="LogAll" value="true" />
<add key="WriteConfig" value="true" />
<add key="Elatec" value="" />
</appSettings>
<system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
</providers>
</roleManager>
</system.web>
<runtime>
<generatePublisherEvidence enabled="false" />
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View file

@ -0,0 +1,15 @@
<Application x:Class="eDosStation.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:eDosStation"
StartupUri="MainWindow.xaml" Startup="Application_Startup" Exit="Application_Exit" >
<Application.Resources>
<ResourceDictionary >
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="eDosDict.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>

View file

@ -0,0 +1,66 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
using System.Windows;
namespace eDosStation
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
[DllImport("kernel32.dll",CharSet =CharSet.Auto, EntryPoint = "LoadLibraryEx")]
private static extern IntPtr LoadLibraryEx(string lpFileName, IntPtr hFile, uint dwFlags);
public System.IntPtr moduleHandle;
public bool TestOrCreateFolder(string fn)
{
bool rv = true;
try
{
if (!System.IO.Directory.Exists(fn))
{
if (System.IO.File.Exists(fn)) System.IO.File.Delete(fn);
System.IO.Directory.CreateDirectory(fn);
}
}
catch { rv = false; }
return rv;
}
public string eDosPort;
public string elatecPort, elatecFirmware;
public string RFIDReader;
private void Application_Startup(object sender, StartupEventArgs e)
{
//var pth1 = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "EpdBaseClr.dll");
//var pth2 = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Reader2.dll");
//moduleHandle = LoadLibraryEx(pth2, IntPtr.Zero, 0);
//moduleHandle = LoadLibraryEx(pth1, IntPtr.Zero, 0);
using (var h = new LSWDevices.LSWDevicesHelper())
{
eDosPort = h.eDosPort;
elatecPort = h.ElatecPort;
elatecFirmware = h.ElatecFirmware;
RFIDReader = h.RFIDReader;
}
TestOrCreateFolder("c:/temp");
TestOrCreateFolder("c:/Logs");
}
private void Application_Exit(object sender, ExitEventArgs e)
{
Environment.Exit(0);
}
}
}

View file

@ -0,0 +1,14 @@
<Window x:Class="eDosStation.AskPwd"
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:eDosStation"
mc:Ignorable="d"
Title="First setup" Height="300" Width="600" BorderThickness="1" ResizeMode="NoResize" ShowInTaskbar="False" Topmost="True" WindowStartupLocation="CenterScreen" >
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock Text="Sql Login Paswoord" Padding="10,10,10,10" Foreground="Red" FontWeight="Bold" FontSize="14" />
<PasswordBox x:Name="ResponseTextBox" BorderBrush="Black" Margin="10,10,10,10" />
<Button Content="OK" Click="OKButton_Click" />
</StackPanel>
</Window>

View file

@ -0,0 +1,37 @@
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 eDosStation
{
/// <summary>
/// Interaction logic for AskPwd.xaml
/// </summary>
public partial class AskPwd : Window
{
public AskPwd()
{
InitializeComponent();
}
public string ResponseText
{
get { return ResponseTextBox.Password; }
set { ResponseTextBox.Password = value; }
}
private void OKButton_Click(object sender, System.Windows.RoutedEventArgs e)
{
DialogResult = true;
}
}
}

View file

@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace eDosStation
{
static class Config
{
public static void ToggleConfigEncryption(string exeConfigName, string pwd)
{
// Takes the executable file name without the
// .config extension.
try
{
var config = ConfigurationManager.OpenExeConfiguration(exeConfigName);
ConnectionStringsSection section = config.GetSection("connectionStrings") as ConnectionStringsSection;
if (section.SectionInformation.IsProtected)
{
// Remove encryption.
//section.SectionInformation.UnprotectSection();
}
else
{
var x = section.ConnectionStrings["eDosStation.Properties.Settings.eDosConnectionString"].ConnectionString;
var cb = new System.Data.SqlClient.SqlConnectionStringBuilder(x);
cb.Password = pwd;
section.ConnectionStrings["eDosStation.Properties.Settings.eDosConnectionString"].ConnectionString = cb.ConnectionString;
// Encrypt the section.
section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
}
// Save the current configuration.
config.Save();
Console.WriteLine("Protected={0}",section.SectionInformation.IsProtected);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}

View file

@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
using System.Windows.Media;
namespace eDosStation
{
class Converters
{
public class BrushColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
Color rv = System.Windows.Media.Colors.Green;
if (value == null || (bool?)value ==true ) rv = System.Windows.Media.Colors.Red;
return new SolidColorBrush(rv);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
}

View file

@ -0,0 +1,519 @@
using LSWLib;
using System;
using System.Data;
using System.Data.SqlClient;
namespace eDosStation
{
public class DataInterface
{
const string moduleName = "DataInterface";
public int ID_Station;
public bool isLocal = false;
private string currentConStr, ConCentralStr;
public System.IO.StreamWriter stationLog;
public SqlConnection localConnection, centralConnection;
internal CLog splunkLog;
public System.Data.SqlClient.SqlCommand VisitInitCommand, VisitInfoCommand, VisitInitConfirmCommand;
public static SqlCommand VisitExitCommand;
public static SqlCommand NextIDCommand;
public static SqlCommand LastIDCommand;
public static SqlCommand CheckStatus;
public static SqlCommand GetPersonInfo;
public DataSet1.CommentOnEventDataTable dtCOE;
private bool CheckUser, AllowMultipleEPD;
private SqlCommand ReverseSyncCommand;
public static string tnow()
{
return DateTime.Now.ToString("HH:mm:ss.fff");
}
public static int? NextID()
{
int? nxtValue = null;
if (NextIDCommand.Connection.State == ConnectionState.Closed) NextIDCommand.Connection.Open();
nxtValue = NextIDCommand.ExecuteScalar() as int?;
return nxtValue;
}
public static int? LastID()
{
int? lastValue = null;
if (NextIDCommand.Connection.State == ConnectionState.Closed) LastIDCommand.Connection.Open();
lastValue = LastIDCommand.ExecuteScalar() as int?;
return lastValue;
}
/// <summary>
/// Check connenction. If closed then open oand optianly leave open.
/// </summary>
/// <param name="leaveOpen">If opened leave it open</param>
/// <returns>true if connection ok</returns>
public bool checkCon(bool leaveOpen = false)
{
bool rv = false;
if (localConnection != null && localConnection.State == System.Data.ConnectionState.Open) return true;
try
{
if (localConnection == null || string.IsNullOrEmpty(localConnection.ConnectionString)) localConnection = new SqlConnection(currentConStr);
localConnection.Open();
rv = true;
}
catch (System.Exception ex)
{
System.Windows.MessageBox.Show($"Opening '{currentConStr}' error :{ex.Message}");
}
if (rv && !leaveOpen) localConnection?.Close();
return rv;
}
public bool checkConCentral(bool leaveOpen = false)
{
bool rv = false;
if (centralConnection != null && centralConnection.State == System.Data.ConnectionState.Open) return true;
try
{
if (centralConnection == null || string.IsNullOrEmpty(centralConnection.ConnectionString)) centralConnection = new SqlConnection(ConCentralStr);
centralConnection.Open();
rv = true;
}
catch (System.Exception ex)
{
System.Windows.MessageBox.Show($"Opening '{ConCentralStr}' error :{ex.Message}");
}
if (rv && !leaveOpen) centralConnection?.Close();
return rv;
}
internal void SetStation(int curIDStation)
{
ID_Station = curIDStation;
LastIDCommand.Parameters["ID_Station"].Value = curIDStation;
VisitInitCommand.Parameters["ID_Station"].Value = curIDStation;
CheckStatus.Parameters["ID_Station"].Value = curIDStation;
VisitInitConfirmCommand.Parameters["ID_Station"].Value = curIDStation;
}
public bool isOnline()
{
bool? online = false;
if (checkCon(true))
{
online = CheckStatus.ExecuteScalar() as bool?;
if (!online.HasValue) online = false;
}
isLocal = !online.Value;
return online.Value;
}
static public void first()
{
var cb = new System.Data.SqlClient.SqlConnectionStringBuilder(Properties.Settings.Default.localConnectionString);
if (string.IsNullOrEmpty(cb.Password))
{
var f = new AskPwd();
f.ShowDialog();
string pwd = f.ResponseText;
string cfg = System.IO.Path.Combine(Environment.CurrentDirectory, System.AppDomain.CurrentDomain.FriendlyName);
Config.ToggleConfigEncryption(cfg, pwd);
System.Windows.Application.Current.Shutdown();
}
}
private void init()
{
const string taskName = "init";
stationLog?.WriteLine($"{moduleName}.{taskName } start {tnow()}");
try
{
var flog = System.Configuration.ConfigurationManager.AppSettings["sqlLogFolder"];
if (System.IO.Directory.Exists(flog))
{
string fn = System.IO.Path.Combine(flog, "station.log");
if (System.IO.File.Exists(fn))
{
stationLog = new System.IO.StreamWriter(fn, false, System.Text.Encoding.UTF8);
}
}
first();
currentConStr = System.Configuration.ConfigurationManager.ConnectionStrings["eDosStation.Properties.Settings.localConnectionString"].ConnectionString;
ConCentralStr = System.Configuration.ConfigurationManager.ConnectionStrings["eDosConnectionString"].ConnectionString;
localConnection = new SqlConnection(currentConStr);
NextIDCommand = new SqlCommand("SELECT NEXT VALUE FOR VisitSequence as VisitID", localConnection);
isLocal = true;
bool rv = checkCon(true);
MakeCommands();
if (localConnection.State == ConnectionState.Open)localConnection.Close();
}
catch (Exception ex)
{
splunkLog?.WriteException(moduleName, taskName, ex);
System.Windows.MessageBox.Show($"Init error {ex.Message} con={currentConStr}");
stationLog.WriteLine($"Init error {ex.Message} con={currentConStr}");
}
stationLog?.WriteLine($"Datainterface.Init end {tnow()}");
}
public DataInterface()
{
init();
}
// DataSet1TableAdapters.GetTaskInfoTableAdapter TaskInfoTa()
//{
// return new DataSet1TableAdapters.GetTaskInfoTableAdapter();
// //var ta = DataSet1TableAdapters.GetTaskInfoTableAdapter();
// //if (ta.Connection.ConnectionString!= currentConStr) ta.Connection.ConnectionString = currentConStr;
// //return
//}
// DataSet1TableAdapters.GetTaskListTableAdapter TaskListTA()
//{
// return new DataSet1TableAdapters.GetTaskListTableAdapter();
// //ta.Connection.ConnectionString = currentConStr;
// //return ta;
//}
internal void SetCheckUser(bool pCheckUser)
{
this.CheckUser = pCheckUser;
}
internal void SetAllowMultipleEPD(bool pAllowMultipleEPD)
{
this.AllowMultipleEPD = pAllowMultipleEPD;
}
//DataSet1TableAdapters.CommentOnEventTableAdapter CommentTA()
//{
// var ta = new DataSet1TableAdapters.CommentOnEventTableAdapter();
// ta.Connection.ConnectionString = currentConStr;
// return ta;
//}
public System.Data.SqlClient.SqlConnection getCon(bool LeaveOpen)
{
checkCon(LeaveOpen);
return localConnection;
}
public System.Data.SqlClient.SqlConnection getConCentral(bool LeaveOpen)
{
checkConCentral(LeaveOpen);
return centralConnection;
}
void MakeCommands()
{
var oldState = localConnection.State;
if (oldState == ConnectionState.Closed) localConnection.Open();
LastIDCommand = new SqlCommand("VisitIDLast", localConnection);
LastIDCommand.CommandType = CommandType.StoredProcedure;
var pa = new System.Data.SqlClient.SqlParameter("ID_Station", SqlDbType.Int, 4); LastIDCommand.Parameters.Add(pa);
CheckStatus = new SqlCommand("[syncLoc].[SyncStatusIsOK]", localConnection);
CheckStatus.CommandType = CommandType.StoredProcedure;
pa = new System.Data.SqlClient.SqlParameter("ID_Station", SqlDbType.Int, 4); CheckStatus.Parameters.Add(pa);
VisitInitCommand = new System.Data.SqlClient.SqlCommand("[dbo].[VisitInit]", localConnection) { CommandType = System.Data.CommandType.StoredProcedure };
VisitInitCommand.Parameters.AddRange(new System.Data.SqlClient.SqlParameter[] {
new System.Data.SqlClient.SqlParameter("PersID",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("ID_Task",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("Inst_CODE",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("EPD_InternalID",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("isBG",SqlDbType.Bit,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("EPDVisitID",SqlDbType.Int,0,System.Data.ParameterDirection.Output,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("ID_Station",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("ID_Visit",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("ENTRY_EPD_CLOCK",SqlDbType.Decimal,0,System.Data.ParameterDirection.Input,false,10,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("epdType",SqlDbType.TinyInt,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("InitError",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
});
VisitInitConfirmCommand = new System.Data.SqlClient.SqlCommand("[dbo].[VisitInitConfirm]", localConnection) { CommandType = System.Data.CommandType.StoredProcedure };
VisitInitConfirmCommand.Parameters.AddRange(new System.Data.SqlClient.SqlParameter[] {
new System.Data.SqlClient.SqlParameter("ID_Station",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("ID_Visit",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("InitError",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
});
VisitExitCommand = new System.Data.SqlClient.SqlCommand("[dbo].[VisitExit]", localConnection) { CommandType = System.Data.CommandType.StoredProcedure };
VisitExitCommand.Parameters.AddRange(new System.Data.SqlClient.SqlParameter[] {
new System.Data.SqlClient.SqlParameter("EPDVisitID",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("HP07",SqlDbType.Float,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("HP10",SqlDbType.Float,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("HP07Peak",SqlDbType.Float,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("HP10Peak",SqlDbType.Float,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("HP07PeakTime",SqlDbType.DateTime,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("HP10PeakTime",SqlDbType.DateTime,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("HP07Total",SqlDbType.Float,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("HP10Total",SqlDbType.Float,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("K1",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("K2",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("K3",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("K4",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("K5",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("K6",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("SG",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("BC",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("FB",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("HG",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("QualityData",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("alarmStatus",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("otherAlarms",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("errorStatus",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("operatingStatus",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("ENTRY_EPD_CLOCK",SqlDbType.Decimal,0,System.Data.ParameterDirection.Input,false,10,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("EXIT_EPD_CLOCK",SqlDbType.Decimal,0,System.Data.ParameterDirection.Input,false,10,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("PersID",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("eDosBatteryWarning",SqlDbType.Bit,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("eDosDose07Warning",SqlDbType.Bit,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("eDosDose07Alarm",SqlDbType.Bit,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("eDosRate07Warning",SqlDbType.Bit,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("eDosRate07Alarm",SqlDbType.Bit,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("eDosDose10Warning",SqlDbType.Bit,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("eDosDose10Alarm",SqlDbType.Bit,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("eDosRate10Warning",SqlDbType.Bit,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("eDosRate10Alarm",SqlDbType.Bit,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("isAlarm",SqlDbType.Bit,0,System.Data.ParameterDirection.Input,true,0,0,null,System.Data.DataRowVersion.Default,null)
, new System.Data.SqlClient.SqlParameter("isFault",SqlDbType.Bit,0,System.Data.ParameterDirection.Input,true,0,0,null,System.Data.DataRowVersion.Default,null)
});
VisitInfoCommand = new System.Data.SqlClient.SqlCommand("[dbo].[VisitInfo]", localConnection) { CommandType = System.Data.CommandType.StoredProcedure };
VisitInfoCommand.Parameters.AddRange(new System.Data.SqlClient.SqlParameter[] {
new System.Data.SqlClient.SqlParameter("RETURN_VALUE",SqlDbType.Int,0,System.Data.ParameterDirection.ReturnValue,false,0,0,null,System.Data.DataRowVersion.Default,null)
,new System.Data.SqlClient.SqlParameter("EPDVisitID",SqlDbType.Int,0,System.Data.ParameterDirection.Input,false,0,0,null,System.Data.DataRowVersion.Default,null)
,new System.Data.SqlClient.SqlParameter("hasExited",SqlDbType.Bit,0,System.Data.ParameterDirection.Output,false,0,0,null,System.Data.DataRowVersion.Default,null)
,new System.Data.SqlClient.SqlParameter("isManualExit",SqlDbType.Bit,0,System.Data.ParameterDirection.Output,false,0,0,null,System.Data.DataRowVersion.Default,null)
,new System.Data.SqlClient.SqlParameter("name",SqlDbType.VarChar,100,System.Data.ParameterDirection.Output,true,0,0,null,System.Data.DataRowVersion.Default,null)
});
ReverseSyncCommand = new System.Data.SqlClient.SqlCommand("syncLoc.UpdateRemoteReturns", localConnection) { CommandType = System.Data.CommandType.StoredProcedure };
SqlCommandBuilder.DeriveParameters(ReverseSyncCommand);
ReverseSyncCommand.Parameters["@ID_LocalStation"].Value = DBNull.Value;
ReverseSyncCommand.SetStringParam("@pcnr", Environment.MachineName);
GetPersonInfo = new System.Data.SqlClient.SqlCommand("[dbo].[GetPersonInfo]", localConnection) { CommandType = System.Data.CommandType.StoredProcedure };
SqlCommandBuilder.DeriveParameters(GetPersonInfo);
if (oldState == ConnectionState.Closed) localConnection.Close();
}
public int? ParaIntValue(SqlCommand cmd, string name)
{
int? rv = null;
if (cmd.Parameters.Contains(name) && cmd.Parameters[name].Value != DBNull.Value) rv = (int?)cmd.Parameters[name].Value;
return rv;
}
public bool? ParaBoolValue(SqlCommand cmd, string name)
{
bool? rv = null;
if (cmd.Parameters.Contains(name) && cmd.Parameters[name].Value != DBNull.Value) rv = (bool?)cmd.Parameters[name].Value;
return rv;
}
public string ParaStringValue(SqlCommand cmd, string name)
{
string rv = null;
if (cmd.Parameters.Contains(name) && cmd.Parameters[name].Value != DBNull.Value) rv = (string)cmd.Parameters[name].Value;
return rv;
}
public int VisitInfo(int EpdVisitID, out string name)
{
int? rv = 0;
const string taskName = "VisitInfo";
name = string.Empty;
try
{
VisitInfoCommand.Parameters["EPDVisitID"].Value = EpdVisitID;
checkCon(true);
VisitInfoCommand.Connection = localConnection;
VisitInfoCommand.ExecuteScalar();
rv = ParaIntValue(VisitInfoCommand, "RETURN_VALUE");
bool? hasExited = ParaBoolValue(VisitInfoCommand, "hasExited");
bool? isManualExit = ParaBoolValue(VisitInfoCommand, "isManualExit");
name = ParaStringValue(VisitInfoCommand, "name");
}
catch (System.Exception ex)
{
splunkLog?.WriteException(moduleName, taskName, ex);
}
if (rv == null) rv = 0;
return rv.Value;
}
public void VisitExit(int EpdVisitID, EpdBaseClr.Epd2 ep)
{
const string taskName = "VisitExit";
try
{
VisitExitCommand.Parameters["EPDVisitID"].Value = EpdVisitID;
VisitExitCommand.Parameters["HP07"].Value = ep.Hp07;
VisitExitCommand.Parameters["HP10"].Value = ep.Hp10;
VisitExitCommand.Parameters["Hp07Total"].Value = ep.Hp07Total;
VisitExitCommand.Parameters["Hp10Total"].Value = ep.Hp10Total;
VisitExitCommand.Parameters["Hp07Peak"].Value = ep.Hp07Peak;
VisitExitCommand.Parameters["Hp10Peak"].Value = ep.Hp10Peak;
if (ep.Hp07PeakTime != null)
VisitExitCommand.Parameters["HP07PeakTime"].Value = ep.Hp07PeakTime;
else
VisitExitCommand.Parameters["HP07PeakTime"].Value = DBNull.Value;
if (ep.Hp10PeakTime != null)
VisitExitCommand.Parameters["Hp10PeakTime"].Value = ep.Hp07PeakTime;
else
VisitExitCommand.Parameters["Hp10PeakTime"].Value = DBNull.Value;
VisitExitCommand.Parameters["K1"].Value = ep.K1;
VisitExitCommand.Parameters["K2"].Value = ep.K2;
VisitExitCommand.Parameters["K3"].Value = ep.K3;
VisitExitCommand.Parameters["K4"].Value = ep.K4;
VisitExitCommand.Parameters["K5"].Value = ep.K5;
VisitExitCommand.Parameters["K6"].Value = ep.K6;
VisitExitCommand.Parameters["SG"].Value = ep.SG;
VisitExitCommand.Parameters["BC"].Value = ep.BC;
VisitExitCommand.Parameters["FB"].Value = ep.FB;
VisitExitCommand.Parameters["HG"].Value = ep.HG;
VisitExitCommand.Parameters["QualityData"].Value = ep.QualityData;
//VisitExitCommand.Parameters["D1"].Value = ep.D1;
//VisitExitCommand.Parameters["D2"].Value = ep.D2;
//VisitExitCommand.Parameters["D3"].Value = ep.D3;
//VisitExitCommand.Parameters["D4"].Value = ep.D4;
VisitExitCommand.Parameters["alarmStatus"].Value = ep.alarmStatus;
VisitExitCommand.Parameters["otherAlarms"].Value = ep.otherAlarms;
VisitExitCommand.Parameters["errorStatus"].Value = ep.errorStatus;
VisitExitCommand.Parameters["operatingStatus"].Value = ep.operatingStatus;
VisitExitCommand.Parameters["ENTRY_EPD_CLOCK"].Value = ep.CountsClockBase;
VisitExitCommand.Parameters["EXIT_EPD_CLOCK"].Value = ep.CountsClock;
if (int.TryParse(ep.WearerName, out int WearerPersID))
VisitExitCommand.Parameters["PersID"].Value = WearerPersID;
else
VisitExitCommand.Parameters["PersID"].Value = DBNull.Value;
//ep.hasAlarm
VisitExitCommand.SetBoolParam("eDosBatteryWarning", ep.eDosBatteryWarning);
VisitExitCommand.SetBoolParam("eDosDose07Warning", ep.eDosDose07Warning);
VisitExitCommand.SetBoolParam("eDosDose07Alarm", ep.eDosDose07Alarm);
VisitExitCommand.SetBoolParam("eDosRate07Warning", ep.eDosRate07Warning);
VisitExitCommand.SetBoolParam("eDosRate07Alarm", ep.eDosRate07Alarm);
VisitExitCommand.SetBoolParam("eDosDose10Warning", ep.eDosDose10Warning);
VisitExitCommand.SetBoolParam("eDosDose10Alarm", ep.eDosDose10Alarm);
VisitExitCommand.SetBoolParam("eDosRate10Warning", ep.eDosRate10Warning);
VisitExitCommand.SetBoolParam("eDosRate10Alarm", ep.eDosRate10Alarm);
VisitExitCommand.SetBoolParam("isAlarm", ep.eDoshasAlarm, splunkLog);
VisitExitCommand.SetBoolParam("isFault", ep.eDosHasFault, splunkLog);
checkCon(true);
VisitExitCommand.Connection = localConnection;
VisitExitCommand.ExecuteNonQuery();
}
catch (System.Exception ex)
{
splunkLog?.WriteException(moduleName, taskName, ex);
}
localConnection.Close();
}
public void FillComment()
{
if (dtCOE == null) dtCOE = new DataSet1.CommentOnEventDataTable();
using (var dt = new DataSet1TableAdapters.CommentOnEventTableAdapter())
{
dt.Fill(dtCOE);
}
}
public DataSet1.CommentOnEventRow GetCommentOnEventRow(int id)
{
return dtCOE.FindByID_CommnentOnEvent(id);
}
public void FillTaskInfo(User _User, DataSet1 dataSet1)
{
const string taskName = "FillTaskInfo";
try
{
using (var dataSet1GetTaskInfoTableAdapter = new DataSet1TableAdapters.GetTaskInfoTableAdapter()) // new eDosStation.DataSet1TableAdapters.GetTaskInfoTableAdapter())
{
dataSet1GetTaskInfoTableAdapter.Fill(dataSet1.GetTaskInfo, null, _User.Margin);
}
}
catch (System.Exception ex)
{
splunkLog?.WriteException(moduleName, taskName, ex);
}
}
public User GetUser(string CSN, string Code, bool isEntry)
{
const string taskName = "GetUser";
User u = new User();
//object[] Values = null;
try
{
GetPersonInfo.SetIntParam("@PersID", Code);
GetPersonInfo.SetStringParam("@CSN", CSN);
GetPersonInfo.SetBoolParam("@AllowMultipleEPD", AllowMultipleEPD);
GetPersonInfo.SetBoolParam("@CheckUser", CheckUser);
checkCon(true);
var rs = GetPersonInfo.ExecuteReader(System.Data.CommandBehavior.SingleRow);
using (var tb = new DataTable())
{
tb.Load(rs);
if (tb.Rows.Count > 0)
{
DataRow dr = tb.Rows[0];
u.PersID = (int) dr["PersID"];
u.LastName = dr["LastName"].ToString();
u.FirstName = dr["FirstName"].ToString();
//u.conCode = Values[rs.GetOrdinal("conCode")].ToString();
u.Language = dr["Language"].ToString();
u.AccessAllow = !CheckUser || dr.BoolOrFalse("AccessAllow");
u.Margin = dr.DoubleOrNull("Margin") ;
u.VisitIDLocked = dr.IntOrDefault("VisitIDLocked",0);
u.ReasonNoAccess = dr["ReasonNoAccess"].ToString().Replace("\\n", "\n");
u.UserComment = dr["Comment"].ToString();
if (isEntry && !AllowMultipleEPD && tb.Columns.Contains("hasEPD"))
{
u.hasEPD = dr.BoolOrFalse("hasEPD");
if (u.hasEPD) u.ReasonNoAccess = "You have an EPD in use"; //!!! not for return !!!!
}
else u.hasEPD = false;
u.activeVisit = dr.IntOrNull("activeVisit");
u.isAgent = dr.BoolOrFalse("isAgent");
u.AllOk = u.VisitIDLocked==0 && u.AccessAllow.Value ;
}
else
{
// Not found
u.SetNotFound();
u.AllOk = !CheckUser || (u.AccessAllow == true && u.VisitIDLocked == 0);
}
rs.Close();
}
}
catch (System.Exception ex)
{
splunkLog?.WriteException(moduleName, taskName, ex);
if (stationLog != null) stationLog.WriteLine($"{taskName} error {ex.Message} {System.DateTime.Now.ToString("HH:mm:ss:nnn")}");
}
return u;
}
public bool ReverseSync()
{
const string module = "ReverseSync";
bool rv = false;
checkCon(true);
VisitExitCommand.Connection = localConnection;
try
{
splunkLog.KvClear();
splunkLog.KvAddCommand(CLog.skeys.sqlQuery, ReverseSyncCommand);
ReverseSyncCommand.ExecuteNonQuery();
splunkLog.WriteSplunkLog(module ,null, CLog.iseverity.info );
rv = true;
}
catch (System.Exception ex)
{
splunkLog?.WriteException( module,null, ex);
}
localConnection.Close();
splunkLog.KvClear();
return rv;
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,9 @@
namespace eDosStation
{
partial class DataSet1
{
}
}

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!--<autogenerated>
This code was generated by a tool.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DataSetUISetting Version="1.00" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TableUISettings />
</DataSetUISetting>

View file

@ -0,0 +1,407 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="DataSet1" targetNamespace="http://tempuri.org/DataSet1.xsd" xmlns:mstns="http://tempuri.org/DataSet1.xsd" xmlns="http://tempuri.org/DataSet1.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" attributeFormDefault="qualified" elementFormDefault="qualified">
<xs:annotation>
<xs:appinfo source="urn:schemas-microsoft-com:xml-msdatasource">
<DataSource DefaultConnectionIndex="1" FunctionsComponentName="QueriesTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" SchemaSerializationMode="IncludeSchema" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<Connections>
<Connection AppSettingsObjectName="Settings" AppSettingsPropertyName="eDosConnectionString" IsAppSettingsProperty="true" Modifier="Assembly" Name="eDosConnectionString (Settings)" ParameterPrefix="@" PropertyReference="ApplicationSettings.eDosStation.Properties.Settings.GlobalReference.Default.eDosConnectionString" Provider="System.Data.SqlClient" />
<Connection AppSettingsObjectName="Settings" AppSettingsPropertyName="localConnectionString" ConnectionStringObject="" IsAppSettingsProperty="true" Modifier="Assembly" Name="localConnectionString (Settings)" ParameterPrefix="@" PropertyReference="ApplicationSettings.eDosStation.Properties.Settings.GlobalReference.Default.localConnectionString" Provider="System.Data.SqlClient" />
</Connections>
<Tables>
<TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="GetTaskInfoTableAdapter" GeneratorDataComponentClassName="GetTaskInfoTableAdapter" Name="GetTaskInfo" UserDataComponentName="GetTaskInfoTableAdapter">
<MainSource>
<DbSource ConnectionRef="localConnectionString (Settings)" DbObjectName="eDosLocal.dbo.GetTaskInfo" DbObjectType="StoredProcedure" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="false" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="false" UserGetMethodName="GetData" UserSourceName="Fill">
<SelectCommand>
<DbCommand CommandType="StoredProcedure" ModifiedByUser="false">
<CommandText>dbo.GetTaskInfo</CommandText>
<Parameters>
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="int" DbType="Int32" Direction="ReturnValue" ParameterName="@RETURN_VALUE" Precision="10" ProviderType="Int" Scale="0" Size="4" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="int" DbType="Int32" Direction="Input" ParameterName="@ID_Task" Precision="10" ProviderType="Int" Scale="0" Size="4" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="float" DbType="Double" Direction="Input" ParameterName="@WorkerDosisMargin" Precision="53" ProviderType="Float" Scale="0" Size="8" SourceColumnNullMapping="false" SourceVersion="Current" />
</Parameters>
</DbCommand>
</SelectCommand>
</DbSource>
</MainSource>
<Mappings>
<Mapping SourceColumn="ID_Task" DataSetColumn="ID_Task" />
<Mapping SourceColumn="Inst_CODE" DataSetColumn="Inst_CODE" />
<Mapping SourceColumn="TaskType_CODE" DataSetColumn="TaskType_CODE" />
<Mapping SourceColumn="Task_Name" DataSetColumn="Task_Name" />
<Mapping SourceColumn="TaskDescription" DataSetColumn="TaskDescription" />
<Mapping SourceColumn="EPDRad" DataSetColumn="EPDRad" />
<Mapping SourceColumn="ID_AlarmEPD" DataSetColumn="ID_AlarmEPD" />
<Mapping SourceColumn="TaskDateStart" DataSetColumn="TaskDateStart" />
<Mapping SourceColumn="TaskDateEnd" DataSetColumn="TaskDateEnd" />
<Mapping SourceColumn="TaskEnable" DataSetColumn="TaskEnable" />
<Mapping SourceColumn="ID_FNGainANGain" DataSetColumn="ID_FNGainANGain" />
<Mapping SourceColumn="Hp10Dose1" DataSetColumn="Hp10Dose1" />
<Mapping SourceColumn="Hp10Dose2" DataSetColumn="Hp10Dose2" />
<Mapping SourceColumn="Hp07Dose" DataSetColumn="Hp07Dose" />
<Mapping SourceColumn="HP10Rate1ON" DataSetColumn="HP10Rate1ON" />
<Mapping SourceColumn="HP10Rate1OFF" DataSetColumn="HP10Rate1OFF" />
<Mapping SourceColumn="HP10Rate2ON" DataSetColumn="HP10Rate2ON" />
<Mapping SourceColumn="HP10Rate2OFF" DataSetColumn="HP10Rate2OFF" />
<Mapping SourceColumn="HP07RateON" DataSetColumn="HP07RateON" />
<Mapping SourceColumn="HP07RateOFF" DataSetColumn="HP07RateOFF" />
<Mapping SourceColumn="FNGain_ANGainValue" DataSetColumn="FNGain_ANGainValue" />
<Mapping SourceColumn="InstallationActivity" DataSetColumn="InstallationActivity" />
<Mapping SourceColumn="Description" DataSetColumn="Description" />
<Mapping SourceColumn="Inst_CODE1" DataSetColumn="Inst_CODE1" />
<Mapping SourceColumn="MinWorkerDosisMargin" DataSetColumn="MinWorkerDosisMargin" />
<Mapping SourceColumn="MarginExceeded" DataSetColumn="MarginExceeded" />
<Mapping SourceColumn="ChirpRate" DataSetColumn="ChirpRate" />
</Mappings>
<Sources />
</TableAdapter>
<TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="GetTaskListTableAdapter" GeneratorDataComponentClassName="GetTaskListTableAdapter" Name="GetTaskList" UserDataComponentName="GetTaskListTableAdapter">
<MainSource>
<DbSource ConnectionRef="localConnectionString (Settings)" DbObjectName="eDosLocal.dbo.GetTaskList" DbObjectType="StoredProcedure" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="false" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="false" UserGetMethodName="GetData" UserSourceName="Fill">
<SelectCommand>
<DbCommand CommandType="StoredProcedure" ModifiedByUser="false">
<CommandText>dbo.GetTaskList</CommandText>
<Parameters>
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="int" DbType="Int32" Direction="ReturnValue" ParameterName="@RETURN_VALUE" Precision="10" ProviderType="Int" Scale="0" Size="4" SourceColumnNullMapping="false" SourceVersion="Current" />
</Parameters>
</DbCommand>
</SelectCommand>
</DbSource>
</MainSource>
<Mappings>
<Mapping SourceColumn="ID_Task" DataSetColumn="ID_Task" />
<Mapping SourceColumn="Inst_CODE" DataSetColumn="Inst_CODE" />
<Mapping SourceColumn="TaskType_CODE" DataSetColumn="TaskType_CODE" />
<Mapping SourceColumn="Task_Name" DataSetColumn="Task_Name" />
<Mapping SourceColumn="TaskDescription" DataSetColumn="TaskDescription" />
<Mapping SourceColumn="EPDRad" DataSetColumn="EPDRad" />
</Mappings>
<Sources />
</TableAdapter>
<TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="CommentOnEventTableAdapter" GeneratorDataComponentClassName="CommentOnEventTableAdapter" Name="CommentOnEvent" UserDataComponentName="CommentOnEventTableAdapter">
<MainSource>
<DbSource ConnectionRef="localConnectionString (Settings)" DbObjectName="eDosLocal.dbo.CommentOnEventSelect" DbObjectType="StoredProcedure" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="false" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="false" UserGetMethodName="GetData" UserSourceName="Fill">
<SelectCommand>
<DbCommand CommandType="StoredProcedure" ModifiedByUser="false">
<CommandText>dbo.CommentOnEventSelect</CommandText>
<Parameters>
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="int" DbType="Int32" Direction="ReturnValue" ParameterName="@RETURN_VALUE" Precision="10" ProviderType="Int" Scale="0" Size="4" SourceColumnNullMapping="false" SourceVersion="Current" />
</Parameters>
</DbCommand>
</SelectCommand>
</DbSource>
</MainSource>
<Mappings>
<Mapping SourceColumn="ID_CommnentOnEvent" DataSetColumn="ID_CommnentOnEvent" />
<Mapping SourceColumn="TriggerTable" DataSetColumn="TriggerTable" />
<Mapping SourceColumn="TriggerField" DataSetColumn="TriggerField" />
<Mapping SourceColumn="TriggerStatus" DataSetColumn="TriggerStatus" />
<Mapping SourceColumn="Comment_FR" DataSetColumn="Comment_FR" />
<Mapping SourceColumn="Comment_NL" DataSetColumn="Comment_NL" />
<Mapping SourceColumn="Comment_EN" DataSetColumn="Comment_EN" />
</Mappings>
<Sources />
</TableAdapter>
<TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="InstallationTableAdapter" GeneratorDataComponentClassName="InstallationTableAdapter" Name="Installation" UserDataComponentName="InstallationTableAdapter">
<MainSource>
<DbSource ConnectionRef="localConnectionString (Settings)" DbObjectName="eDosLocal.dbo.Installation" DbObjectType="Table" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="false" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="false" UserGetMethodName="GetData" UserSourceName="Fill">
<SelectCommand>
<DbCommand CommandType="Text" ModifiedByUser="true">
<CommandText>SELECT [Inst_CODE] ,[InstallationName]
FROM [eDosLocal].[dbo].[Installation] order by [InstallationName]</CommandText>
<Parameters />
</DbCommand>
</SelectCommand>
</DbSource>
</MainSource>
<Mappings>
<Mapping SourceColumn="Inst_CODE" DataSetColumn="Inst_CODE" />
<Mapping SourceColumn="InstallationName" DataSetColumn="InstallationName" />
</Mappings>
<Sources />
</TableAdapter>
<TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="GetPersonOverviewTableAdapter" GeneratorDataComponentClassName="GetPersonOverviewTableAdapter" Name="GetPersonOverview" UserDataComponentName="GetPersonOverviewTableAdapter">
<MainSource>
<DbSource ConnectionRef="localConnectionString (Settings)" DbObjectName="eDosLocal.dbo.GetPersonOverview" DbObjectType="StoredProcedure" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="false" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetData" UserSourceName="Fill">
<SelectCommand>
<DbCommand CommandType="StoredProcedure" ModifiedByUser="false">
<CommandText>dbo.GetPersonOverview</CommandText>
<Parameters>
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="int" DbType="Int32" Direction="ReturnValue" ParameterName="@RETURN_VALUE" Precision="10" ProviderType="Int" Scale="0" Size="4" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="int" DbType="Int32" Direction="Input" ParameterName="@PersID" Precision="10" ProviderType="Int" Scale="0" Size="4" SourceColumnNullMapping="false" SourceVersion="Current" />
</Parameters>
</DbCommand>
</SelectCommand>
</DbSource>
</MainSource>
<Mappings>
<Mapping SourceColumn="PersID" DataSetColumn="PersID" />
<Mapping SourceColumn="Type" DataSetColumn="Type" />
<Mapping SourceColumn="FirstName" DataSetColumn="FirstName" />
<Mapping SourceColumn="LastName" DataSetColumn="LastName" />
<Mapping SourceColumn="NickName" DataSetColumn="NickName" />
<Mapping SourceColumn="AccessAllow" DataSetColumn="AccessAllow" />
<Mapping SourceColumn="Language" DataSetColumn="Language" />
<Mapping SourceColumn="MarginHP10_M" DataSetColumn="MarginHP10_M" />
<Mapping SourceColumn="MarginHP10_Y" DataSetColumn="MarginHP10_Y" />
<Mapping SourceColumn="Margin" DataSetColumn="Margin" />
<Mapping SourceColumn="VisitIDLocked" DataSetColumn="VisitIDLocked" />
<Mapping SourceColumn="ID_CommentToPerson" DataSetColumn="ID_CommentToPerson" />
<Mapping SourceColumn="Comment" DataSetColumn="Comment" />
<Mapping SourceColumn="Deleted" DataSetColumn="Deleted" />
<Mapping SourceColumn="ReasonNoAccess" DataSetColumn="ReasonNoAccess" />
<Mapping SourceColumn="Dose_52W_microSv" DataSetColumn="Dose_52W_microSv" />
<Mapping SourceColumn="isAgent" DataSetColumn="isAgent" />
<Mapping SourceColumn="info" DataSetColumn="info" />
</Mappings>
<Sources />
</TableAdapter>
</Tables>
<Sources />
</DataSource>
</xs:appinfo>
</xs:annotation>
<xs:element name="DataSet1" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:EnableTableAdapterManager="true" msprop:Generator_UserDSName="DataSet1" msprop:Generator_DataSetName="DataSet1">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="GetTaskInfo" msprop:Generator_RowEvHandlerName="GetTaskInfoRowChangeEventHandler" msprop:Generator_RowDeletedName="GetTaskInfoRowDeleted" msprop:Generator_RowDeletingName="GetTaskInfoRowDeleting" msprop:Generator_RowEvArgName="GetTaskInfoRowChangeEvent" msprop:Generator_TablePropName="GetTaskInfo" msprop:Generator_RowChangedName="GetTaskInfoRowChanged" msprop:Generator_RowChangingName="GetTaskInfoRowChanging" msprop:Generator_TableClassName="GetTaskInfoDataTable" msprop:Generator_RowClassName="GetTaskInfoRow" msprop:Generator_TableVarName="tableGetTaskInfo" msprop:Generator_UserTableName="GetTaskInfo">
<xs:complexType>
<xs:sequence>
<xs:element name="ID_Task" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnPropNameInRow="ID_Task" msprop:Generator_ColumnPropNameInTable="ID_TaskColumn" msprop:Generator_ColumnVarNameInTable="columnID_Task" msprop:Generator_UserColumnName="ID_Task" type="xs:int" />
<xs:element name="Inst_CODE" msprop:Generator_ColumnPropNameInRow="Inst_CODE" msprop:Generator_ColumnPropNameInTable="Inst_CODEColumn" msprop:Generator_ColumnVarNameInTable="columnInst_CODE" msprop:Generator_UserColumnName="Inst_CODE" type="xs:int" minOccurs="0" />
<xs:element name="TaskType_CODE" msprop:Generator_ColumnPropNameInRow="TaskType_CODE" msprop:Generator_ColumnPropNameInTable="TaskType_CODEColumn" msprop:Generator_ColumnVarNameInTable="columnTaskType_CODE" msprop:Generator_UserColumnName="TaskType_CODE" type="xs:int" minOccurs="0" />
<xs:element name="Task_Name" msprop:Generator_ColumnPropNameInRow="Task_Name" msprop:Generator_ColumnPropNameInTable="Task_NameColumn" msprop:Generator_ColumnVarNameInTable="columnTask_Name" msprop:Generator_UserColumnName="Task_Name" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2147483647" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="TaskDescription" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInRow="TaskDescription" msprop:Generator_ColumnPropNameInTable="TaskDescriptionColumn" msprop:Generator_ColumnVarNameInTable="columnTaskDescription" msprop:Generator_UserColumnName="TaskDescription">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="EPDRad" msprop:Generator_ColumnPropNameInRow="EPDRad" msprop:Generator_ColumnPropNameInTable="EPDRadColumn" msprop:Generator_ColumnVarNameInTable="columnEPDRad" msprop:Generator_UserColumnName="EPDRad">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ID_AlarmEPD" msprop:Generator_ColumnPropNameInRow="ID_AlarmEPD" msprop:Generator_ColumnPropNameInTable="ID_AlarmEPDColumn" msprop:Generator_ColumnVarNameInTable="columnID_AlarmEPD" msprop:Generator_UserColumnName="ID_AlarmEPD" type="xs:int" minOccurs="0" />
<xs:element name="TaskDateStart" msprop:Generator_ColumnPropNameInRow="TaskDateStart" msprop:Generator_ColumnPropNameInTable="TaskDateStartColumn" msprop:Generator_ColumnVarNameInTable="columnTaskDateStart" msprop:Generator_UserColumnName="TaskDateStart" type="xs:dateTime" minOccurs="0" />
<xs:element name="TaskDateEnd" msprop:Generator_ColumnPropNameInRow="TaskDateEnd" msprop:Generator_ColumnPropNameInTable="TaskDateEndColumn" msprop:Generator_ColumnVarNameInTable="columnTaskDateEnd" msprop:Generator_UserColumnName="TaskDateEnd" type="xs:dateTime" minOccurs="0" />
<xs:element name="TaskEnable" msprop:Generator_ColumnPropNameInRow="TaskEnable" msprop:Generator_ColumnPropNameInTable="TaskEnableColumn" msprop:Generator_ColumnVarNameInTable="columnTaskEnable" msprop:Generator_UserColumnName="TaskEnable" type="xs:boolean" minOccurs="0" />
<xs:element name="ID_FNGainANGain" msprop:Generator_ColumnPropNameInRow="ID_FNGainANGain" msprop:Generator_ColumnPropNameInTable="ID_FNGainANGainColumn" msprop:Generator_ColumnVarNameInTable="columnID_FNGainANGain" msprop:Generator_UserColumnName="ID_FNGainANGain" type="xs:int" minOccurs="0" />
<xs:element name="Hp10Dose1" msprop:Generator_ColumnPropNameInRow="Hp10Dose1" msprop:Generator_ColumnPropNameInTable="Hp10Dose1Column" msprop:Generator_ColumnVarNameInTable="columnHp10Dose1" msprop:Generator_UserColumnName="Hp10Dose1" type="xs:double" minOccurs="0" />
<xs:element name="Hp10Dose2" msprop:Generator_ColumnPropNameInRow="Hp10Dose2" msprop:Generator_ColumnPropNameInTable="Hp10Dose2Column" msprop:Generator_ColumnVarNameInTable="columnHp10Dose2" msprop:Generator_UserColumnName="Hp10Dose2" type="xs:double" minOccurs="0" />
<xs:element name="Hp07Dose" msprop:Generator_ColumnPropNameInRow="Hp07Dose" msprop:Generator_ColumnPropNameInTable="Hp07DoseColumn" msprop:Generator_ColumnVarNameInTable="columnHp07Dose" msprop:Generator_UserColumnName="Hp07Dose" type="xs:double" minOccurs="0" />
<xs:element name="HP10Rate1ON" msprop:Generator_ColumnPropNameInRow="HP10Rate1ON" msprop:Generator_ColumnPropNameInTable="HP10Rate1ONColumn" msprop:Generator_ColumnVarNameInTable="columnHP10Rate1ON" msprop:Generator_UserColumnName="HP10Rate1ON" type="xs:double" minOccurs="0" />
<xs:element name="HP10Rate1OFF" msprop:Generator_ColumnPropNameInRow="HP10Rate1OFF" msprop:Generator_ColumnPropNameInTable="HP10Rate1OFFColumn" msprop:Generator_ColumnVarNameInTable="columnHP10Rate1OFF" msprop:Generator_UserColumnName="HP10Rate1OFF" type="xs:double" minOccurs="0" />
<xs:element name="HP10Rate2ON" msprop:Generator_ColumnPropNameInRow="HP10Rate2ON" msprop:Generator_ColumnPropNameInTable="HP10Rate2ONColumn" msprop:Generator_ColumnVarNameInTable="columnHP10Rate2ON" msprop:Generator_UserColumnName="HP10Rate2ON" type="xs:double" minOccurs="0" />
<xs:element name="HP10Rate2OFF" msprop:Generator_ColumnPropNameInRow="HP10Rate2OFF" msprop:Generator_ColumnPropNameInTable="HP10Rate2OFFColumn" msprop:Generator_ColumnVarNameInTable="columnHP10Rate2OFF" msprop:Generator_UserColumnName="HP10Rate2OFF" type="xs:double" minOccurs="0" />
<xs:element name="HP07RateON" msprop:Generator_ColumnPropNameInRow="HP07RateON" msprop:Generator_ColumnPropNameInTable="HP07RateONColumn" msprop:Generator_ColumnVarNameInTable="columnHP07RateON" msprop:Generator_UserColumnName="HP07RateON" type="xs:double" minOccurs="0" />
<xs:element name="HP07RateOFF" msprop:Generator_ColumnPropNameInRow="HP07RateOFF" msprop:Generator_ColumnPropNameInTable="HP07RateOFFColumn" msprop:Generator_ColumnVarNameInTable="columnHP07RateOFF" msprop:Generator_UserColumnName="HP07RateOFF" type="xs:double" minOccurs="0" />
<xs:element name="FNGain_ANGainValue" msprop:Generator_ColumnPropNameInRow="FNGain_ANGainValue" msprop:Generator_ColumnPropNameInTable="FNGain_ANGainValueColumn" msprop:Generator_ColumnVarNameInTable="columnFNGain_ANGainValue" msprop:Generator_UserColumnName="FNGain_ANGainValue" type="xs:double" minOccurs="0" />
<xs:element name="InstallationActivity" msprop:Generator_ColumnPropNameInRow="InstallationActivity" msprop:Generator_ColumnPropNameInTable="InstallationActivityColumn" msprop:Generator_ColumnVarNameInTable="columnInstallationActivity" msprop:Generator_UserColumnName="InstallationActivity" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="100" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Description" msprop:Generator_ColumnPropNameInRow="Description" msprop:Generator_ColumnPropNameInTable="DescriptionColumn" msprop:Generator_ColumnVarNameInTable="columnDescription" msprop:Generator_UserColumnName="Description" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="500" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Inst_CODE1" msprop:Generator_ColumnPropNameInRow="Inst_CODE1" msprop:Generator_ColumnPropNameInTable="Inst_CODE1Column" msprop:Generator_ColumnVarNameInTable="columnInst_CODE1" msprop:Generator_UserColumnName="Inst_CODE1" type="xs:int" minOccurs="0" />
<xs:element name="MinWorkerDosisMargin" msprop:Generator_ColumnPropNameInRow="MinWorkerDosisMargin" msprop:Generator_ColumnPropNameInTable="MinWorkerDosisMarginColumn" msprop:Generator_ColumnVarNameInTable="columnMinWorkerDosisMargin" msprop:Generator_UserColumnName="MinWorkerDosisMargin" type="xs:double" minOccurs="0" />
<xs:element name="MarginExceeded" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInRow="MarginExceeded" msprop:Generator_ColumnPropNameInTable="MarginExceededColumn" msprop:Generator_ColumnVarNameInTable="columnMarginExceeded" msprop:Generator_UserColumnName="MarginExceeded" type="xs:boolean" minOccurs="0" />
<xs:element name="ChirpRate" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInRow="ChirpRate" msprop:Generator_ColumnPropNameInTable="ChirpRateColumn" msprop:Generator_ColumnVarNameInTable="columnChirpRate" msprop:Generator_UserColumnName="ChirpRate" type="xs:float" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="GetTaskList" msprop:Generator_RowEvHandlerName="GetTaskListRowChangeEventHandler" msprop:Generator_RowDeletedName="GetTaskListRowDeleted" msprop:Generator_RowDeletingName="GetTaskListRowDeleting" msprop:Generator_RowEvArgName="GetTaskListRowChangeEvent" msprop:Generator_TablePropName="GetTaskList" msprop:Generator_RowChangedName="GetTaskListRowChanged" msprop:Generator_RowChangingName="GetTaskListRowChanging" msprop:Generator_TableClassName="GetTaskListDataTable" msprop:Generator_RowClassName="GetTaskListRow" msprop:Generator_TableVarName="tableGetTaskList" msprop:Generator_UserTableName="GetTaskList">
<xs:complexType>
<xs:sequence>
<xs:element name="ID_Task" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnPropNameInRow="ID_Task" msprop:Generator_ColumnPropNameInTable="ID_TaskColumn" msprop:Generator_ColumnVarNameInTable="columnID_Task" msprop:Generator_UserColumnName="ID_Task" type="xs:int" />
<xs:element name="Inst_CODE" msprop:Generator_ColumnPropNameInRow="Inst_CODE" msprop:Generator_ColumnPropNameInTable="Inst_CODEColumn" msprop:Generator_ColumnVarNameInTable="columnInst_CODE" msprop:Generator_UserColumnName="Inst_CODE" type="xs:int" minOccurs="0" />
<xs:element name="TaskType_CODE" msprop:Generator_ColumnPropNameInRow="TaskType_CODE" msprop:Generator_ColumnPropNameInTable="TaskType_CODEColumn" msprop:Generator_ColumnVarNameInTable="columnTaskType_CODE" msprop:Generator_UserColumnName="TaskType_CODE" type="xs:int" minOccurs="0" />
<xs:element name="Task_Name" msprop:Generator_ColumnPropNameInRow="Task_Name" msprop:Generator_ColumnPropNameInTable="Task_NameColumn" msprop:Generator_ColumnVarNameInTable="columnTask_Name" msprop:Generator_UserColumnName="Task_Name" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2147483647" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="TaskDescription" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInRow="TaskDescription" msprop:Generator_ColumnPropNameInTable="TaskDescriptionColumn" msprop:Generator_ColumnVarNameInTable="columnTaskDescription" msprop:Generator_UserColumnName="TaskDescription">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="EPDRad" msprop:Generator_ColumnPropNameInRow="EPDRad" msprop:Generator_ColumnPropNameInTable="EPDRadColumn" msprop:Generator_ColumnVarNameInTable="columnEPDRad" msprop:Generator_UserColumnName="EPDRad">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="CommentOnEvent" msprop:Generator_RowEvHandlerName="CommentOnEventRowChangeEventHandler" msprop:Generator_RowDeletedName="CommentOnEventRowDeleted" msprop:Generator_RowDeletingName="CommentOnEventRowDeleting" msprop:Generator_RowEvArgName="CommentOnEventRowChangeEvent" msprop:Generator_TablePropName="CommentOnEvent" msprop:Generator_RowChangedName="CommentOnEventRowChanged" msprop:Generator_RowChangingName="CommentOnEventRowChanging" msprop:Generator_TableClassName="CommentOnEventDataTable" msprop:Generator_RowClassName="CommentOnEventRow" msprop:Generator_TableVarName="tableCommentOnEvent" msprop:Generator_UserTableName="CommentOnEvent">
<xs:complexType>
<xs:sequence>
<xs:element name="ID_CommnentOnEvent" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnPropNameInRow="ID_CommnentOnEvent" msprop:Generator_ColumnPropNameInTable="ID_CommnentOnEventColumn" msprop:Generator_ColumnVarNameInTable="columnID_CommnentOnEvent" msprop:Generator_UserColumnName="ID_CommnentOnEvent" type="xs:int" />
<xs:element name="TriggerTable" msprop:Generator_ColumnPropNameInRow="TriggerTable" msprop:Generator_ColumnPropNameInTable="TriggerTableColumn" msprop:Generator_ColumnVarNameInTable="columnTriggerTable" msprop:Generator_UserColumnName="TriggerTable" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="100" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="TriggerField" msprop:Generator_ColumnPropNameInRow="TriggerField" msprop:Generator_ColumnPropNameInTable="TriggerFieldColumn" msprop:Generator_ColumnVarNameInTable="columnTriggerField" msprop:Generator_UserColumnName="TriggerField" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="100" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="TriggerStatus" msprop:Generator_ColumnPropNameInRow="TriggerStatus" msprop:Generator_ColumnPropNameInTable="TriggerStatusColumn" msprop:Generator_ColumnVarNameInTable="columnTriggerStatus" msprop:Generator_UserColumnName="TriggerStatus" type="xs:boolean" minOccurs="0" />
<xs:element name="Comment_FR" msprop:Generator_ColumnPropNameInRow="Comment_FR" msprop:Generator_ColumnPropNameInTable="Comment_FRColumn" msprop:Generator_ColumnVarNameInTable="columnComment_FR" msprop:Generator_UserColumnName="Comment_FR" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="5000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Comment_NL" msprop:Generator_ColumnPropNameInRow="Comment_NL" msprop:Generator_ColumnPropNameInTable="Comment_NLColumn" msprop:Generator_ColumnVarNameInTable="columnComment_NL" msprop:Generator_UserColumnName="Comment_NL" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="5000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Comment_EN" msprop:Generator_ColumnPropNameInRow="Comment_EN" msprop:Generator_ColumnPropNameInTable="Comment_ENColumn" msprop:Generator_ColumnVarNameInTable="columnComment_EN" msprop:Generator_UserColumnName="Comment_EN" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="5000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Installation" msprop:Generator_RowEvHandlerName="InstallationRowChangeEventHandler" msprop:Generator_RowDeletedName="InstallationRowDeleted" msprop:Generator_RowDeletingName="InstallationRowDeleting" msprop:Generator_RowEvArgName="InstallationRowChangeEvent" msprop:Generator_TablePropName="Installation" msprop:Generator_RowChangedName="InstallationRowChanged" msprop:Generator_RowChangingName="InstallationRowChanging" msprop:Generator_TableClassName="InstallationDataTable" msprop:Generator_RowClassName="InstallationRow" msprop:Generator_TableVarName="tableInstallation" msprop:Generator_UserTableName="Installation">
<xs:complexType>
<xs:sequence>
<xs:element name="Inst_CODE" msprop:Generator_ColumnPropNameInRow="Inst_CODE" msprop:Generator_ColumnPropNameInTable="Inst_CODEColumn" msprop:Generator_ColumnVarNameInTable="columnInst_CODE" msprop:Generator_UserColumnName="Inst_CODE" type="xs:int" />
<xs:element name="InstallationName" msprop:Generator_ColumnPropNameInRow="InstallationName" msprop:Generator_ColumnPropNameInTable="InstallationNameColumn" msprop:Generator_ColumnVarNameInTable="columnInstallationName" msprop:Generator_UserColumnName="InstallationName" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="GetPersonOverview" msprop:Generator_RowEvHandlerName="GetPersonOverviewRowChangeEventHandler" msprop:Generator_RowDeletedName="GetPersonOverviewRowDeleted" msprop:Generator_RowDeletingName="GetPersonOverviewRowDeleting" msprop:Generator_RowEvArgName="GetPersonOverviewRowChangeEvent" msprop:Generator_TablePropName="GetPersonOverview" msprop:Generator_RowChangedName="GetPersonOverviewRowChanged" msprop:Generator_RowChangingName="GetPersonOverviewRowChanging" msprop:Generator_TableClassName="GetPersonOverviewDataTable" msprop:Generator_RowClassName="GetPersonOverviewRow" msprop:Generator_TableVarName="tableGetPersonOverview" msprop:Generator_UserTableName="GetPersonOverview">
<xs:complexType>
<xs:sequence>
<xs:element name="PersID" msprop:Generator_ColumnPropNameInRow="PersID" msprop:Generator_ColumnPropNameInTable="PersIDColumn" msprop:Generator_ColumnVarNameInTable="columnPersID" msprop:Generator_UserColumnName="PersID" type="xs:int" />
<xs:element name="Type" msprop:Generator_ColumnPropNameInRow="Type" msprop:Generator_ColumnPropNameInTable="TypeColumn" msprop:Generator_ColumnVarNameInTable="columnType" msprop:Generator_UserColumnName="Type" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="FirstName" msprop:Generator_ColumnPropNameInRow="FirstName" msprop:Generator_ColumnPropNameInTable="FirstNameColumn" msprop:Generator_ColumnVarNameInTable="columnFirstName" msprop:Generator_UserColumnName="FirstName" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="LastName" msprop:Generator_ColumnPropNameInRow="LastName" msprop:Generator_ColumnPropNameInTable="LastNameColumn" msprop:Generator_ColumnVarNameInTable="columnLastName" msprop:Generator_UserColumnName="LastName" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="NickName" msprop:Generator_ColumnPropNameInRow="NickName" msprop:Generator_ColumnPropNameInTable="NickNameColumn" msprop:Generator_ColumnVarNameInTable="columnNickName" msprop:Generator_UserColumnName="NickName" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="AccessAllow" msprop:Generator_ColumnPropNameInRow="AccessAllow" msprop:Generator_ColumnPropNameInTable="AccessAllowColumn" msprop:Generator_ColumnVarNameInTable="columnAccessAllow" msprop:Generator_UserColumnName="AccessAllow" type="xs:boolean" minOccurs="0" />
<xs:element name="Language" msprop:Generator_ColumnPropNameInRow="Language" msprop:Generator_ColumnPropNameInTable="LanguageColumn" msprop:Generator_ColumnVarNameInTable="columnLanguage" msprop:Generator_UserColumnName="Language">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="1" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="MarginHP10_M" msprop:Generator_ColumnPropNameInRow="MarginHP10_M" msprop:Generator_ColumnPropNameInTable="MarginHP10_MColumn" msprop:Generator_ColumnVarNameInTable="columnMarginHP10_M" msprop:Generator_UserColumnName="MarginHP10_M" type="xs:decimal" minOccurs="0" />
<xs:element name="MarginHP10_Y" msprop:Generator_ColumnPropNameInRow="MarginHP10_Y" msprop:Generator_ColumnPropNameInTable="MarginHP10_YColumn" msprop:Generator_ColumnVarNameInTable="columnMarginHP10_Y" msprop:Generator_UserColumnName="MarginHP10_Y" type="xs:decimal" minOccurs="0" />
<xs:element name="Margin" msprop:Generator_ColumnPropNameInRow="Margin" msprop:Generator_ColumnPropNameInTable="MarginColumn" msprop:Generator_ColumnVarNameInTable="columnMargin" msprop:Generator_UserColumnName="Margin" type="xs:decimal" minOccurs="0" />
<xs:element name="VisitIDLocked" msprop:Generator_ColumnPropNameInRow="VisitIDLocked" msprop:Generator_ColumnPropNameInTable="VisitIDLockedColumn" msprop:Generator_ColumnVarNameInTable="columnVisitIDLocked" msprop:Generator_UserColumnName="VisitIDLocked" type="xs:int" />
<xs:element name="ID_CommentToPerson" msprop:Generator_ColumnPropNameInRow="ID_CommentToPerson" msprop:Generator_ColumnPropNameInTable="ID_CommentToPersonColumn" msprop:Generator_ColumnVarNameInTable="columnID_CommentToPerson" msprop:Generator_UserColumnName="ID_CommentToPerson" type="xs:int" minOccurs="0" />
<xs:element name="Comment" msprop:Generator_ColumnPropNameInRow="Comment" msprop:Generator_ColumnPropNameInTable="CommentColumn" msprop:Generator_ColumnVarNameInTable="columnComment" msprop:Generator_UserColumnName="Comment" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="1000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Deleted" msprop:Generator_ColumnPropNameInRow="Deleted" msprop:Generator_ColumnPropNameInTable="DeletedColumn" msprop:Generator_ColumnVarNameInTable="columnDeleted" msprop:Generator_UserColumnName="Deleted" type="xs:boolean" />
<xs:element name="ReasonNoAccess" msprop:Generator_ColumnPropNameInRow="ReasonNoAccess" msprop:Generator_ColumnPropNameInTable="ReasonNoAccessColumn" msprop:Generator_ColumnVarNameInTable="columnReasonNoAccess" msprop:Generator_UserColumnName="ReasonNoAccess">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="5000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Dose_52W_microSv" msprop:Generator_ColumnPropNameInRow="Dose_52W_microSv" msprop:Generator_ColumnPropNameInTable="Dose_52W_microSvColumn" msprop:Generator_ColumnVarNameInTable="columnDose_52W_microSv" msprop:Generator_UserColumnName="Dose_52W_microSv" type="xs:double" minOccurs="0" />
<xs:element name="isAgent" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInRow="isAgent" msprop:Generator_ColumnPropNameInTable="isAgentColumn" msprop:Generator_ColumnVarNameInTable="columnisAgent" msprop:Generator_UserColumnName="isAgent" type="xs:boolean" minOccurs="0" />
<xs:element name="info" msprop:Generator_ColumnPropNameInRow="info" msprop:Generator_ColumnPropNameInTable="infoColumn" msprop:Generator_ColumnVarNameInTable="columninfo" msprop:Generator_UserColumnName="info" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="2147483647" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:unique name="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:GetTaskInfo" />
<xs:field xpath="mstns:ID_Task" />
</xs:unique>
<xs:unique name="GetTaskList_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:GetTaskList" />
<xs:field xpath="mstns:ID_Task" />
</xs:unique>
<xs:unique name="CommentOnEvent_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:CommentOnEvent" />
<xs:field xpath="mstns:ID_CommnentOnEvent" />
</xs:unique>
<xs:unique name="GetPersonOverview_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:GetPersonOverview" />
<xs:field xpath="mstns:PersID" />
</xs:unique>
</xs:element>
</xs:schema>

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<!--<autogenerated>
This code was generated by a tool to store the dataset designer's layout information.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DiagramLayout xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ex:showrelationlabel="False" ViewPortX="0" ViewPortY="45" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
<Shapes>
<Shape ID="DesignTable:GetTaskInfo" ZOrder="5" X="285" Y="59" Height="305" Width="269" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:GetTaskList" ZOrder="4" X="58" Y="55" Height="191" Width="211" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="140" />
<Shape ID="DesignTable:CommentOnEvent" ZOrder="3" X="592" Y="61" Height="210" Width="285" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="159" />
<Shape ID="DesignTable:Installation" ZOrder="2" X="591" Y="295" Height="135" Width="247" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="76" />
<Shape ID="DesignTable:GetPersonOverview" ZOrder="1" X="980" Y="98" Height="305" Width="259" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
</Shapes>
<Connectors />
</DiagramLayout>

View file

@ -0,0 +1,126 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using cspl = LSWLib.CLog;
namespace eDosStation
{
static class DecodeResults
{
static readonly string[] names =
{
"ReadSensitivities",
"ReadDetectorThresholds",
"fReadDoses",
"ReadTotalDoses",
"ReadQualityData",
"ReadPeakRates",
"ClearTotalDose",
"ClearDose",
"ClearPeakRates",
"ClearFaultStatus",
"ClearLatchedAlarms",
"EpdOnOff",
"ReadAlarmConfiguration",
"ReadAlarmThresholds",
"WriteAlarmThresholds",
"WriteRateOffPercentage",
"DeissueEPD",
"SetBaselineCounters",
"WriteWearerId",
"ReadBaselineCounts",
"MfrLogin_R2",
"WriteSensitivities_R2",
"WriteAccessLevelAmin",
"WriteAccessLevelOpen",
"WriteQuickAccessDisplays_R3",
"WriteDisplayEnables_R3",
"WriteDisplayEnablePermissions_R3",
"WriteAlarmConfiguration_R3",
"WriteOffModeDisplay_R3",
"WriteSwitchOnFromButton_R3",
"WriteChirpSensitivity",
"WriteChirpEnable_R3","WriteRTC_R3","ReadStatus","ReadEpdIdentities","ReadCounts","ReadWearerId","ReadRTC"
,"DestroyReaderInterface" //0=ok
,"Disconnect" , "DisconnectAndNotify" //0=ok
,"StartDiscover","IssueEPD","EnableProtectedSession_R3"
,"CreateReaderInterface"
,"OpenReader","TestVibe"
};
private static string GetName(int func)
{
if (func >= 0 && func < names.Length) return names[func]; else return func.ToString();
}
private static string Getresult(int rval)
{
string rv;
switch (rval) {
case 0: rv = "r_OK"; break;
case -1: rv = "r_UnknownError"; break;
case -2: rv = "r_InvalidCommsHandle"; break;
case -3: rv = "r_InvalidPortName"; break;
case -4: rv = "r_PortAlreadyOpen"; break;
case -5: rv = "r_PortClosed"; break;
case -6: rv = "r_OperationFailed"; break;
case -7: rv = "r_InvalidState"; break;
case -8: rv = "r_InvalidCompletionToken"; break;
case -9: rv = "r_OperationTimeout"; break;
case -100: rv = "r_UnknownCmd"; break;
case -101: rv = "r_InvalidParam"; break;
case -102: rv = "r_InsufficientPriv"; break;
case -103: rv = "r_UnsupportedOp"; break;
case -104: rv = "r_FunctionFail"; break;
case -105: rv = "r_InvalidOp"; break;
case -106: rv = "r_IncompleteCommand"; break;
case -107: rv = "r_ResponseTooBig"; break; //response exceeded single frame length
case -108: rv = "r_ErrorBadStoredData"; break;
case -109: rv = "r_InvalidResponseDataLength"; break;
case -110: rv = "r_PayloadTooBig"; break;
case -111: rv = "r_ParseFailure"; break;
case -112: rv = "r_EEPROMWriteFailure"; break;
case -113: rv = "r_Busy"; break;
case -121: rv = "r_EEPROMReadFailure"; break;
case -122: rv = "r_WearerNameMismatch"; break;
case -123: rv = "r_DataTooLongForBuffer"; break;
case -200: rv = "r_ErrorUnexpectedResponse"; break;
case -201: rv = "r_ErrorNotProcessed"; break; //command not processed due to previous failure
case -202: rv = "r_ErrorNotConnected"; break;
case -203: rv = "r_ErrorUserCancelled"; break;
default: rv = rval.ToString(); break;
}
return rv;
}
public static string decodesteps(System.Collections.Generic.List<EpdBaseClr.cStepValues> Lst)
{
if (Lst != null)
{
System.Text.StringBuilder sb = new StringBuilder();
for (int s = 0; s < Lst.Count; s++)
{
sb.Append(GetName(Lst[s].func));
sb.Append(": commit : ");
sb.Append(Getresult(Lst[s].commitrv));
sb.Append(": End : ");
sb.AppendLine(Getresult(Lst[s].endrv));
}
return sb.ToString();
}
else return "List Empty";
}
public static void logsteps(string module, System.Collections.Generic.List<EpdBaseClr.cStepValues> Lst, cspl spl)
{
if (Lst != null)
for (int s = 0; s < Lst.Count; s++)
{
string msg = $"{s} {GetName(Lst[s].func)} commit: {Getresult(Lst[s].commitrv)} end : {Getresult(Lst[s].endrv)} ({Lst[s].endrv})";
spl?.WriteSplunkLog(module, null, Lst[s].commitrv == 0 && Lst[s].endrv == 0 ? cspl.iseverity.info : cspl.iseverity.err, msg);
}
}
}
}

View file

@ -0,0 +1,58 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
namespace eDosStation
{
static class Decoder
{
static StackPanel sp;
private static void tb_Add( string s)
{
TextBlock x = new TextBlock();
x.Text = s;
sp.Children.Add(x);
}
public static void AlarmToTextBox(StackPanel s,EpdBaseClr.Epd2 ep)
{
sp = s;
if (ep.DetectorsOn > 0) tb_Add("DetectorsOn");
if (ep.EPDIssued ) tb_Add("EPD Issued");
//if (ep.EPDLocked > 0) tb_Add("EPD Locked");
if (ep.EPDTesting > 0) tb_Add("EPD Detector test active");
if (ep.EPDProcSec > 0) tb_Add("EPD Processing every second");
if (ep.EPDFaulty > 0) tb_Add("EPD Faulty");
if (ep.EPDNewFault > 0) tb_Add("EPD New Fault in History");
if (ep.EPDComFault > 0) tb_Add("EPD Communication fault");
if (ep.EPDCalFault > 0) tb_Add("EPD Calibration factors faulty");
if (ep.EPDDetFault > 0) tb_Add("EPD Detector faulty");
if (ep.EPDEprFault > 0) tb_Add("EPD Eprom faulty");
if (ep.EPDTrhFault > 0) tb_Add("EPD Tresholds faulty");
if (ep.EPDOthFault > 0) tb_Add("EPD Other Fault");
if (ep.AlarmDoseHP101G > 0) tb_Add("Alarm Dose HP10l");
if (ep.AlarmDoseHP102G > 0) tb_Add("Alarm Dose HP10h");
if (ep.AlarmDoseHP07N > 0) tb_Add("Alarm Dose HP07");
if (ep.AlarmRateHP101G > 0) tb_Add("Alarm RateHP10 ");
if (ep.AlarmRateHP102G > 0) tb_Add("Alarm RateHP10 ");
if (ep.AlarmRateHP07N > 0) tb_Add("Alarm Rate HP07");
if (ep.OtherAlarmRateHp101G > 0) tb_Add("Alarm Rate Hp10 /G");
if (ep.OtherAlarmRateHp102G > 0) tb_Add("Alarm Rate Hp10 /G");
if (ep.OtherAlarmRateHp07N > 0) tb_Add("Alarm Rate Hp07 /HPN");
if (ep.OtherAlarmReturn > 0) tb_Add("Please Return");
if (ep.OtherAlarmBatLow > 0) tb_Add("Battery Low");
if (ep.OtherAlarmCarrier > 0) tb_Add("Carrier present");
if (ep.OtherAlarmBatVolt > 0) tb_Add("Battery Volt");
}
}
}

View file

@ -0,0 +1,407 @@
<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:eDosStation"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
x:Class="eDosStation.EntryBadge"
mc:Ignorable="d"
Title="EntryBadge"
Height="980" Width="1820" ResizeMode="NoResize" FontFamily="Segoe UI" FontSize="36"
Loaded="Window_Loaded"
WindowStartupLocation="CenterScreen" WindowState="Maximized" Closing="Window_Closing"
>
<Window.Resources>
<local:DataSet1 x:Key="dataSet1"/>
<CollectionViewSource x:Key="getTaskListViewSource" Source="{Binding GetTaskInfo, Source={StaticResource dataSet1}}" />
<Style x:Key="tblHeaderLabel" TargetType="TextBlock">
<Setter Property="Background" Value="{StaticResource sckbLB}" />
<Setter Property="Padding" Value="20,0,20,0" />
<Setter Property="TextAlignment" Value="Center"/>
<Setter Property="FontSize" Value="30"/>
<Setter Property="FontWeight" Value="Bold"/>
</Style>
<Style x:Key="tblIssuedLabel" TargetType="TextBlock">
<Setter Property="Background" Value="{StaticResource sckbLB}" />
<Setter Property="Padding" Value="20,0,20,0" />
<Setter Property="TextAlignment" Value="Right"/>
</Style>
<Style x:Key="tblIssuedValue" TargetType="TextBlock">
<Setter Property="TextAlignment" Value="Right" />
<Setter Property="Padding" Value="20,0,20,0" />
</Style>
<Style x:Key="tblIssuedValueTitle" TargetType="TextBlock">
<Setter Property="TextAlignment" Value="Right" />
<Setter Property="Padding" Value="20,0,20,0" />
<Setter Property="FontWeight" Value="Bold"/>
</Style>
</Window.Resources>
<DockPanel VerticalAlignment="Top">
<StackPanel DockPanel.Dock="Top" HorizontalAlignment="Left">
<Image Source="/Images/logoh120.png" Height="60"/>
</StackPanel>
<StackPanel DockPanel.Dock="Bottom" HorizontalAlignment="Center">
<!--<StaticResource ResourceKey="tbFooter" />-->
</StackPanel>
<TabControl Name="tb" TabStripPlacement="Top" VerticalAlignment="Center" Padding="-1" >
<TabItem Name="tbEntry" VerticalAlignment="Center" >
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,100,10,10" >
<Border Background="{Binding Mode=OneWay, Source={StaticResource sckbLB}}" TextBlock.FontSize="24" TextBlock.LineHeight="30px" Padding="20,20,20,20" CornerRadius="10" BorderThickness="2" BorderBrush="Blue" >
<StackPanel HorizontalAlignment="Center" >
<TextBlock TextAlignment="Center" Padding="10,10,10,10" >
<LineBreak/>
<Image Source="/Images/Mannetjet.png" Width="60" Margin="0,0,50,0"/>
<Run Foreground="{Binding Mode=OneWay, Source={StaticResource sckbP}}" FontSize="28" FontWeight="Bold">Welcome to eDOS</Run>
<LineBreak/><LineBreak/>
<Run Background="LightGreen">Entry Process is ready</Run>
<LineBreak/><LineBreak/>
<Run>Please scan your badge on the badge reader</Run>
<LineBreak/><LineBreak/>
</TextBlock>
</StackPanel>
</Border>
<StackPanel VerticalAlignment="Center">
<telerik:RadButton Name="LeesCancel" Content="Cancel" Click="LeesCancel_Click" Margin="20,20,0,0" Style="{DynamicResource OkCancelButton}" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock x:Name="CSN" />
<TextBlock x:Name="Site" />
<TextBlock x:Name="Code" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,50,0,0" Name="pTestButtons" Visibility="Collapsed" />
</StackPanel>
</TabItem>
<TabItem Name="tbUser" VerticalAlignment="Center" >
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Vertical" Margin="50,50,50,50">
<Border Background="AliceBlue" TextBlock.FontSize="20" Padding="20,20,20,20" >
<StackPanel HorizontalAlignment="Center" >
<TextBlock Name="Username" Text="" TextAlignment="Center" Margin="0,20,0,20" HorizontalAlignment="Stretch"/>
<TextBlock Name="UserAccess" Text="Welcome to eDOS" TextAlignment="Center" MaxWidth="600" TextWrapping="Wrap" HorizontalAlignment="Stretch" />
</StackPanel>
</Border>
<Border Name="boxComment" Background="AliceBlue" TextBlock.FontSize="15" Padding="20,20,20,20" >
<StackPanel HorizontalAlignment="Center" >
<TextBlock Text="Comment" />
<TextBlock x:Name="UserComment" />
</StackPanel>
</Border>
<ProgressBar x:Name="pUserSeconds" Background="Blue" Value="5" Maximum="10" Tag="AA" >
<ProgressBar.Effect>
<DropShadowEffect/>
</ProgressBar.Effect>
</ProgressBar>
<TextBlock x:Name="tUserSeconds" Text="10" TextAlignment="Center" HorizontalAlignment="Stretch" />
<telerik:RadButton Content="OK" Name="bUserRead" Click="BUserRead_Click" Style="{DynamicResource OkCancelButton}" Margin="50,50,50,50"/>
</StackPanel>
</TabItem>
<TabItem Name="tbTask" VerticalAlignment="Top">
<Grid DataContext="{Binding Mode=OneWay, Source={StaticResource getTaskListViewSource}}" >
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="*" />
<RowDefinition Height="auto" />
<RowDefinition Height="80" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.ColumnSpan="3" Text="Naam" Name="Naam" HorizontalAlignment="Stretch" TextAlignment="Center" FontWeight="Bold" Background="Azure" FontSize="15" />
<Border Grid.Row="1" Grid.ColumnSpan="3" Background="{StaticResource sckbLB}" HorizontalAlignment="Stretch" CornerRadius="10" VerticalAlignment="Top" >
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" Grid.Column="0">
<telerik:RadToggleButton Name="cbNormal" HorizontalAlignment="Left" Width="150" Content="Normal" TextBlock.FontSize="24" Click="CbNormal_Click" IsChecked="True" CornerRadius="15" />
<telerik:RadToggleButton Name="cbAlara" HorizontalAlignment="Left" Width="150" Content="Alara" TextBlock.FontSize="24" Click="CbAlara_Click" IsChecked="False" CornerRadius="15" />
</StackPanel>
<TextBlock Grid.Column="1" FontSize="36" TextAlignment="Center" Text="Choose a task" />
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Grid.Column="3">
<telerik:RadToggleButton Name="cbInst1" HorizontalAlignment="Left" Width="150" Content="Inst1" TextBlock.FontSize="24" Click="CbInst1_Click" IsChecked="True" CornerRadius="15" />
<telerik:RadToggleButton Name="cbInst2" HorizontalAlignment="Left" Width="150" Content="Inst2" TextBlock.FontSize="24" Click="CbInst2_Click" IsChecked="false" Visibility="Collapsed" CornerRadius="15" />
</StackPanel>
</Grid>
</Border>
<StackPanel Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3" Orientation="Vertical" VerticalAlignment="Top" HorizontalAlignment="Stretch" >
<Border MaxHeight="700" HorizontalAlignment="Left" VerticalAlignment="Top">
<ScrollViewer VerticalScrollBarVisibility="Visible" Name="scrollTask" Visibility="Visible" HorizontalAlignment="Stretch" VerticalAlignment="Top" >
<ListBox ItemsSource="{Binding Mode=OneWay}" SelectedValuePath="ID_Task" SelectionChanged="ListBox_SelectionChanged" ScrollViewer.CanContentScroll="False" Name="LB1" >
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<telerik:RadUniformGrid Columns="3" IsItemsHost="True" HorizontalAlignment="Left" VerticalAlignment="Center" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" TextBlock.FontSize="20" Margin="5,5,5,5" Height="20" HorizontalAlignment="Left" VerticalAlignment="Center" >
<TextBlock Text="{Binding TaskType_CODE}" Width="60" TextWrapping="NoWrap" FontSize="18" HorizontalAlignment="Left" >
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding EPDRad}" Value="BG">
<Setter Property="Background" Value="LightGray"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding EPDRad}" Value="NG">
<Setter Property="Background" Value="Black"></Setter>
<Setter Property="Foreground" Value="White"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<TextBlock Text="{Binding Task_Name}" Width="410" FontSize="17" TextWrapping="Wrap" HorizontalAlignment="Left" Margin="10,0,0,0" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<!--<telerik:RadMultiColumnComboBox DisplayMemberPath="Task_Name" Width="700" HorizontalAlignment="Stretch" >
<telerik:RadMultiColumnComboBox.ItemsSourceProvider>
<telerik:GridViewItemsSourceProvider ItemsSource="{Binding}" />
</telerik:RadMultiColumnComboBox.ItemsSourceProvider>
</telerik:RadMultiColumnComboBox>-->
</ScrollViewer>
</Border>
<Grid Name="numPanel" Width="600" Height="300" Visibility="Collapsed" >
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Border Grid.Row="0" Grid.ColumnSpan="3" BorderBrush="Black" BorderThickness="1" Padding="20,10,20,10">
<TextBlock Text="0" TextAlignment="Right" Background="AliceBlue" Name="numPanelDisplay" />
</Border>
<TextBlock Grid.Row="0" Grid.Column="3" Text="Task" TextAlignment="Center" />
<Button Content="7" Grid.Row="1" Grid.Column="0" Name="numPanel7" Tag="7" Click="numPanel_Click" />
<Button Content="8" Grid.Row="1" Grid.Column="1" Name="numPanel8" Tag="8" Click="numPanel_Click" />
<Button Content="9" Grid.Row="1" Grid.Column="2" Name="numPanel9" Tag="9" Click="numPanel_Click" />
<Button Content="Clear" Grid.Row="1" Grid.Column="4" Name="numPanelClear" Tag="C" Click="numPanel_Click" />
<Button Content="4" Grid.Row="2" Grid.Column="0" Name="numPanel4" Tag="4" Click="numPanel_Click" />
<Button Content="5" Grid.Row="2" Grid.Column="1" Name="numPanel5" Tag="5" Click="numPanel_Click" />
<Button Content="6" Grid.Row="2" Grid.Column="2" Name="numPanel6" Tag="6" Click="numPanel_Click" />
<Button Content="1" Grid.Row="3" Grid.Column="0" Name="numPanel1" Tag="1" Click="numPanel_Click" />
<Button Content="2" Grid.Row="3" Grid.Column="1" Name="numPanel2" Tag="2" Click="numPanel_Click" />
<Button Content="3" Grid.Row="3" Grid.Column="2" Name="numPanel3" Tag="3" Click="numPanel_Click" />
<Button Content="0" Grid.Row="4" Grid.Column="0" Name="numPanel0" Tag="0" Click="numPanel_Click" />
<Button Content="&lt;X" Grid.Row="4" Grid.Column="2" Name="numPanelDel" Tag="B" Click="numPanel_Click" />
<Button Content="ENTER" Grid.Row="4" Grid.Column="3" Name="numPanelEnter" Tag="E" Click="numPanel_Click" />
</Grid>
</StackPanel>
<Grid Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="3" Margin="10,10,10,10" TextBlock.FontSize="12" TextBlock.LineHeight="12" Name="gridTaskSummary" >
<Grid.RowDefinitions>
<RowDefinition Height="50" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<Image Grid.Row="0" Grid.RowSpan="5" Height="60" VerticalAlignment="Center" Margin="5,10,50,5" >
<Image.Style>
<Style TargetType="{x:Type Image}">
<Style.Triggers>
<DataTrigger Binding="{Binding EPDRad}" Value="BG">
<Setter Property="Source" Value="{StaticResource iBG}"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding EPDRad}" Value="NG">
<Setter Property="Source" Value="{StaticResource iNG}"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
<TextBlock Grid.Row="1" Grid.Column="1" >
<Run FontWeight="Bold" Text="Task: "/>
<Run Text="{Binding TaskType_CODE,Mode=OneWay}" />
</TextBlock>
<TextBlock Grid.Row="1" Grid.Column="2" >
<Run FontWeight="Bold" Text="Hp07Dose: "/>
<Run Text="{Binding Hp07Dose,Mode=OneWay,StringFormat={}{0:0.00} µSv}" />
</TextBlock>
<TextBlock Grid.Row="1" Grid.Column="3" >
<Run FontWeight="Bold" Text="Hp10Dose L: "/>
<Run Text="{Binding Hp10Dose1,StringFormat={}{0:0.00} µSv}" />
<Run FontWeight="Bold" Text="H: "/>
<Run Text="{Binding Hp10Dose2,StringFormat={}{0:0.00} µSv}" />
</TextBlock>
<TextBlock Grid.Row="2" Grid.Column="1" >
<Run FontWeight="Bold" Text="Hp07Rate Off: "/>
<Run Text="{Binding HP07RateOFF,StringFormat={}{0:0.00} µSv/h}" />
<Run FontWeight="Bold" Text=" On: "/>
<Run Text="{Binding HP07RateON,StringFormat={}{0:0.00} µSv/h}" />
</TextBlock>
<TextBlock Grid.Row="2" Grid.Column="2" >
<Run FontWeight="Bold" Text="Hp10Rate Off: "/>
<Run Text="{Binding HP10Rate1OFF,StringFormat={}{0:0.00} µSv/h}" />
<Run FontWeight="Bold" Text=" On: "/>
<Run Text="{Binding HP10Rate1ON,StringFormat={}{0:0.00} µSv/h}" />
</TextBlock>
<TextBlock Grid.Row="3" Grid.Column="1" >
<Run FontWeight="Bold" Text="Type : "/>
<Run Text="{Binding EPDRad}" />
</TextBlock>
<TextBlock Grid.Row="3" Grid.Column="2" >
<Run FontWeight="Bold" Text="Gain : "/>
<Run Text="{Binding FNGain_ANGainValue,StringFormat={}{0:0.00}}" />
</TextBlock>
<TextBlock Grid.Row="3" Grid.Column="3" >
<Run FontWeight="Bold" Text="Dose margin : "/>
<Run Text="{Binding MinWorkerDosisMargin,StringFormat={}{0:0.00}}" />
</TextBlock>
</Grid>
<StackPanel Grid.Row="4" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center" >
<telerik:RadButton Name="TaskCancel" Content="Cancel" Click="TaskCancel_Click" Width="300" Style="{DynamicResource OkCancelButton}" Margin="20,0,0,0" />
</StackPanel>
<StackPanel Grid.Row="4" Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Center" >
<telerik:RadButton Name="ShowNumpad" Content="Code" Width="300" Style="{DynamicResource OkCancelButton}" Margin="20,0,0,0" Click="ShowNumpad_Click" />
</StackPanel>
<StackPanel Grid.Row="4" Grid.Column="2" HorizontalAlignment="Stretch" VerticalAlignment="Center" >
<telerik:RadButton Name="TaskOK" Content="OK" Width="300" Click="TaskOK_Click" Style="{DynamicResource OkCancelButton}" IsEnabled="False" />
</StackPanel>
</Grid>
</TabItem>
<TabItem Name="tbEPD" FontSize="25" >
<Grid DataContext="{Binding Mode=OneWay, Source={StaticResource getTaskListViewSource}}" Margin="0,0,0,218" >
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="20" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Name="panelWait" VerticalAlignment="Center" HorizontalAlignment="Center" Orientation="Vertical" Visibility="Collapsed" >
<StackPanel Orientation="Horizontal">
<Image Source="/Images/Mannetjet.png" Width="87" HorizontalAlignment="Left"/>
<TextBlock Name="tWaitFor" Margin="10,50,10,50" FontWeight="Bold" TextAlignment="Center" >
<Run Text="Configuring EPD."/>
<LineBreak/>
<Run Text="Please wait for confirmation" Foreground="Red"/>
<TextBlock.Foreground>
<SolidColorBrush Color="{DynamicResource sckcP}"/>
</TextBlock.Foreground>
</TextBlock>
</StackPanel>
<Image Source="/Images/Mk2OnReader.jpg" Width="200" Margin="10,10,10,50"/>
</StackPanel>
<Grid Grid.Row="1" Name="panelDone" HorizontalAlignment="Center" >
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="5" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" Style="{StaticResource tblHeaderLabel}" Name="FinalHeader">
<Run>Ready</Run>
<LineBreak/>
<Run Foreground="Green">Please take your EPD</Run>
<LineBreak/>
</TextBlock>
<TextBlock Grid.Row="2" Grid.Column="0" Text="Task" Style="{StaticResource tblIssuedLabel}" />
<TextBlock Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2">
<Run Text="{Binding Task_Name,Mode=OneWay}" />
<Run Text=" (" />
<Run Text="{Binding ID_Task,Mode=OneWay}" />
<Run Text=")" />
</TextBlock>
<TextBlock Grid.Row="3" Grid.Column="0" Text="Margin" Style="{StaticResource tblIssuedLabel}" TextAlignment="Right"/>
<TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding MinWorkerDosisMargin,StringFormat={}{0:0.00}}" Style="{StaticResource tblIssuedValue}" />
<TextBlock Grid.Row="4" Grid.Column="1" Name="lbHP07" Text="HP07" Style="{DynamicResource sIssuedSubHeader}" />
<TextBlock Grid.Row="4" Grid.Column="2" Name="lbHP10" Text="HP10" Style="{DynamicResource sIssuedSubHeader}" />
<TextBlock Grid.Row="5" Grid.ColumnSpan="2" Grid.Column="1" Text="Doses (µSv)" Style="{DynamicResource sIssuedSubHeader}" TextAlignment="Center"/>
<TextBlock Grid.Row="6" Grid.Column="0" Text="Low alarm" Style="{StaticResource tblIssuedLabel}"/>
<TextBlock Grid.Row="6" Grid.Column="2" Text="{Binding Hp10Dose1,Mode=OneWay,StringFormat={}{0:0.00}}" Style="{StaticResource tblIssuedValue}" />
<TextBlock Grid.Row="7" Grid.Column="0" Text="High alarm" Style="{StaticResource tblIssuedLabel}"/>
<TextBlock Grid.Row="7" Grid.Column="1" Text="{Binding Hp07Dose,Mode=OneWay,StringFormat={}{0:0.00}}" Style="{StaticResource tblIssuedValue}"/>
<TextBlock Grid.Row="7" Grid.Column="2" Text="{Binding Hp10Dose2,Mode=OneWay,StringFormat={}{0:0.00}}" Style="{StaticResource tblIssuedValue}"/>
<TextBlock Grid.Row="8" Grid.ColumnSpan="2" Text="Rates (µSv/h)" Style="{DynamicResource sIssuedSubHeader}" Grid.Column="1" />
<TextBlock Grid.Row="9" Grid.Column="0" Text="Low alarm" Style="{StaticResource tblIssuedLabel}"/>
<TextBlock Grid.Row="9" Grid.Column="2" Text="{Binding HP10Rate1ON,Mode=OneWay,StringFormat={}{0:0.00}}" Style="{StaticResource tblIssuedValue}" />
<TextBlock Grid.Row="10" Grid.Column="0" Text="High alarm" Style="{StaticResource tblIssuedLabel}"/>
<TextBlock Grid.Row="10" Grid.Column="1" Text="{Binding HP07RateON,Mode=OneWay,StringFormat={}{0:0.00}}" Style="{StaticResource tblIssuedValue}"/>
<TextBlock Grid.Row="10" Grid.Column="2" Text="{Binding HP10Rate2ON,Mode=OneWay,StringFormat={}{0:0.00}}" Style="{StaticResource tblIssuedValue}"/>
</Grid>
</Grid>
<StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Center">
<telerik:RadButton Name="bEpdCancel" Content="Cancel" Click="bClose_Click" Style="{DynamicResource OkCancelButton}" Margin="100,10,100,10" Height="Auto" />
<!--<telerik:RadButton Name="bEpdDone" Background="LawnGreen" Content="OK" Click="bClose_Click" Style="{DynamicResource OkCancelButton}" Margin="100,10,200,10" />-->
</StackPanel>
<telerik:RadProgressBar Grid.Row="3" x:Name="pWaitEpd" Style="{StaticResource styleTTOProgessBar}" Margin="10,0,10,10" />
<TextBlock Grid.Row="4" FontSize="30" Name="statusEPD" Text="waiting" HorizontalAlignment="Center" TextAlignment="Center" Margin="10,0,10,10" >
<TextBlock.TextEffects>
<TextEffect Foreground="#FFE66464"/>
</TextBlock.TextEffects>
</TextBlock>
</Grid>
</TabItem>
<TabItem Name="tbNotAllowed">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="300" />
<RowDefinition Height="*" />
<RowDefinition Height="100" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center" FontSize="25" >
<Run Text="No Access" />
<Run Name="tReasonNoAccess" Text="" />
<LineBreak/>
</TextBlock>
<telerik:RadButton Grid.Row="2" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="24" Background="LawnGreen" Padding="10,10,10,10" Content="OK" Name="bNoAccessDone" Click="bClose_Click" Style="{DynamicResource OkCancelButton}">
</telerik:RadButton>
</Grid>
</TabItem>
</TabControl>
</DockPanel>
</Window>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,113 @@
<Window x:Class="eDosStation.EpdExit"
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:eDosStation"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
mc:Ignorable="d"
Title="Exit"
Height="900" Width="1500"
ResizeMode="NoResize"
VerticalAlignment="Center"
FontFamily="Segoe UI" FontSize="36"
Loaded="Window_Loaded"
WindowStartupLocation="CenterScreen"
WindowStyle="SingleBorderWindow"
Closing="Window_Closing" WindowState="Maximized">
<DockPanel>
<StatusBar DockPanel.Dock="Bottom" >
<StatusBarItem Name="statusEPD" Content="Epd" />
</StatusBar>
<TabControl>
<TabItem Name="Wait" HorizontalAlignment="Center" VerticalAlignment="Center" >
<Grid HorizontalAlignment="Center" VerticalAlignment="Center" Height="auto" Width="574">
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="500" />
</Grid.ColumnDefinitions>
<Image Source="/Images/Mannetje.png" Width="87" HorizontalAlignment="Left"/>
<TextBlock Grid.Column="1" Text="Reading EPD. Please wait" FontWeight="Bold" VerticalAlignment="Center" Foreground="{StaticResource sckbP}" TextAlignment="Center" Margin="10,0" />
<Image Grid.Row="1" Grid.ColumnSpan="2" Source="/Images/Mk2OnReader.jpg" Width="300" Margin="10,10,10,50"/>
<telerik:RadProgressBar Grid.Row="2" Grid.ColumnSpan="2" Name="Progress" Style="{StaticResource styleTTOProgessBar}" HorizontalAlignment="Stretch" />
<telerik:RadButton Grid.Row="3" Grid.ColumnSpan="2" Name="bCancel" Content="Cancel" Click="BCloseExit_Click" Style="{DynamicResource OkCancelButton}" />
</Grid>
</TabItem>
<TabItem Name="ok" VerticalAlignment="Center" HorizontalContentAlignment="Center" >
<Grid TextBlock.FontSize="40" HorizontalAlignment="Center" Margin="0,100,0,50" >
<Grid.RowDefinitions >
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.ColumnSpan="4" Text="Visit registered" FontSize="50" Foreground="{DynamicResource sckbP}" FontWeight="Bold" TextAlignment="Center" Background="{DynamicResource sckbLB}" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="Pers ID:" HorizontalAlignment="Right" VerticalAlignment="Center" Foreground="{DynamicResource sckbP}" FontWeight="Bold" Margin="10,50,10,50" />
<TextBlock Grid.Row="1" Grid.Column="1" Name="Wearer" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="50,5,20,5" Text="12345" Foreground="{DynamicResource sckbP}" />
<TextBlock Grid.Row="1" Grid.Column="2" Text="Visit:" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5,5,20,5" Foreground="{DynamicResource sckbP}" FontWeight="Bold" />
<TextBlock Grid.Row="1" Grid.Column="3" Name= "EpdVisit" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="5,5,20,5" Text="12345545" Foreground="{DynamicResource sckbP}" />
<TextBlock Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="4" Name="PersonName" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="50,5,20,5" Text="...." Foreground="{DynamicResource sckbP}" />
<TextBlock Grid.Row="3" Grid.Column="0" Text="Dose:" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5,5,20,5" Foreground="{DynamicResource sckbP}" FontWeight="Bold" />
<StackPanel Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="3" Orientation="Vertical" VerticalAlignment="Center" Name="DosePanel" >
<TextBlock Name="HpDose07" Text="1234" HorizontalAlignment="Left" Margin="50,0,0,0" Foreground="{DynamicResource sckbP}" />
<TextBlock Name="HpDose10" Text="1223" HorizontalAlignment="Left" Margin="50,0,0,0" Foreground="{DynamicResource sckbP}" />
</StackPanel>
<telerik:RadButton Grid.Row="4" Grid.Column="0" Grid.ColumnSpan="4" Name="bCloseExit" Click="BCloseExit_Click" Content="OK" Width="190" Style="{StaticResource OkCancelButton}" Margin="0,50,0,50" VerticalAlignment="Center" />
</Grid>
</TabItem>
<TabItem Name="Alarm" VerticalAlignment="Center" >
<StackPanel Margin="50,50,50,50" VerticalAlignment="Center">
<Border Style="{StaticResource styleAlarmBorder}" >
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center" TextWrapping="Wrap" >
<LineBreak/>
<Run>Your dose and/or doserate has been above the alarmlevel</Run>
<Run>during your visit !</Run>
<LineBreak/>
<LineBreak/>
<Run>Please contact</Run><LineBreak/><Run> the Radioprotection officer of the building.</Run>
<LineBreak/><LineBreak/>
<Run>He needs to validate and clear your alarm(s).</Run>
<LineBreak/>
</TextBlock>
</Border>
<telerik:RadButton Name="bConfirmAlarm" Click="BConfirmAlarm_Click" Content="OK" Width="190" Style="{StaticResource OkCancelButton}" Margin="50,50,50,50" />
</StackPanel>
</TabItem>
<TabItem Name="OtherAlarm" >
<StackPanel VerticalAlignment="Center">
<Border Style="{StaticResource styleAlarmBorder}" >
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center" >
<LineBreak/>
<Run>Your EPD has encountered a problem.</Run>
<LineBreak/><LineBreak/>
<Run>Please contact</Run><LineBreak/><Run>the Radioprotection officer of the building.</Run>
<LineBreak/>
<LineBreak/>
<Run> He needs to investigate the alarm.</Run>
</TextBlock>
</Border>
<telerik:RadButton Name="bConfirmAlarm2" Click="BConfirmAlarm_Click" Content="OK" Width="190" Height="50" Style="{StaticResource OkCancelButton}" Margin="50,50,50,50" />
</StackPanel>
</TabItem>
</TabControl>
</DockPanel>
</Window>

View file

@ -0,0 +1,303 @@
using System;
using System.Windows;
using System.Windows.Media;
using System.Windows.Threading;
namespace eDosStation
{
public partial class EpdExit : Window
{
DataInterface dataInterface;
Station thisStation;
EpdBaseClr.Epd2 ep;
DispatcherTimer dispatcherTimer;
SolidColorBrush GreenBrush = new SolidColorBrush(Colors.LightGreen);
SolidColorBrush AlarmBrush = new SolidColorBrush(Colors.LightCoral);
private DateTime ResultTime;
private bool EpdReading = false;
private bool FinalTimeOut = false;
#if SimulateEPD
public SimulateData simulData = new SimulateData();
#endif
public EpdExit(Station curStation)
{
InitializeComponent();
thisStation = curStation;
dataInterface = curStation.dataInterface;
}
private void CountDown(object sender, EventArgs e)
{
double v = (ResultTime - DateTime.Now).TotalSeconds;
if (v > Progress.Minimum)
Progress.Value = v;
else
{
SetTimedOutAndEnd();
}
}
private void Ep_EpdTO(EpdBaseClr.Epd2 Sender, EpdBaseClr.EpdTOEventArgs e)
{
System.Diagnostics.Debug.WriteLine("TIME OUT");
Dispatcher.InvokeAsync(() => { SetTimedOutAndEnd(); });
}
private void Ep_EpdError(EpdBaseClr.Epd2 Sender, EpdBaseClr.EpdErrorEventArgs e)
{
System.Diagnostics.Debug.WriteLine("ERROR ");
Dispatcher.InvokeAsync(() => {
MessageBox.Show($"EPD Error {e.returnValue}");
Dispatcher.InvokeAsync(() => { SetTimedOutAndEnd(); });
});
}
private void Ep_EpdRead(EpdBaseClr.Epd2 Sender, EpdBaseClr.EpdEventArgs e)
{
EpdReading = false;
dispatcherTimer?.Stop();
Dispatcher.InvokeAsync(() => LoadDoses());
}
private void startEPDRead()
{
EpdReading = true; bCancel.IsEnabled = false;
Dispatcher.InvokeAsync(new Action(() => { ep.Wait(thisStation.EPDTimeOut, thisStation.EPDRetries); }), DispatcherPriority.Background);
}
private void SetTimedOutAndEnd()
{
if (!FinalTimeOut)
{
bCancel.IsEnabled = true;
FinalTimeOut = true;
dispatcherTimer?.Stop();
Progress.Value = 0;
Progress.Background = System.Windows.Media.Brushes.Red;
statusEPD.Content = "Time out";
//tWaitFor.Text = "Lezer niet gevonden !";
dispatcherTimer = new DispatcherTimer(DispatcherPriority.Background);
dispatcherTimer.Tick += ShowAndEnd;
dispatcherTimer.Interval = thisStation.ShowTimeoutTime;
dispatcherTimer.Start();
}
}
private void ShowAndEnd(object sender, EventArgs e)
{
dispatcherTimer?.Stop();
dispatcherTimer = null;
endPage();
}
private void LoadDoses()
{
const string module = "EpdExit LoadDoses";
int EpdVisitID;
#if SimulateEPD
ep.epdType = simulData.EdpType;
ep.Issued = true;
ep.alarmStatus = 0;
ep.otherAlarms = 0;
ep.WearerID = simulData.WearerID;
ep.WearerName = simulData.WearerName;
ep.Hp07 = 1;
ep.Hp10 = 2;
#endif
int rv = 0;
EpdVisitID = 0;
if (thisStation.LogAll || ep.HasStepError())
{
var s = ep.GetSteps();
DecodeResults.logsteps(module, ep.StepReturnValues, thisStation.splunkLog);
}
if (ep==null || !ep.EPDIssued)
{
Dispatcher.InvokeAsync(() =>
{
//rv = ep.SetDeIssued();
endWithMessage("This EPD is not issued");
});
return;
}
if (ep.EpdID == 0)
{
endWithMessage("This EPD is not found");
return;
}
int station = -1;
if (int.TryParse(ep.WearerID, out EpdVisitID)) station = EpdVisitID % 100;
if (station<=0)
{
endWithMessage($"This EPD was issued with an invalid id ");
return;
}
if (station != thisStation.ID_Station)
{
endWithMessage($"This EPD was issued on another station (ID:{station})");
return;
}
//Check id EPD is manual exit
string WearerFullName = string.Empty;
int Exited = dataInterface.VisitInfo(EpdVisitID, out WearerFullName);
if (Exited>0)
{
endWithMessage($"This EPD was already returned or had a manual exit (ID:{station})");
return;
}
//bool NoTimeout = false;
if (ep.alarmStatus != 0)
{
DosePanel.Background = AlarmBrush;
Alarm.IsSelected = true;
//NoTimeout = true;
}
else if ((ep.otherAlarms & 0x7f) != 0)
{
DosePanel.Background = AlarmBrush;
OtherAlarm.IsSelected = true;
//NoTimeout = true;
}
else
{
DosePanel.Background = GreenBrush;
ok.IsSelected = true;
}
rv = ep.GetAllDeissue(true); //reconnect
if (rv != 0 || thisStation.LogAll)
{
//MessageBox.Show($"GetDoses {rv} rv:{ep.ErrorRV} step:{ep.ErrorStep} er:{ep.GetDosesError}");
ep.GetSteps();
if (rv!=0) MessageBox.Show(DecodeResults.decodesteps(ep.StepReturnValues));
DecodeResults.logsteps(module, ep.StepReturnValues, thisStation.splunkLog);
}
Wearer.Text = $"{ep.WearerName}";
Wearer.Name = WearerFullName;
EpdVisit.Text = $"{ep.WearerID}";
HpDose07.Text = $"{ep.Hp07Name}: {ep.Hp07:0.00} µSv ";
HpDose10.Text = $"{ep.Hp10Name}: {ep.Hp10:0.00} µSv";
if (EpdVisitID>0)
{
bool isBG = ep.isBG;
#if SimulateEPD
ep.CountsClock = 789;
#endif
var l = new SqlLog();
try
{
dataInterface.VisitExit(EpdVisitID, ep);
l.LogCommand(DataInterface.VisitExitCommand);
}
catch (System.Exception ex)
{
l.LogCommand(ex.Message);
MessageBox.Show(ex.Message);
}
l.Dispose();
}
PersonName.Text = string.Empty;
return;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
Wait.IsSelected = true;
dispatcherTimer = new DispatcherTimer(DispatcherPriority.Background);
dispatcherTimer.Interval = thisStation.ScreenProgressBarInterval;
dispatcherTimer.Tick += CountDown;
//StartEPD
if (ep == null)
try
{
ep = new EpdBaseClr.Epd2(thisStation.ComPort, thisStation.OnlyMK2);
ep.SetFeedbackSound(thisStation.useBeep, thisStation.useBeepMK3());
ep.EpdRead += Ep_EpdRead;
ep.EpdError += Ep_EpdError;
ep.EpdTO += Ep_EpdTO;
}
catch (System.Exception ex)
{
thisStation.splunkLog.WriteException(null, "StartEpd", ex);
MessageBox.Show(ex.Message);
ep = null;
}
if (ep != null)
{
ResultTime = DateTime.Now.AddSeconds(thisStation.ScreenEPDTimeout);
Progress.Value = Progress.Maximum = thisStation.ScreenEPDTimeout;
dispatcherTimer.Start();
startEPDRead();
}
}
private void BCloseExit_Click(object sender, RoutedEventArgs e)
{
endPage();
}
private void BConfirmAlarm_Click(object sender, RoutedEventArgs e)
{
endPage();
}
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
FinalTimeOut = false;
if (dispatcherTimer?.IsEnabled == true) dispatcherTimer.IsEnabled = false;
try
{
dispatcherTimer?.Stop();
dispatcherTimer = null;
if (ep != null) { ep.WaitEnd(); ep.Dispose(); ep = null; }
}
catch (System.Exception ex) {
thisStation.splunkLog.WriteException("EpdExit", "Closing", ex);
System.Diagnostics.Debug.WriteLine(ex.Message);
}
try
{
if (ep != null)
{
ep.WaitEnd();
ep.Dispose();
ep = null;
}
}
catch (System.Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
}
public void endWithMessage(string message)
{
new InstMessage(message).ShowDialog();
endPage();
}
public void endPage()
{
if (EpdReading)
{
//MessageBox.Show("Fout bij initialiseren EPD! ");
}
EpdReading = false;
dispatcherTimer?.Stop();
dispatcherTimer = null;
this.Close();
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19.25 7.57692C19.25 7.99114 19.5858 8.32692 20 8.32692C20.4143 8.32692 20.75 7.99114 20.75 7.57692H19.25ZM7.54545 21.75C7.95967 21.75 8.29545 21.4142 8.29545 21C8.29545 20.5858 7.95967 20.25 7.54545 20.25V21.75ZM16.6569 1.29459L17.1885 0.765534L16.6569 1.29459ZM20.75 7.57692V5.06666H19.25V7.57692H20.75ZM20.2404 3.83219L17.1885 0.765534L16.1253 1.82365L19.1772 4.8903L20.2404 3.83219ZM15.9481 0.25H2.50004V1.75H15.9481V0.25ZM0.250041 2.49999L0.250003 19.5L1.75 19.5L1.75004 2.5L0.250041 2.49999ZM2.5 21.75H7.54545V20.25H2.5V21.75ZM0.250003 19.5C0.250001 20.7426 1.25736 21.75 2.5 21.75V20.25C2.08579 20.25 1.75 19.9142 1.75 19.5L0.250003 19.5ZM2.50004 0.25C1.2574 0.25 0.250044 1.25736 0.250041 2.49999L1.75004 2.5C1.75004 2.08579 2.08583 1.75 2.50004 1.75V0.25ZM17.1885 0.765534C16.86 0.435529 16.4136 0.25 15.9481 0.25V1.75C16.0146 1.75 16.0783 1.7765 16.1253 1.82365L17.1885 0.765534ZM20.75 5.06666C20.75 4.60398 20.5668 4.16013 20.2404 3.83219L19.1772 4.8903C19.2239 4.93715 19.25 5.00056 19.25 5.06666H20.75Z" fill="#71717A"/>
<path d="M5 6H15.5752" stroke="#71717A" stroke-width="1.5" stroke-linecap="round"/>
<path d="M5 11H10.2374" stroke="#71717A" stroke-width="1.5" stroke-linecap="round"/>
<path d="M5 16H7.24461" stroke="#71717A" stroke-width="1.5" stroke-linecap="round"/>
<circle cx="17.5" cy="17.5" r="5.5" stroke="#71717A" stroke-width="1.5"/>
<path d="M15.5 18L16.5826 19.0826C16.8011 19.3011 17.1635 19.2711 17.3431 19.0197L19.5 16" stroke="#71717A" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" stroke-width="3" stroke="#000000" fill="none"><polyline points="33.16 21.45 43.07 31.36 33.16 41.27"/><line x1="43.07" y1="31.36" x2="6.72" y2="31.36"/><path d="M22.3,37.69V51.45a2.8,2.8,0,0,0,2.8,2.81H50.33a2.8,2.8,0,0,0,2.8-2.81V11.27a2.8,2.8,0,0,0-2.8-2.8H25.1a2.8,2.8,0,0,0-2.8,2.8V24.51"/></svg>

After

Width:  |  Height:  |  Size: 508 B

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg" stroke-width="3" stroke="#000000" fill="none"><polyline points="46.02 21.95 55.93 31.86 46.02 41.77"/><line x1="55.93" y1="31.86" x2="19.59" y2="31.86"/><path d="M40,38.18V52a2.8,2.8,0,0,1-2.81,2.8H12A2.8,2.8,0,0,1,9.16,52V11.77A2.8,2.8,0,0,1,12,9H37.19A2.8,2.8,0,0,1,40,11.77V25"/></svg>

After

Width:  |  Height:  |  Size: 496 B

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13 8C13 7.44772 12.5523 7 12 7C11.4477 7 11 7.44772 11 8C11 8.55228 11.4477 9 12 9C12.5523 9 13 8.55228 13 8Z" fill="#1C274C"/>
<path d="M12 17.75C12.4142 17.75 12.75 17.4142 12.75 17V11C12.75 10.5858 12.4142 10.25 12 10.25C11.5858 10.25 11.25 10.5858 11.25 11V17C11.25 17.4142 11.5858 17.75 12 17.75Z" fill="#1C274C"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.0574 1.25H11.9426C9.63424 1.24999 7.82519 1.24998 6.41371 1.43975C4.96897 1.63399 3.82895 2.03933 2.93414 2.93414C2.03933 3.82895 1.63399 4.96897 1.43975 6.41371C1.24998 7.82519 1.24999 9.63422 1.25 11.9426V12.0574C1.24999 14.3658 1.24998 16.1748 1.43975 17.5863C1.63399 19.031 2.03933 20.1711 2.93414 21.0659C3.82895 21.9607 4.96897 22.366 6.41371 22.5603C7.82519 22.75 9.63423 22.75 11.9426 22.75H12.0574C14.3658 22.75 16.1748 22.75 17.5863 22.5603C19.031 22.366 20.1711 21.9607 21.0659 21.0659C21.9607 20.1711 22.366 19.031 22.5603 17.5863C22.75 16.1748 22.75 14.3658 22.75 12.0574V11.9426C22.75 9.63423 22.75 7.82519 22.5603 6.41371C22.366 4.96897 21.9607 3.82895 21.0659 2.93414C20.1711 2.03933 19.031 1.63399 17.5863 1.43975C16.1748 1.24998 14.3658 1.24999 12.0574 1.25ZM3.9948 3.9948C4.56445 3.42514 5.33517 3.09825 6.61358 2.92637C7.91356 2.75159 9.62177 2.75 12 2.75C14.3782 2.75 16.0864 2.75159 17.3864 2.92637C18.6648 3.09825 19.4355 3.42514 20.0052 3.9948C20.5749 4.56445 20.9018 5.33517 21.0736 6.61358C21.2484 7.91356 21.25 9.62177 21.25 12C21.25 14.3782 21.2484 16.0864 21.0736 17.3864C20.9018 18.6648 20.5749 19.4355 20.0052 20.0052C19.4355 20.5749 18.6648 20.9018 17.3864 21.0736C16.0864 21.2484 14.3782 21.25 12 21.25C9.62177 21.25 7.91356 21.2484 6.61358 21.0736C5.33517 20.9018 4.56445 20.5749 3.9948 20.0052C3.42514 19.4355 3.09825 18.6648 2.92637 17.3864C2.75159 16.0864 2.75 14.3782 2.75 12C2.75 9.62177 2.75159 7.91356 2.92637 6.61358C3.09825 5.33517 3.42514 4.56445 3.9948 3.9948Z" fill="#1C274C"/>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

View file

@ -0,0 +1,39 @@
<Window x:Class="eDosStation.InstMessage"
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:telerik="http://schemas.telerik.com/2008/xaml/presentation"
xmlns:local="clr-namespace:eDosStation"
mc:Ignorable="d"
Title="InstMessage" Height="700" Width="900"
Topmost="True"
WindowStyle="None"
WindowStartupLocation="CenterScreen"
Closing="Window_Closing" Loaded="Window_Loaded" >
<DockPanel >
<StackPanel DockPanel.Dock="Bottom">
<telerik:RadButton Content="Close" Name="bMsg" Click="BMsg_Click" Height="50" Margin="0,20,0,20" Style="{StaticResource OkCancelButton}"/>
<ProgressBar x:Name="pUserSeconds" Background="Blue" Value="5" Maximum="10" Tag="AA" Height="10" MinWidth="150" >
<ProgressBar.Effect>
<DropShadowEffect/>
</ProgressBar.Effect>
</ProgressBar>
</StackPanel>
<StackPanel VerticalAlignment="Center" HorizontalAlignment="Center" MinWidth="600" MinHeight="600" >
<Border Background="{StaticResource sckbLB}" CornerRadius="10" Margin="0,0,0,30" >
<StackPanel Orientation="Horizontal" >
<Image Source="/Images/Mannetje.png" Margin="10,5,20,5" />
<TextBlock Text="Message" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center" Width="500" FontSize="35" Foreground="{StaticResource sckbP}" FontWeight="Bold" />
</StackPanel>
</Border>
<Border BorderBrush="{StaticResource sckbP}" BorderThickness="1" CornerRadius="10" Margin="0,0,0,50" MinHeight="300" >
<StackPanel Name="sComments" VerticalAlignment="Center" HorizontalAlignment="Center" TextBlock.FontSize="30" >
<TextBlock Text="koko" VerticalAlignment="Center" />
</StackPanel>
</Border>
</StackPanel>
</DockPanel>
</Window>

View file

@ -0,0 +1,94 @@
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;
using System.Windows.Threading;
namespace eDosStation
{
/// <summary>
/// Interaction logic for InstMessage.xaml
/// </summary>
public partial class InstMessage : Window
{
DispatcherTimer dispatcherTimer;
int UserSeconds;
public InstMessage(string Comments)
{
InitializeComponent();
AddComment(Comments);
}
public InstMessage(TextBlock tbComments)
{
InitializeComponent();
AddComment(tbComments);
}
public static Line GetFullWidthLine()
{
Line line = new Line() { Stroke = System.Windows.Media.Brushes.Blue };
Binding binding = new Binding("ActualWidth");
binding.RelativeSource = new RelativeSource() { Mode = RelativeSourceMode.FindAncestor, AncestorType = typeof(TextBlock) };
BindingOperations.SetBinding(line, Line.X2Property, binding);
return line;
}
private void BMsg_Click(object sender, RoutedEventArgs e)
{
Close();
}
private void AddComment(TextBlock tbComments)
{
sComments.Children.Clear();
sComments.Children.Add(tbComments);
}
private void AddComment(string Comments)
{
TextBlock tb = new TextBlock(new Run(Comments));
tb.FontSize = 24;
tb.VerticalAlignment = VerticalAlignment.Center;
AddComment(tb);
}
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
sComments.Children.Clear();
}
private void SwitchToTask(object sender, EventArgs e)
{
if (--UserSeconds > 0 )
{
pUserSeconds.Value = UserSeconds;
}
else
{
dispatcherTimer.Stop();
dispatcherTimer.Tick -= SwitchToTask;
sComments.Children.Clear();
Close();
}
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
UserSeconds = 20;
pUserSeconds.Maximum = pUserSeconds.Value= UserSeconds;
dispatcherTimer = new DispatcherTimer(DispatcherPriority.Normal);
dispatcherTimer.Interval = TimeSpan.FromSeconds(1);
dispatcherTimer.Tick += SwitchToTask;
dispatcherTimer.Start();
}
}
}

View file

@ -0,0 +1,79 @@
<Window x:Class="eDosStation.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:local="clr-namespace:eDosStation"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
mc:Ignorable="d"
Title="eDose Station" Height="814.417" Width="1316.258"
FontFamily="Segoe UI"
FontSize="36"
WindowStartupLocation="CenterScreen" WindowState="Maximized" WindowStyle="None"
Loaded="Window_Loaded" GotFocus="Window_GotFocus" LostFocus="Window_LostFocus"
>
<DockPanel>
<Menu DockPanel.Dock="Top">
<Menu.ItemsPanel>
<ItemsPanelTemplate>
<DockPanel HorizontalAlignment="Stretch"/>
</ItemsPanelTemplate>
</Menu.ItemsPanel>
<MenuItem Header="E_xit" Name="mExit" Click="mExit_Click" HorizontalAlignment="Right" />
<MenuItem Header="Settings" Click="MenuItem_Click" />
<MenuItem Header="Advanced" >
<MenuItem Header="Sync From Central Db" Name="mReverseSync" Click="mReverseSync_Click" />
<Separator />
<MenuItem Header="Enc" Name="mEnc" Click="MEnc_Click" IsEnabled="False" />
</MenuItem>
<MenuItem Header="About" Name="mAbout" Click="mAbout_Click" HorizontalAlignment="Right" />
</Menu>
<StatusBar DockPanel.Dock="Bottom" HorizontalAlignment="Center" HorizontalContentAlignment="Center" >
<StatusBarItem Name="TruDose" Content="COMxx" Margin="10,0,50,0" />
<StatusBarItem Name="BadgeReader" Content="COMxx" Margin="0,0,100,0"/>
<StatusBarItem Name="Status" Content="Offline" HorizontalContentAlignment="Center" HorizontalAlignment="Stretch" Style="{StaticResource xstatusOnLine}" />
</StatusBar>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="*"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<DockPanel Grid.Row="1">
<Grid DockPanel.Dock="Top">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Image x:Name="logo" Source="/Images/logoh60.png" Height="60" HorizontalAlignment="Left" Margin="1,0,0,10" />
<TextBlock Grid.Column="1" FontSize="30" Text="HPH eDos" TextAlignment="Center" Foreground="{StaticResource sckbP}" FontWeight="Bold" VerticalAlignment="Center" Background="{DynamicResource sckbLB}" Height="{Binding ElementName=logo, Path=ActualHeight}" />
<TextBlock Grid.Column="2" FontSize="30" Name="tbTime" Text="2021-04-02 08:00" TextAlignment="Right" VerticalAlignment="Center" Foreground="{StaticResource sckbP}" HorizontalAlignment="Right" Padding="20,0" Background="{DynamicResource sckbLB}" Height="{Binding ElementName=logo, Path=ActualHeight}"/>
</Grid>
<StackPanel DockPanel.Dock="Left" Width="100" />
<StackPanel DockPanel.Dock="right" Width="100" />
<TextBlock DockPanel.Dock="Bottom" Name="tVersion" Text="eDosStation 2021-2024 v" FontSize="12" HorizontalAlignment="Center" />
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="*" />
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<Border Name="ibComment" Grid.Row="0" Grid.ColumnSpan="2" Background="Bisque" Visibility="Collapsed">
<TextBlock Name="itComment" HorizontalAlignment="Stretch" TextWrapping="Wrap" FontSize="15" Margin="10,10,10,10" Foreground="{StaticResource sckbP}" />
</Border>
<telerik:RadButton Grid.Row="1" Grid.RowSpan="3" Grid.Column="0" Content="Info" Name="bINfo" Margin="20,20,20,20" Style="{StaticResource bigButton}" Height="200" />
<telerik:RadButton Grid.Row="1" Grid.Column="1" Content="Start visit" Name="bEntry" Click="BEntry_Click" Margin="20,20,20,20" Style="{StaticResource bigButton}" />
<telerik:RadButton Grid.Row="2" Grid.Column="1" Content="End Visit" Name="bExit" Click="BExit_Click" Margin="20,20,20,20" Style="{StaticResource bigButton}" />
<telerik:RadButton Grid.Row="3" Grid.Column="1" Content="EPD Info &amp; Dose" Click="Button_Click" Margin="20,20,20,20" Style="{StaticResource bigButton}" />
</Grid>
</DockPanel>
</Grid>
</DockPanel>
</Window>

View file

@ -0,0 +1,271 @@
using System;
using System.Windows;
using System.Windows.Media;
using System.Windows.Threading;
namespace eDosStation
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
const string className = "MainWindow";
public DataInterface dataInterface;
public Station thisStation;
DispatcherTimer bgTimer;
private bool Offline = true;
private App curApp;
#if SimulateEPD
public SimulateData simulData = new SimulateData();
#endif
public MainWindow()
{
InitializeComponent();
curApp = Application.Current as App;
}
public void loadsvg()
{
var m_imageSource = new SvgImageSource(new Uri("mySvgImage.svg"));
}
private void Button_Click(object sender, RoutedEventArgs e)
{
string ers = string.Empty;
if (thisStation.RestartCom && thisStation.RestartComFirst )
{
thisStation.DeviceRestart();
}
var w = new ShowEPDDose(thisStation);
w.ShowDialog();
if (thisStation.RestartCom && !thisStation.RestartComFirst )
{
thisStation.DeviceRestart();
}
thisStation.splunkLog?.WriteSplunkLog(null, "Show Dose done", LSWLib.CLog.iseverity.info);
}
private void BEntry_Click(object sender, RoutedEventArgs e)
{
const string module = "BEntry_Click";
string ers = string.Empty;
thisStation.splunkLog?.WriteSplunkLog(module, null, LSWLib.CLog.iseverity.info);
string step = "DeviceRestart";
try
{
if (thisStation.RestartCom && thisStation.RestartComFirst)
{
thisStation.DeviceRestart();
}
}
catch (System.Exception ex)
{
thisStation.splunkLog?.WriteException(module, step, ex);
}
step = "EntryBadge";
try
{
var w = new EntryBadge(thisStation);
w.ShowDialog();
#if SimulateEPD
simulData = w.simulData;
#endif
w = null;
}
catch (System.Exception ex)
{
thisStation.splunkLog?.WriteException(module, step, ex);
}
step = "DeviceReset2";
try
{
if (thisStation.RestartCom && !thisStation.RestartComFirst)
{
thisStation.DeviceRestart();
}
}
catch (System.Exception ex)
{
thisStation.splunkLog.WriteException(module, step, ex);
}
thisStation.splunkLog?.WriteSplunkLog(module, "Entry done", LSWLib.CLog.iseverity.info);
}
private void BExit_Click(object sender, RoutedEventArgs e)
{
const string module = "BExit_Click";
string ers = string.Empty;
thisStation.splunkLog?.WriteSplunkLog(module, null,LSWLib.CLog.iseverity.info);
if (thisStation.RestartCom && thisStation.RestartComFirst)
{
ers = thisStation.DeviceRestart();
}
var w = new EpdExit(thisStation);
#if SimulateEPD
w.simulData = simulData;
#endif
w.ShowDialog();
w = null;
if (thisStation.RestartCom && !thisStation.RestartComFirst)
{
ers = thisStation.DeviceRestart();
}
thisStation.splunkLog?.WriteSplunkLog(module,"Exit Done", LSWLib.CLog.iseverity.info);
}
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
const string module = "MenuSettings";
try
{
var s = new Settings(thisStation);
s.ShowDialog();
} catch (System.Exception ex)
{
thisStation?.splunkLog?.WriteException(className, module, ex);
}
}
private void setLocalStatus()
{
const string module = "setLocalStatus";
if (!dataInterface.isOnline())
{
Status.Content = "*** Offline ***";
if (!Offline) thisStation.splunkLog?.WriteSplunkLog(module, "Went Offline", LSWLib.CLog.iseverity.warning);
Offline = true;
}
else
{
Status.Content = "--- Online ---";
if (Offline) thisStation.splunkLog?.WriteSplunkLog(module, "Back online", LSWLib.CLog.iseverity.info);
Offline = false;
}
}
private void setErrorStatus(string errMsg)
{
const string module = "setErrorStatus";
thisStation.splunkLog?.WriteSplunkLog(module, null, LSWLib.CLog.iseverity.err, lresultMessage: errMsg);
Status.Content = $"*** Error {errMsg} ***";
Status.Foreground = Brushes.Yellow;
Status.Background = Brushes.Red;
}
private void showBadge(int persid)
{
UserInfo UI = new UserInfo(persid);
UI.ShowDialog();
}
private void Pelatec_DataReceived(int PersID)
{
this.Dispatcher.InvokeAsync(new Action(() => showBadge(PersID)), DispatcherPriority.Background);
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
bool ok = true;
string errMsg = string.Empty;
tVersion.Text = "HPH eDos " + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
bgTimer = new DispatcherTimer(DispatcherPriority.Background);
bgTimer.Interval = TimeSpan.FromSeconds(60);
bgTimer.Tick += BgTimer_Tick;
bgTimer.IsEnabled = true;
try
{
dataInterface = new DataInterface();
thisStation = new Station(dataInterface, string.Empty, curApp);
dataInterface.splunkLog = thisStation.splunkLog;
}
catch (System.Exception ex)
{
errMsg = $"Startup error {ex.Message} ";
MessageBox.Show(errMsg);
ok = false;
dataInterface.stationLog?.WriteLine($"Window_Loaded {ex.Message}");
}
if (ok && thisStation.Error > 0)
{
errMsg = $"Startup error {thisStation.ErrorMessage} ";
MessageBox.Show(errMsg);
ok = false;
}
if (ok)
{
if (thisStation.insComments.Length > 2)
{
InstMessage w = new InstMessage(thisStation.tbComments);
w.ShowDialog();
ibComment.Child = thisStation.tbComments;
ibComment.Visibility = Visibility.Visible;
}
else
ibComment.Visibility = Visibility.Collapsed;
}
else
setErrorStatus(errMsg);
TruDose.Content = $"TruDose: {thisStation.sComPort}";
BadgeReader.Content = thisStation.ReaderName;
BgTimer_Tick(null, null);
bgTimer.Start();
thisStation.ReceivedPersid = Pelatec_DataReceived;
}
private void BgTimer_Tick(object sender, EventArgs e)
{
setLocalStatus();
tbTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm");
}
private void MEnc_Click(object sender, RoutedEventArgs e)
{
//string cfg = System.IO.Path.Combine(Environment.CurrentDirectory, System.AppDomain.CurrentDomain.FriendlyName );
//Config.ToggleConfigEncryption(cfg);
}
private void Window_GotFocus(object sender, RoutedEventArgs e)
{
bgTimer.Start();
}
private void Window_LostFocus(object sender, RoutedEventArgs e)
{
bgTimer.Stop();
}
private void mAbout_Click(object sender, RoutedEventArgs e)
{
About x = new About(thisStation);
x.ShowDialog();
}
private void mExit_Click(object sender, RoutedEventArgs e)
{
bgTimer?.Stop();
dataInterface.stationLog?.Close();
thisStation.splunkLog.KvClear();
thisStation.splunkLog?.CloseSplunkLog();
Application.Current.Shutdown();
try
{
Environment.Exit(0);
}
catch { }
}
private void mReverseSync_Click(object sender, RoutedEventArgs e)
{
bool ok = dataInterface.ReverseSync();
if (ok)
MessageBox.Show("Success", null, MessageBoxButton.OK, MessageBoxImage.Information);
else
MessageBox.Show("Fout", null, MessageBoxButton.OK, MessageBoxImage.Error);
}
}
}

View file

@ -0,0 +1,73 @@
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Windows;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("eDosStation")]
[assembly: AssemblyDescription("MK2/MK3 epd station 2025 Isabelle Majkowski, Luc Praet, Luc Vandenbroucke, Karel Janssen")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("SCK CEN")]
[assembly: AssemblyProduct("eDosStation")]
[assembly: AssemblyCopyright("Copyright © 2019-2025 Luc Vandenbroucke, Karej Janssen")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
//In order to begin building localizable applications, set
//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
//inside a <PropertyGroup>. For example, if you are using US english
//in your source files, set the <UICulture> to en-US. Then uncomment
//the NeutralResourceLanguage attribute below. Update the "en-US" in
//the line below to match the UICulture setting in the project file.
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
//(used if a resource is not found in the page,
// or application resource dictionaries)
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
//(used if a resource is not found in the page,
// app, or any theme specific resource dictionaries)
)]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
//2.16 : version with reconnect MK3v2)
//2.18 : more tested
//2.20 Thermo : workflow bij issue ( en toevoegen time set)
//2.22 No clear bij deissue.
//2.27 Display wait while issuing
//2.28 After testing
//2.29 Met endcom
//2.30 check reset voor OF na EPD verbinding
//2.31 extra disconnect/connect
//2.32 VS2022
//2.34 close com at end , also MK2
//2.35 Elatec
//2.36 EPD3 time
//2.37 Detail alarm
//2.38 Check before writeearer
//2.41 Maximized exit en Dose screen (Karel)
//2.42 User Info screen (kiosk)
[assembly: AssemblyVersion("2.42.0.0")]
[assembly: AssemblyFileVersion("2.42.0.0")]

View file

@ -0,0 +1 @@
Telerik.Windows.Controls.RadMultiColumnComboBox, Telerik.Windows.Controls.GridView, Version=2019.1.116.45, Culture=neutral, PublicKeyToken=5803cfa389c90ce7

View file

@ -0,0 +1,111 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace eDosStation.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("eDosStation.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized string similar to Wed 09/11/2024 10:46:38.88
///.
/// </summary>
internal static string BuildDate {
get {
return ResourceManager.GetString("BuildDate", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to EPD Failed !.
/// </summary>
internal static string FinalEpdNotOkHeader {
get {
return ResourceManager.GetString("FinalEpdNotOkHeader", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Please try again
///.
/// </summary>
internal static string FinalEpdNotOkSecond {
get {
return ResourceManager.GetString("FinalEpdNotOkSecond", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to EPD Ready.
/// </summary>
internal static string FinalEpdOkHeader {
get {
return ResourceManager.GetString("FinalEpdOkHeader", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Please take your EPD
///.
/// </summary>
internal static string FinalEpdOkSecond {
get {
return ResourceManager.GetString("FinalEpdOkSecond", resourceCulture);
}
}
}
}

View file

@ -0,0 +1,138 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="BuildDate" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\BuildDate.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
<data name="FinalEpdNotOkHeader" xml:space="preserve">
<value>EPD Failed !</value>
</data>
<data name="FinalEpdNotOkSecond" xml:space="preserve">
<value>Please try again
</value>
</data>
<data name="FinalEpdOkHeader" xml:space="preserve">
<value>EPD Ready</value>
</data>
<data name="FinalEpdOkSecond" xml:space="preserve">
<value>Please take your EPD
</value>
</data>
</root>

View file

@ -0,0 +1,121 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace eDosStation.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.11.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("3")]
public int ComPort {
get {
return ((int)(this["ComPort"]));
}
set {
this["ComPort"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("1")]
public int Inst_CODE1 {
get {
return ((int)(this["Inst_CODE1"]));
}
set {
this["Inst_CODE1"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("11")]
public int Inst_CODE2 {
get {
return ((int)(this["Inst_CODE2"]));
}
set {
this["Inst_CODE2"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("BR1")]
public string Inst_Name1 {
get {
return ((string)(this["Inst_Name1"]));
}
set {
this["Inst_Name1"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Venus")]
public string Inst_Name2 {
get {
return ((string)(this["Inst_Name2"]));
}
set {
this["Inst_Name2"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0428790A0B4E80")]
public string TestCSN {
get {
return ((string)(this["TestCSN"]));
}
set {
this["TestCSN"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool useTestButtons {
get {
return ((bool)(this["useTestButtons"]));
}
set {
this["useTestButtons"] = value;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]
[global::System.Configuration.DefaultSettingValueAttribute("Data Source=eDosLocal;Initial Catalog=eDosLocal;User ID=eDosStation;Password=Info" +
"pla+8;TrustServerCertificate=True;Application Name=eDosStation")]
public string localConnectionString {
get {
return ((string)(this["localConnectionString"]));
}
}
}
}

View file

@ -0,0 +1,35 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="eDosStation.Properties" GeneratedClassName="Settings">
<Profiles />
<Settings>
<Setting Name="ComPort" Type="System.Int32" Scope="User">
<Value Profile="(Default)">3</Value>
</Setting>
<Setting Name="Inst_CODE1" Type="System.Int32" Scope="User">
<Value Profile="(Default)">1</Value>
</Setting>
<Setting Name="Inst_CODE2" Type="System.Int32" Scope="User">
<Value Profile="(Default)">11</Value>
</Setting>
<Setting Name="Inst_Name1" Type="System.String" Scope="User">
<Value Profile="(Default)">BR1</Value>
</Setting>
<Setting Name="Inst_Name2" Type="System.String" Scope="User">
<Value Profile="(Default)">Venus</Value>
</Setting>
<Setting Name="TestCSN" Type="System.String" Scope="User">
<Value Profile="(Default)">0428790A0B4E80</Value>
</Setting>
<Setting Name="useTestButtons" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="localConnectionString" Type="(Connection string)" Scope="Application">
<DesignTimeValue Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;SerializableConnectionString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;
&lt;ConnectionString&gt;Data Source=eDosLocal;Initial Catalog=eDosLocal;User ID=eDosStation;Password=Infopla+8;TrustServerCertificate=True;Application Name=eDosStation&lt;/ConnectionString&gt;
&lt;ProviderName&gt;System.Data.SqlClient&lt;/ProviderName&gt;
&lt;/SerializableConnectionString&gt;</DesignTimeValue>
<Value Profile="(Default)">Data Source=eDosLocal;Initial Catalog=eDosLocal;User ID=eDosStation;Password=Infopla+8;TrustServerCertificate=True;Application Name=eDosStation</Value>
</Setting>
</Settings>
</SettingsFile>

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1 @@
Tue 02/04/2025 7:23:09.24

View file

@ -0,0 +1,28 @@
namespace eDosStation.Properties {
// This class allows you to handle specific events on the settings class:
// The SettingChanging event is raised before a setting's value is changed.
// The PropertyChanged event is raised after a setting's value is changed.
// The SettingsLoaded event is raised after the setting values are loaded.
// The SettingsSaving event is raised before the setting values are saved.
internal sealed partial class Settings {
public Settings() {
// // To add event handlers for saving and changing settings, uncomment the lines below:
//
// this.SettingChanging += this.SettingChangingEventHandler;
//
// this.SettingsSaving += this.SettingsSavingEventHandler;
//
}
private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) {
// Add code to handle the SettingChangingEvent event here.
}
private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) {
// Add code to handle the SettingsSaving event here.
}
}
}

View file

@ -0,0 +1,87 @@
<Window x:Class="eDosStation.Settings"
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:eDosStation"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
mc:Ignorable="d"
Title="Settings" Height="479.533" Width="702.744"
FontFamily="Segoe UI" FontSize="20"
Loaded="Window_Loaded">
<Grid Margin="0,0,0,-21" >
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="20" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="250"/>
<ColumnDefinition Width="400"/>
</Grid.ColumnDefinitions>
<TextBlock Text="EPD Reader Com port"></TextBlock>
<telerik:RadComboBox Name="cComPort" Grid.Column="1" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="Installation 1"></TextBlock>
<telerik:RadComboBox Name="CIns1" Grid.Row="1" Grid.Column="1" SelectedValuePath="Inst_CODE" DisplayMemberPath="InstallationName" />
<TextBlock Grid.Row="2" Grid.Column="0" Text="Installation 2"></TextBlock>
<telerik:RadComboBox Name="CIns2" Grid.Row="2" Grid.Column="1" SelectedValuePath="Inst_CODE" DisplayMemberPath="InstallationName" />
<TextBlock Grid.Row="4" Grid.Column="0" Text="Badgelezers" Height="23" Margin="0,0,0.2,0" VerticalAlignment="Top"></TextBlock>
<telerik:RadComboBox Grid.Row="4" Grid.Column="1" Name="cbReaders" SelectedValuePath="Text" DisplayMemberPath="Text" />
<TextBlock Grid.Row="5" Grid.Column="0" Text="Check user status" Height="23" Margin="0,0,0.2,0" VerticalAlignment="Top"></TextBlock>
<CheckBox Grid.Row="5" Grid.ColumnSpan="2" Name="cbCheckUsers" Grid.Column="1" Padding="10,0,10,0" VerticalAlignment="Center" />
<TextBlock Grid.Row="6" Grid.Column="0" Text="ValidationButtons" Height="23" Margin="0,0,0.2,0" VerticalAlignment="Top"></TextBlock>
<CheckBox Grid.Row="6" Grid.ColumnSpan="2" Name="cbValidation" Grid.Column="1" Padding="10,0,10,0" VerticalAlignment="Center" />
<TextBlock Grid.Row="7" Grid.Column="0" Text="Beep EPD" Height="23" Margin="0,0,0.2,0" VerticalAlignment="Top"></TextBlock>
<telerik:RadComboBox Grid.Row="7" Grid.ColumnSpan="2" Name="tBeep" Grid.Column="1" SelectedValuePath="Value" DisplayMemberPath="Text" >
</telerik:RadComboBox>
<TextBlock Grid.Row="8" Grid.Column="0" Text="Timeout EPD (ms)" Height="23" Margin="0,0,0.2,0" VerticalAlignment="Top"></TextBlock>
<TextBox Grid.Row="8" Grid.ColumnSpan="2" Name="tEPDTimeout" Text="" Grid.Column="1" />
<TextBlock Grid.Row="9" Grid.Column="0" Text="Restart COM" Height="23" Margin="0,0,0.2,0" VerticalAlignment="Top"></TextBlock>
<CheckBox Grid.Row="9" Grid.ColumnSpan="2" Name="cbRestartCom" Grid.Column="1" Padding="10,0,10,0" VerticalAlignment="Center" />
<TextBlock Grid.Row="10" Grid.Column="0" Text="Restart COM voor entry/exit" Height="23" Margin="0,0,0.2,0" VerticalAlignment="Top"></TextBlock>
<CheckBox Grid.Row="10" Grid.ColumnSpan="2" Name="cbRestartComFirst" Grid.Column="1" Padding="10,0,10,0" VerticalAlignment="Center" />
<TextBlock Grid.Row="11" Grid.Column="0" Text="Alleen MK2" Height="23" Margin="0,0,0.2,0" VerticalAlignment="Top"></TextBlock>
<CheckBox Grid.Row="11" Grid.ColumnSpan="2" Name="cbOnlyMK2" Grid.Column="1" Padding="10,0,10,0" VerticalAlignment="Center" />
<TextBlock Grid.Row="12" Grid.Column="0" Text="Meerdere EPD toegelaten" Height="23" Margin="0,0,0.2,0" VerticalAlignment="Top"></TextBlock>
<CheckBox Grid.Row="12" Grid.ColumnSpan="2" Name="cbAllowMultipleEPD" Grid.Column="1" Padding="10,0,10,0" VerticalAlignment="Center" />
<TextBlock Grid.Row="13" Grid.Column="0" Text="Write config 3.2" Height="23" Margin="0,0,0.2,0" VerticalAlignment="Top"></TextBlock>
<CheckBox Grid.Row="13" Grid.ColumnSpan="2" Name="cbWriteConfig32" Grid.Column="1" Padding="10,0,10,0" VerticalAlignment="Center" />
<TextBlock Grid.Row="14" Grid.Column="0" Text="Log all" VerticalAlignment="Top"></TextBlock>
<CheckBox Grid.Row="14" Grid.ColumnSpan="2" Name="cbLogAll" Grid.Column="1" Padding="10,0,10,0" VerticalAlignment="Center" />
<TextBlock Grid.Row="15" Grid.Column="0" Text="Elatec Com port"></TextBlock>
<telerik:RadComboBox Grid.Row="15" Grid.ColumnSpan="2" Name="eComPort" Grid.Column="1" />
<telerik:RadButton Grid.Row="17" Grid.Column="0" Name="bOK" Content="OK" Click="BOK_Click" Style="{DynamicResource OkCancelButton}" />
<telerik:RadButton Grid.Row="17" Grid.Column="1" Name="bCancel" Content="Cancel" Click="BCancel_Click" Style="{DynamicResource OkCancelButton}" HorizontalAlignment="Right" />
</Grid>
</Window>

View file

@ -0,0 +1,414 @@
using System;
using System.Collections.ObjectModel;
using System.Text;
using System.Windows;
using System.Windows.Threading;
namespace eDosStation
{
/// <summary>
/// Interaction logic for Settings.xaml
/// </summary>
public class beepclass
{
public string Text { get; set; }
public byte Value { get; set; }
public beepclass(string txt, byte val)
{
Text = txt; Value = val;
}
}
public class readerclass
{
public string Text { get; set; }
public readerclass(string txt)
{
Text = txt;
}
}
public partial class Settings : Window
{
const string className = "Settings";
//private System.Threading.Tasks.Task ReaderTask;
//User _User;
Station thisStation;
ObservableCollection<beepclass> beepValues;
ObservableCollection<readerclass> readerValues;
public Settings(Station tStation)
{
try
{
//_User = null;
thisStation = null;
//dfReader = null; ReaderTask = null;
beepValues = new ObservableCollection<beepclass>();
readerValues = new ObservableCollection<readerclass>();
InitializeComponent();
if (tStation != null) thisStation = tStation;
if (tStation != null) tStation.splunkLog?.WriteSplunkLog(className, null, LSWLib.CLog.iseverity.info, lresultMessage: "created");
}
catch (System.Exception ex)
{
if (tStation != null) tStation.splunkLog?.WriteException(className, className, ex);
}
}
private void BOK_Click(object sender, RoutedEventArgs e)
{
const string module = "BOK_Click";
string step="init";
try
{
step = "comport";
string thiscom = cComPort.SelectedItem.ToString().Replace("COM", string.Empty);
thisStation.ComPort = int.Parse(thiscom);
DataSet1.InstallationRow ir;
step = "code1";
ir = CIns1.SelectedItem as DataSet1.InstallationRow;
if (ir != null)
{
thisStation.Inst_CODE1 = ir.Inst_CODE;
thisStation.Inst_Name1 = ir.InstallationName;
} else
{
thisStation.Inst_CODE1 = 0;
thisStation.Inst_Name1 = string.Empty;
}
step = "code2";
ir = CIns2.SelectedItem as DataSet1.InstallationRow;
if (ir != null)
{
thisStation.Inst_CODE2 = ir.Inst_CODE;
thisStation.Inst_Name2 = ir.InstallationName;
}
else
{
thisStation.Inst_CODE2 = 0;
thisStation.Inst_Name2 = string.Empty;
}
step = "usebeep";
if (tBeep.HasItems && tBeep.SelectedIndex != -1) {
thisStation.useBeep = (byte)tBeep.SelectedValue;
} else
thisStation.useBeep = (byte)0b00011110;
step = "validation++";
if (cbValidation.IsChecked == null) cbValidation.IsChecked = false;
thisStation.useTestButtons = cbValidation.IsChecked.Value;
step = "Reader";
thisStation.Reader = (string)cbReaders.SelectedValue;
step = "checkUser";
thisStation.checkUser = cbCheckUsers.IsChecked != null ? cbCheckUsers.IsChecked.Value : false;
thisStation.RestartCom = cbRestartCom.IsChecked != null ? cbRestartCom.IsChecked.Value : false;
step = "EPDTimeOut";
thisStation.EPDTimeOut = int.Parse(tEPDTimeout.Text);
step = "OnlyMK2";
thisStation.OnlyMK2 = cbOnlyMK2.IsChecked != null ? cbOnlyMK2.IsChecked.Value : false;
step = "RestartComFirst";
thisStation.RestartComFirst = cbRestartComFirst.IsChecked != null ? cbRestartComFirst.IsChecked.Value : false;
step = "AllowMultipleEPD";
thisStation.AllowMultipleEPD = cbAllowMultipleEPD.IsChecked != null ? cbAllowMultipleEPD.IsChecked.Value : false;
//thisStation.WriteConfig32 = cbWriteConfig32.IsChecked != null ? cbWriteConfig32.IsChecked.Value : false;
thisStation.LogAll = cbLogAll.IsChecked != null ? cbLogAll.IsChecked.Value : false;
thisStation.ElatecPort = eComPort.SelectedValue.ToString().Trim();
step = "Update";
thisStation.Update();
if (thisStation.Error > 0)
{
thisStation?.splunkLog?.WriteSplunkLog(module, null, LSWLib.CLog.iseverity.err, lresultMessage: thisStation.ErrorMessage);
MessageBox.Show($"Error {thisStation.ErrorMessage}");
}
}
catch (System.Exception ex)
{
thisStation?.splunkLog?.WriteException(module, step, ex);
}
thisStation?.splunkLog?.WriteSplunkLog(module, null, LSWLib.CLog.iseverity.info, lresultMessage: "done");
this.Close();
}
private void BCancel_Click(object sender, RoutedEventArgs e)
{
const string module = "BCancel_Click";
thisStation?.splunkLog?.WriteSplunkLog(module, null, LSWLib.CLog.iseverity.info, lresultMessage: "saved");
this.Close();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
const string module = "Window_Loaded";
string step = "devcon";
string eDosCom = null;
try
{
eDosCom = thisStation?.find();
thisStation.splunkLog?.WriteSplunkLog(module,step, LSWLib.CLog.iseverity.info, lresultMessage: eDosCom);
}
catch (System.Exception ex)
{
thisStation?.splunkLog?.WriteException(module, step, ex);
}
step = "GetReaderList";
try
{
using (var a = new LSWDesfirePublic.CCard())
{
a.GetReaderList();
foreach (string s in a.readersList) { readerValues.Add(new readerclass(s)); }
}
cbReaders.ItemsSource = readerValues;
cbReaders.SelectedValue = thisStation.Reader;
thisStation.splunkLog?.WriteSplunkLog(module, step, LSWLib.CLog.iseverity.info);
}
catch (System.Exception ex)
{
thisStation?.splunkLog?.WriteException(module, step, ex);
MessageBox.Show($"Readers err {ex.Message}");
}
step = "GetPortNames";
try
{
foreach (string cn in System.IO.Ports.SerialPort.GetPortNames())
{
cComPort.Items.Add(cn);
eComPort.Items.Add(cn);
}
thisStation.splunkLog?.WriteSplunkLog(module,step, LSWLib.CLog.iseverity.info);
}
catch (System.Exception ex)
{
thisStation?.splunkLog?.WriteException(module, step, ex);
MessageBox.Show($"Serial err {ex.Message}");
}
step = "BeepValues";
try
{
beepValues.Add(new beepclass("Loud High freq Beep", 0b00010111));
beepValues.Add(new beepclass("Loud Low freq Beep", 0b00011111));
beepValues.Add(new beepclass("Normal High freq Beep", 0b00010110));
beepValues.Add(new beepclass("Normal Low freq Beep", 0b00011110));
beepValues.Add(new beepclass("No Beep (only led)", 0b00011010));
tBeep.ItemsSource = beepValues;
thisStation.splunkLog?.WriteSplunkLog(module, step, LSWLib.CLog.iseverity.info);
}
catch (System.Exception ex)
{
thisStation?.splunkLog?.WriteException(module, step, ex);
MessageBox.Show($"Serial err {ex.Message}");
}
// 7 6 5 4 3210
// 1 0 0 1 1 1 0 0 1 1 1 0 0001
// 1 0 0 1 1 1 0 0 1 1 0 0 0001
// 1 0 0 1 1 1 0 0 1 0 1 0 0001
// 1 0 0 1 1 1 0 0 1 0 0 0 0001
// 1 0 0 1 1 1 0 0 0 0 0 0 0000
//MK3
//Bits 0-3 = Graphic Wearer Name, displayed in EPD Assignment menu
//0000 : Off(no sounder)
//0001 : Continuous Single Tone
//0010 : Continuous Dual Tone Slow
//0011 : Continuous Dual Tone Fast
//0100 : Intermittent Single Slow
//0101 : Intermittent Single Fast
//0110 : Intermittent Double Slow
//0111 : Intermittent Double Fast
//1110 : Mirion Style Dose
//1111 : Mirion Style Rate
//Bit 4 = Not used
//Bit 5 = Tone 2kHz = 0, 4kHz = 1
//Bit 6 = Volume Loud = 1, Normal = 0
//Bit 7 = Sound Enabled = 1
//Bit 8, 9 = Not used
//Bit 10 = LED Brightness Bright = 1, Normal = 0
//Bit 11 = LED Enabled = 1
//Bit 12 = Mutable User can mute = 1
//Bit 13, 14 = Not Used
//Bit 15 = Vibe Enabled = 1
//beepValues.Add(new beepclass("Beep", 22));
//beepValues.Add(new beepclass("No Beep", 18));
step = "Select com";
try
{
string thisComport = $"COM{thisStation.ComPort}";
if (!string.IsNullOrEmpty(eDosCom)) thisComport = eDosCom;
if (!cComPort.Items.Contains(thisComport)) cComPort.Items.Add(thisComport);
cComPort.SelectedItem = thisComport;
thisStation.splunkLog?.WriteSplunkLog(module,step, LSWLib.CLog.iseverity.info);
}
catch (System.Exception ex)
{
thisStation?.splunkLog?.WriteException(module, step, ex);
MessageBox.Show($"Serial err {ex.Message}");
}
step = "Select ecom";
try
{
string thisComport = thisStation.ElatecPort;
if (!eComPort.Items.Contains(thisComport)) eComPort.Items.Add(thisComport);
eComPort.SelectedItem = thisComport;
thisStation.splunkLog?.WriteSplunkLog(module, step, LSWLib.CLog.iseverity.info);
}
catch (System.Exception ex)
{
thisStation?.splunkLog?.WriteException(module, step, ex);
MessageBox.Show($"Serial err {ex.Message}");
}
step = "tbInstallations";
try
{
DataSet1.InstallationDataTable tbInstallations;
using (var ta = new DataSet1TableAdapters.InstallationTableAdapter())
tbInstallations = ta.GetData();
tbInstallations.AddInstallationRow(0, "-");
foreach (DataSet1.InstallationRow r in tbInstallations.Rows)
{
CIns1.Items.Add(r);
CIns2.Items.Add(r);
}
CIns1.SelectedValue = thisStation.Inst_CODE1;
CIns2.SelectedValue = thisStation.Inst_CODE2;
thisStation.splunkLog?.WriteSplunkLog(module, step, LSWLib.CLog.iseverity.info);
}
catch (System.Exception ex)
{
thisStation?.splunkLog?.WriteException(module, step, ex);
MessageBox.Show($"SetINstallations err {ex.Message}");
}
step = "setCheckBoxes";
try
{
tBeep.SelectedValue = thisStation.useBeep;
cbValidation.IsChecked = thisStation.useTestButtons;
cbCheckUsers.IsChecked = thisStation.checkUser;
cbRestartCom.IsChecked = thisStation.RestartCom;
tEPDTimeout.Text = thisStation.EPDTimeOut.ToString();
cbRestartComFirst.IsChecked = thisStation.RestartComFirst;
cbOnlyMK2.IsChecked = thisStation.OnlyMK2;
cbAllowMultipleEPD.IsChecked = thisStation.AllowMultipleEPD;
cbWriteConfig32.IsChecked = thisStation.WriteConfig32;
cbLogAll.IsChecked = thisStation.LogAll;
thisStation.splunkLog?.WriteSplunkLog(module, step, LSWLib.CLog.iseverity.info);
}
catch (System.Exception ex)
{
thisStation?.splunkLog?.WriteException(module, step, ex);
MessageBox.Show($"Settings err {ex.Message}");
}
step = "CheckCon";
try
{
bool rv = thisStation.dataInterface.checkCon(false);
thisStation.splunkLog?.WriteSplunkLog(module, step, LSWLib.CLog.iseverity.info);
}
catch (System.Exception ex)
{
thisStation?.splunkLog?.WriteException(module, step, ex);
MessageBox.Show($"Interface check {ex.Message}");
}
step = "endLoaded";
thisStation?.splunkLog?.WriteSplunkLog(module, step, LSWLib.CLog.iseverity.info);
}
#region BadgeReader
//public void StartReader()
//{
// if (dfReader == null)
// {
// dfReader = new LSWDesfirePublic.CCard();
// dfReader.GetReaderList();
// if (dfReader.readersList.Contains(thisStation.Reader))
// {
// dfReader.SetReader(thisStation.Reader);
// dfReader.Badged += DFReader_Badged;
// dfReader.BadgeTO += DfReader_BadgeTO;
// dfReader.BadgeError += DfReader_BadgeError;
// ReaderTask = dfReader.Wait(5000, 10);
// }
// else
// {
// StringBuilder er = new StringBuilder($"Badgelezer \"{thisStation.Reader}\" niet gevonden!.\nDeze lezers zijn beschikbaar:\n");
// dfReader.GetReaderList();
// foreach (string r in dfReader.readersList) er.AppendLine($"-> {r}");
// MessageBox.Show(er.ToString(), "Badge Lezer", MessageBoxButton.OK, MessageBoxImage.Exclamation);
// dfReader.Dispose(); dfReader = null;
// }
// }
//}
//void CheckBadge()
//{
// thisStation.splunkLog?.KvSet(LSWLib.CLog.skeys.persID, _User.PersID);
// thisStation.splunkLog?.WriteSplunkLog("CheckBadge", LSWLib.CLog.iseverity.info, _User.PersID.ToString(), null);
// //Dispatcher.InvokeAsync(() => { ShowUserInfo(); });
//}
//public void showBadge(int persID, string csn)
//{
// //CSN.Text = csn;
// //Site.Text = string.Empty;
// //Code.Text = persID.ToString();
// _User = thisStation.dataInterface.GetUser(null, persID.ToString(), true);
// Dispatcher.InvokeAsync(CheckBadge, DispatcherPriority.Normal);
//}
//private void DfReader_BadgeError(LSWDesfirePublic.CCard Sender, LSWDesfirePublic.BadgeErrorEventArgs e)
//{
// // endPage();
//}
//private void DfReader_BadgeTO(LSWDesfirePublic.CCard Sender, EventArgs e)
//{
// //this.Dispatcher.InvokeAsync(new Action(() => endPage()), DispatcherPriority.Normal);
//}
//private void DFReader_Badged(LSWDesfirePublic.CCard Sender, LSWDesfirePublic.BadgeEventArgs e)
//{
// if (e.PersID > 0)
// this.Dispatcher.InvokeAsync(new Action(() => showBadge(e.PersID, e.UID)), DispatcherPriority.Background);
// else
// {
// string msg = $"No PersID found on badge {e.UID}";
// MessageBox.Show(msg, "Error", MessageBoxButton.OK);
// thisStation.splunkLog?.WriteSplunkLog("Badged", LSWLib.CLog.iseverity.warning, null, msg);
// }
//}
//private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
//{
// //try
// //{
// // if (dfReader != null )
// // {
// // dfReader.WaitEnd();
// // System.Threading.Thread.Sleep(2000);
// // dfReader.Dispose();
// // dfReader = null;
// // }
// //}
// //catch (System.Exception ex)
// //{
// // System.Diagnostics.Debug.WriteLine(ex.Message);
// //}
//}
#endregion
}
}

View file

@ -0,0 +1,120 @@
<Window x:Class="eDosStation.ShowEPDDose"
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:telerik="http://schemas.telerik.com/2008/xaml/presentation"
xmlns:local="clr-namespace:eDosStation"
mc:Ignorable="d"
Title="ShowEPDDose" Height="620" Width="785.554"
Loaded="Window_Loaded"
WindowStartupLocation="CenterScreen"
FontFamily="Segoe UI"
WindowStyle="None" Closing="Window_Closing" WindowState="Maximized">
<DockPanel>
<StatusBar DockPanel.Dock="Bottom" >
<StatusBarItem Name="statusEPD" Content="Epd" />
</StatusBar>
<Grid TextBlock.FontSize="24" >
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="EPD ID :" Padding="20,0,20,0" HorizontalAlignment="Right"/>
<TextBlock Grid.Row="0" Grid.Column="1" Name ="epdid" Text="..."/>
<TextBlock Grid.Row="0" Grid.Column="2" Text="Type:" Padding="20,0,20,0" HorizontalAlignment="Right"/>
<TextBlock Grid.Row="0" Grid.Column="3" Name ="epdtype" Text="..."/>
<TextBlock Grid.Row="0" Grid.Column="4" Text ="Version" Padding="20,0,20,0" Margin="0,0,50,0" HorizontalAlignment="Right"/>
<TextBlock Grid.Row="0" Grid.Column="5" Name ="HardVersion" Text="..." Padding="20,0,20,0" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="PersID :" Padding="20,0,20,0" HorizontalAlignment="Right"/>
<TextBlock Grid.Row="1" Grid.Column="1" Name ="Wearer" Text="..."/>
<TextBlock Grid.Row="1" Grid.Column="2" Text ="Visit#" Padding="20,0,20,0" HorizontalAlignment="Right"/>
<TextBlock Grid.Row="1" Grid.Column="3" Name ="EpdVisit" Text="..." Padding="20,0,20,0" />
<Line Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="4" Stroke="Black" Width="10" />
<TextBlock Grid.Row="1" Grid.Column="4" Text="User Margin :" Padding="20,0,20,0" HorizontalAlignment="Right"/>
<TextBlock Grid.Row="1" Grid.Column="5" Text="..." Name="epdUserMargin" Padding="20,0,20,0" />
<TextBlock Grid.Row="4" Grid.Column="0" Text="Issued :" Padding="20,0,20,0" HorizontalAlignment="Right"/>
<TextBlock Grid.Row="4" Grid.Column="1" Text="..." Name ="isIssued" Padding="20,0,20,0" />
<TextBlock Grid.Row="4" Grid.Column="2" Text="Gain :" Name="lNGain" Padding="20,0,20,0" HorizontalAlignment="Right"/>
<TextBlock Grid.Row="4" Grid.Column="3" Text="..." Name ="NGain" Padding="20,0,20,0" />
<TextBlock Grid.Row="5" Grid.Column="0" Text="Alarm :" Padding="20,0,20,0" HorizontalAlignment="Right" Margin="0,6.2,0.2,88.4" Grid.RowSpan="2"/>
<TextBlock Grid.Row="5" Grid.Column="1" Text="..." Name ="hasAlarm" Padding="20,0,20,0"/>
<StackPanel Grid.Row="5" Grid.Column="2" Grid.ColumnSpan="2" Name="sAlarm" Margin="50,0,20,0"/>
<TextBlock Grid.Row="6" Grid.Column="0" Text="Doses :" Padding="20,0,20,0" VerticalAlignment="Center" HorizontalAlignment="Right" />
<StackPanel Grid.Row="6" Grid.Column="1" Grid.ColumnSpan="5" Orientation="Vertical" Margin="5,10,0,20">
<StackPanel Orientation="Horizontal">
<TextBlock Name="HpDose07l" Width="200"/>
<TextBlock Name="HpDose07" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Name="HpPeak07l" Width="200" />
<TextBlock Name="HpPeak07" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Name="HpDose10l" Width="200"/>
<TextBlock Name="HpDose10" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Name="HpPeak10l" Width="200" />
<TextBlock Name="HpPeak10" />
</StackPanel>
</StackPanel>
<TextBlock Grid.Row="7" Grid.Column="0" Text="Dose Tresholds :" Padding="20,0,20,0" VerticalAlignment="Center" HorizontalAlignment="Right"/>
<StackPanel Grid.Row="7" Grid.Column="1" Grid.ColumnSpan="5" Orientation="Vertical" Margin="0,20,0,20" >
<StackPanel Orientation="Horizontal">
<TextBlock Name="HP07AlarmDosel" Width="200" />
<TextBlock Name="HP07AlarmDose" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Name="HP10AlarmDose1l" Width="200" />
<TextBlock Name="HP10AlarmDose1" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Name="HP10AlarmDose2l" Width="200" />
<TextBlock Name="HP10AlarmDose2" />
</StackPanel>
</StackPanel>
<Grid Grid.Row="8" Grid.ColumnSpan="6" >
<telerik:RadProgressBar Name="Progress" Style="{StaticResource styleTTOProgessBar}" />
<TextBlock Name="ProgressText" Text="100" Foreground="White" FontSize="20" HorizontalAlignment="Center" />
</Grid>
<StackPanel Grid.Row="9" Grid.Column="0" Grid.ColumnSpan="6" HorizontalAlignment="Center" VerticalAlignment="Center" >
<telerik:RadButton x:Name="bEpdCancel" Content="Close" Style="{StaticResource OkCancelButton}" Margin="0,20,0,20" Click="RadButton_Click" />
<TextBlock x:Name="tWaitFor" Text="" />
</StackPanel>
</Grid>
</DockPanel>
</Window>

View file

@ -0,0 +1,237 @@
using System;
using System.Text;
using System.Windows;
using System.Windows.Threading;
namespace eDosStation
{
/// <summary>
/// Interaction logic for ShowEPDDose.xaml
/// </summary>
public partial class ShowEPDDose : Window
{
private enum eEntryState { none, getepd, epdtimeout, epdError, epdOK, final };
#pragma warning disable CS0414 // The field 'ShowEPDDose.EntryState' is assigned but its value is never used
private eEntryState EntryState;
#pragma warning restore CS0414 // The field 'ShowEPDDose.EntryState' is assigned but its value is never used
Station thisStation;
EpdBaseClr.Epd2 ep;
DispatcherTimer dispatcherTimer;
private DateTime ResultTime;
private User thisUser;
#pragma warning disable CS0414 // The field 'ShowEPDDose.EpdReading' is assigned but its value is never used
private bool EpdReading;
#pragma warning restore CS0414 // The field 'ShowEPDDose.EpdReading' is assigned but its value is never used
private bool FinalTimeOut;
public ShowEPDDose(Station curStation)
{
InitializeComponent();
thisStation = curStation;
EpdReading = false;
FinalTimeOut = false;
EntryState = eEntryState.none;
}
private void CountDown(object sender, EventArgs e)
{
double v = (ResultTime - DateTime.Now).TotalSeconds;
if (v > Progress.Minimum)
{
Progress.Value = v;
ProgressText.Text = ((int)v).ToString();
}
else
{
SetTimedOutAndEnd();
}
}
#region EPD Callback
private void Ep_EpdTO(EpdBaseClr.Epd2 Sender, EpdBaseClr.EpdTOEventArgs e)
{
System.Diagnostics.Debug.WriteLine("TIME OUT");
Dispatcher.InvokeAsync(() => { SetTimedOutAndEnd(); });
}
private void Ep_EpdError(EpdBaseClr.Epd2 Sender, EpdBaseClr.EpdErrorEventArgs e)
{
System.Diagnostics.Debug.WriteLine("ERROR ");
Dispatcher.InvokeAsync(() => {
MessageBox.Show($"EPD Error {e.returnValue} {e.ErrorRV} {e.ErrorStep}");
Dispatcher.InvokeAsync(() => { SetTimedOutAndEnd(); });
});
}
private void Ep_EpdRead(EpdBaseClr.Epd2 Sender, EpdBaseClr.EpdEventArgs e)
{
EpdReading = false;
dispatcherTimer?.Stop();
Dispatcher.InvokeAsync(() => LoadDoses());
}
#endregion
private void LoadDoses()
{
int rv = 0;
if (ep == null) return;
rv = ep.GetAll(true);
if (rv != 0) MessageBox.Show("Communication error");
isIssued.Text = ep.EPDIssued ? "Yes" : "no";
string sPersID = ep.WearerName.Trim();
Wearer.Text = sPersID;
EpdVisit.Text = ep.WearerID.ToString();
HardVersion.Text = ep.HardVersion.ToString() + '.' + ep.HardVersionMinor.ToString(); // ep.SoftVersion.ToString();
if (ep.eDoshasAlarm)
{
hasAlarm.Text = "Yes";
} else
hasAlarm.Text = "No";
epdid.Text = ep.EpdID.ToString();
var stype = new StringBuilder();
if (ep.isMK3) stype.Append("MK3 "); else stype.Append("MK2 ");
if (ep.isBG) stype.Append(" BG"); else stype.Append(" NG");
epdtype.Text = stype.ToString();
Decoder.AlarmToTextBox(sAlarm, ep);
HpDose07l.Text = ep.Hp07Name;
HpDose10l.Text = ep.Hp10Name;
HpDose07.Text = $"{ep.Hp07:0.00} µSv";
HpDose10.Text = $"{ep.Hp10:0.00} µSv";
HP10AlarmDose1l.Text = "Warning "+ ep.Hp10Name;
HP10AlarmDose2l.Text = "Alarm "+ ep.Hp10Name;
HP07AlarmDosel.Text = "Alarm "+ ep.Hp07Name;
HP10AlarmDose1.Text = $"{ep.Hp10THDose1:0.00} µSv";
HP10AlarmDose2.Text = $"{ep.Hp10THDose2:0.00} µSv";
HP07AlarmDose.Text = $"{ep.Hp07THDose:0.00} µSv";
HpPeak07l.Text = ep.Hp07Name +" Peak";
HpPeak07.Text = $"{ep.Hp07Peak:0.00} µSv {ep.Hp07PeakTime:yyyy-MM-dd HH:mm} ";
HpPeak10l.Text = ep.Hp10Name + " Peak";
HpPeak10.Text = $"{ep.Hp10Peak:0.00} µSv {ep.Hp10PeakTime:yyyy-MM-dd HH:mm} ";
if (ep.isNG) {
lNGain.Visibility = NGain.Visibility = Visibility.Visible;
NGain.Text = ep.NGgain.ToString();
} else {
lNGain.Visibility = NGain.Visibility = Visibility.Hidden;
}
if (!string.IsNullOrEmpty(sPersID))
{
try
{
thisUser = thisStation.dataInterface.GetUser(string.Empty, sPersID,false);
epdUserMargin.Text = thisUser.Margin.ToString();
}
catch
{
}
}
else
epdUserMargin.Text = "--";
Progress.Visibility = Visibility.Collapsed;
bEpdCancel.IsEnabled = true;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
FinalTimeOut = false;
EpdReading = false;
ep = new EpdBaseClr.Epd2(thisStation.ComPort,thisStation.OnlyMK2);
ep.SetFeedbackSound(thisStation.useBeep, thisStation.useBeepMK3());
ep.EpdRead += Ep_EpdRead;
ep.EpdError += Ep_EpdError;
ep.EpdTO += Ep_EpdTO;
dispatcherTimer = new DispatcherTimer(DispatcherPriority.Background);
dispatcherTimer.Interval = thisStation.ScreenProgressBarInterval;
dispatcherTimer.Tick += CountDown;
ResultTime = DateTime.Now.AddSeconds(thisStation.ScreenEPDTimeout);
Progress.Value = Progress.Maximum = thisStation.ScreenEPDTimeout;
dispatcherTimer.Start();
startEPDRead();
//dispatcherTimer = new DispatcherTimer(DispatcherPriority.Normal);
//dispatcherTimer.Interval = TimeSpan.FromMilliseconds(thisStation.EPDTimeOut / 10);
//Progress.Maximum = Progress.Value = dispatcherTimer.Interval.TotalSeconds * 10;
//dispatcherTimer.Tick += CountDown;
//Dispatcher.InvokeAsync(() => ep.Wait(thisStation.EPDTimeOut, 1),DispatcherPriority.Background);
//dispatcherTimer.Start();
}
private void startEPDRead()
{
EpdReading = true; bEpdCancel.IsEnabled = false;
Dispatcher.InvokeAsync(new Action(() => { ep.Wait(thisStation.EPDTimeOut, thisStation.EPDRetries); }), DispatcherPriority.Background);
}
private void SetTimedOutAndEnd()
{
if (!FinalTimeOut)
{
bEpdCancel.IsEnabled = true;
FinalTimeOut = true;
dispatcherTimer?.Stop();
Progress.Value = 0;
Progress.Background = System.Windows.Media.Brushes.Red;
statusEPD.Content = "Time out";
tWaitFor.Text = "Lezer niet gevonden !";
dispatcherTimer = new DispatcherTimer(DispatcherPriority.Background);
dispatcherTimer.Tick += ShowAndEnd;
dispatcherTimer.Interval = thisStation.ShowTimeoutTime;
dispatcherTimer.Start();
}
}
private void ShowAndEnd(object sender, EventArgs e)
{
dispatcherTimer?.Stop();
dispatcherTimer = null;
endPage();
}
private void endPage()
{
this.Close();
}
private void RadButton_Click(object sender, RoutedEventArgs e)
{
endPage();
}
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
dispatcherTimer?.Stop();
dispatcherTimer = null;
EpdReading = true;
try
{
if (ep != null)
{
ep.WaitEnd();
ep.Dispose();
ep = null;
}
}
catch (System.Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
}
}
}

View file

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace eDosStation
{
public class SimulateData
{
public string WearerID;
public string WearerName;
public int EdpType;
}
}

View file

@ -0,0 +1,93 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace eDosStation
{
public class SqlLog: IDisposable
{
private string sqlLogFolder;
private string sqlLogFile;
private bool disposed = false;
System.IO.StreamWriter wr;
System.Globalization.CultureInfo ci = System.Globalization.CultureInfo.GetCultureInfo("en-US");
public SqlLog()
{
wr = null;
try
{
sqlLogFolder = ConfigurationManager.AppSettings["sqlLogFolder"];
if (System.IO.Directory.Exists(sqlLogFolder))
{
sqlLogFile = System.IO.Path.Combine(sqlLogFolder, "sql.txt");
wr = new System.IO.StreamWriter(sqlLogFile, true);
}
} catch(System.Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!this.disposed)
{
if (disposing)
{
if (wr?.BaseStream != null) wr.Close();
wr?.Dispose();
}
disposed = true;
}
}
~SqlLog()
{
Dispose(false);
}
public void LogCommand(string ermsg)
{
if (wr !=null && wr.BaseStream.CanWrite)
{
wr.WriteLine($"-- {System.DateTime.Now.ToString("yyyy-MM-dd HH:mm")} --- err {ermsg} ---");
wr.Flush();
}
}
public void LogCommand(System.Data.SqlClient.SqlCommand co )
{
if (wr != null)
{
wr.WriteLine($"-- {System.DateTime.Now.ToString("yyyy-MM-dd HH:mm")} ---");
if (co.CommandType == System.Data.CommandType.StoredProcedure) wr.Write("exec ");
wr.Write(co.CommandText);
int paidx = 0;
foreach (System.Data.SqlClient.SqlParameter pa in co.Parameters)
{
if (paidx++ > 0) wr.Write(",");
wr.Write($" @{pa.ParameterName}=");
if (pa.Value == DBNull.Value) wr.Write("null");
else if (pa.DbType == System.Data.DbType.String) wr.Write($"'{pa.Value}'");
else if (pa.DbType == System.Data.DbType.DateTime) wr.Write($"'{pa.Value:yyyyMMdd HH:mm}'");
else if (pa.DbType == System.Data.DbType.Double)
{
wr.Write(((double)pa.Value).ToString("0.0", ci));
}
else wr.Write(pa.Value);
}
wr.WriteLine();
wr.WriteLine("----");
wr.Flush();
}
}
}
}

View file

@ -0,0 +1,442 @@
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Diagnostics.Eventing.Reader;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Threading;
using static eDosStation.Station;
using spl1 = LSWLib.CLog;
namespace eDosStation
{
public class Station
{
const string moduleName = "Station";
public spl1 splunkLog;
private bool doLog;
public System.IO.StreamWriter stationLog = null;
public int ID_Station { get; set; }
public int ComPort { get; set; }
public int Inst_CODE1 { get; set; }
public int Inst_CODE2 { get; set; }
public string Inst_Name1 { get; set; }
public string Inst_Name2 { get; set; }
public string TestCSN { get; set; }
public string TestCode { get; set; }
public string Reader { get; internal set; }
public string ReaderName {
get { if (isElatec) return $"Elatec: {ElatecPort}/{ElatecFW}"; else return $"RFID {Reader}"; }
}
public bool isElatec { get; internal set; }
public string ElatecPort { get; internal set; }
public string ElatecFW { get; internal set; }
public bool useTestButtons { get; set; }
public byte useBeep { get; set; }
public bool checkUser { get; internal set; }
public bool RestartCom { get; set; }
public int EPDTimeOut { get; internal set; }
/// <summary>
/// EpdTimeout in seconds + 5
/// </summary>
public int ScreenEPDTimeout { get { return (EPDTimeOut/1000)+1; } }
public TimeSpan ScreenProgressBarInterval{ get { return TimeSpan.FromSeconds((double)ScreenEPDTimeout/20.0) ; } }
public int EPDRetries { get; internal set; }
public bool OnlyMK2 { get; internal set; }
public bool RestartComFirst { get; internal set; }
public bool AllowMultipleEPD { get; internal set; }
public TimeSpan ShowTimeoutTime { get; internal set; }
public TimeSpan InfoProgressbarInterval { get; internal set; }
public double InfoScreenTimeout { get; internal set; }
public bool WriteConfig32 { get; internal set; }
System.IO.Ports.SerialPort elatecReader;
public string sComPort { get { return MakeComportString(ComPort); } }
public const int defInst_CODE1 = 1;
public const int defInst_CODE2 = 11;
public const string defInst_Name1 = "BR1";
public const string defInst_Name2 = "Venus";
public cDevCon DevCon;
public bool Changed = false;
public int Error = 0;
public string ErrorMessage;
public StringBuilder insComments;
public TextBlock tbComments;
public DataInterface dataInterface;
public System.Collections.Generic.Dictionary<byte, ushort> beepMk3Map;
internal bool LogAll;
internal bool WriteConfig;
public delegate void dReceivedPersID(int persid);
public dReceivedPersID ReceivedPersid;
public ushort useBeepMK3()
{
if (beepMk3Map.ContainsKey(useBeep))
return beepMk3Map[useBeep];
else return beepMk3Map[0b00011010];
}
public Station(DataInterface mDataInterface, string Station, App curApp)
{
const string module = "StationInit";
string step = null;
ReceivedPersid = null;
splunkLog = new spl1(Environment.MachineName,hourlyLog:true);
stationLog = null;
dataInterface = mDataInterface;
Error = 0;
ErrorMessage = string.Empty;
ComPort = 0;
Inst_CODE1 = defInst_CODE1;
Inst_CODE2 = defInst_CODE2;
Inst_Name1 = defInst_Name1;
Inst_Name2 = defInst_Name2;
TestCSN = System.Configuration.ConfigurationManager.AppSettings["TestCSN"];
TestCode = System.Configuration.ConfigurationManager.AppSettings["TestCode"];
if (System.Configuration.ConfigurationManager.AppSettings["LogAll"] != null)
LogAll = bool.Parse(System.Configuration.ConfigurationManager.AppSettings["LogAll"]);
else
LogAll = false;
if (!String.IsNullOrEmpty(curApp.elatecPort))
{
ElatecPort = curApp.elatecPort;
ElatecFW = curApp.elatecFirmware;
}
else if (System.Configuration.ConfigurationManager.AppSettings["Elatec"] != null)
{
ElatecPort = System.Configuration.ConfigurationManager.AppSettings["Elatec"];
ElatecFW = "EDOS000";
}
isElatec = (!string.IsNullOrWhiteSpace(ElatecPort) && ElatecFW.StartsWith("EDOS",StringComparison.CurrentCultureIgnoreCase));
if (System.Configuration.ConfigurationManager.AppSettings["WriteConfig"] != null)
WriteConfig = bool.Parse(System.Configuration.ConfigurationManager.AppSettings["WriteConfig"]);
else
WriteConfig = false;
insComments = new StringBuilder();
tbComments = new TextBlock();
tbComments.FontSize = 20;
tbComments.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
tbComments.TextAlignment = System.Windows.TextAlignment.Center;
EPDTimeOut = 10000; //ms
EPDRetries = 2;
ShowTimeoutTime = TimeSpan.FromSeconds(8);
InfoScreenTimeout = 5;
InfoProgressbarInterval = TimeSpan.FromSeconds(1);
beepMk3Map = new Dictionary<byte, ushort>();
beepMk3Map.Add(0b00010111, 0b1001110011100001);
beepMk3Map.Add(0b00011111, 0b1001110011000001);
beepMk3Map.Add(0b00010110, 0b1001110010100001);
beepMk3Map.Add(0b00011110, 0b1001110010000001);
beepMk3Map.Add(0b00011010, 0b1001110000000000);
stationLog = mDataInterface.stationLog;
var co = dataInterface.getCon(true); // No dispose
{
using (var cmd = new SqlCommand("StationSettingsSelect", co) {CommandType = System.Data.CommandType.StoredProcedure })
{
step = "select";
try
{
var rs = cmd.ExecuteReader(System.Data.CommandBehavior.SingleRow);
if (rs.HasRows && rs.Read())
{
object[] Values = new object[rs.FieldCount];
int rv = rs.GetValues(Values);
ID_Station = (int)Values[rs.GetOrdinal("ID_Station")];
ComPort = 0;
if (!string.IsNullOrEmpty(curApp.eDosPort) && curApp.eDosPort.StartsWith("COM",StringComparison.CurrentCultureIgnoreCase))
{
if (int.TryParse(curApp.eDosPort.Substring(3), out int port)) ComPort = port;
}
if (ComPort == 0) ComPort = (int)Values[rs.GetOrdinal("ComPort")];
Inst_CODE1 = rs.IntOrDefault("Inst_CODE1", 0);
Inst_CODE2 = rs.IntOrDefault("Inst_CODE2", 0);
Inst_Name1 = rs.StringOrDefault("Inst_Name1", string.Empty);
Inst_Name2 = rs.StringOrDefault("Inst_Name2", string.Empty);
TestCSN = rs.StringOrDefault("TestCSN", string.Empty);
Reader = string.Empty;
if (!isElatec) {
if (!string.IsNullOrEmpty(curApp.RFIDReader)) Reader = curApp.RFIDReader;
else Reader = rs.StringOrDefault("Reader", string.Empty);
}
useTestButtons = rs.BoolOrDefault("useTestButtons", false);
useBeep = rs.ByteOrDefault("useBeep", 0b00010110);
doLog = rs.BoolOrDefault("doLog", false);
checkUser = rs.BoolOrDefault("checkUser", false);
EPDTimeOut = rs.IntOrDefault("EPDTimeout", 10000);
EPDRetries = rs.IntOrDefault("EPDRetries", 2);
RestartCom = rs.BoolOrDefault("RestartCom", false);
RestartComFirst = rs.BoolOrDefault("RestartComFirst", false);
OnlyMK2 = rs.BoolOrDefault("OnlyMK2", false);
AllowMultipleEPD = rs.BoolOrDefault("AllowMultipleEPD", false);
WriteConfig32 = true; // rs.BoolOrDefault("WriteConfig32", false);
}
else
{
ID_Station = 0;
ComPort = 0;
Inst_CODE1 = 1;
Inst_CODE2 = 11;
Inst_Name1 = "BR1"; Inst_Name2 = "Venus";
TestCSN = System.Configuration.ConfigurationManager.AppSettings["TestCSN"];
TestCode = System.Configuration.ConfigurationManager.AppSettings["TestCode"];
Changed = true;
Reader = string.Empty;
if (!isElatec)
{
if (!string.IsNullOrEmpty(curApp.RFIDReader)) Reader = curApp.RFIDReader;
else Reader = System.Configuration.ConfigurationManager.AppSettings["Reader"];
}
checkUser = false;
EPDTimeOut = 10000;
EPDRetries = 2;
AllowMultipleEPD = false;
WriteConfig32 = true;
}
rs.Close();
splunkLog.WriteSplunkLog(module,step, spl1.iseverity.info);
Error = 0;
}
catch (System.Exception ex)
{
Error = 1;
ErrorMessage = ex.Message;
splunkLog.WriteException(moduleName,module, ex);
if (stationLog != null) stationLog.WriteLine($"GetStationSettings error {ex.Message} {System.DateTime.Now}");
}
}
dataInterface.SetStation(ID_Station);
dataInterface.SetCheckUser(checkUser);
dataInterface.SetAllowMultipleEPD(AllowMultipleEPD);
const string sProc2 = "GetInstallationsComments";
if (Error == 0) using (var cmd2 = new SqlCommand(sProc2, co))
{
cmd2.CommandType = System.Data.CommandType.StoredProcedure;
cmd2.Parameters.AddWithValue("@Inst_CODE1", Inst_CODE1);
if (Inst_CODE2 > 0) cmd2.Parameters.AddWithValue("@Inst_CODE2", Inst_CODE2);
try
{
var rs = cmd2.ExecuteReader(System.Data.CommandBehavior.SingleResult);
string curins = string.Empty, thisins = string.Empty, thiscomment = string.Empty;
if (rs.HasRows)
while (rs.Read())
{
thisins = rs.GetString(2);
thiscomment = rs.GetString(3).Replace("\\n", "\n");
if (curins.CompareTo(thisins) != 0)
{
if (curins != string.Empty) tbComments.Inlines.Add(new LineBreak());
tbComments.Inlines.Add(new Bold(new Run($"Installation {thisins}:\n") { FontSize = 25 }));
insComments.AppendLine($"Installation {thisins}");
curins = thisins;
}
tbComments.Inlines.Add(new Run(thiscomment));
}
rs.Close();
}
catch (System.Exception ex)
{
splunkLog.WriteException(moduleName, sProc2, ex);
Error = 2;
ErrorMessage = ex.Message;
if (stationLog != null) stationLog.WriteLine($"{sProc2} error {ex.Message} {System.DateTime.Now}");
}
}
co?.Close();
}
DevCon = new cDevCon(ComPort, splunkLog);
if (isElatec) openElatec();
}
private void CmdSetParams(SqlCommand cmd)
{
try
{
cmd.SetIfExists("ComPort", ComPort);
if (!string.IsNullOrEmpty(Inst_Name1) && Inst_CODE1 > 0)
{
cmd.SetIfExists("Inst_CODE1", Inst_CODE1);
cmd.SetIfExists("Inst_Name1", Inst_Name1);
}
if (!string.IsNullOrEmpty(Inst_Name2) && Inst_CODE2 > 0)
{
cmd.SetIfExists("Inst_CODE2", Inst_CODE2);
cmd.SetIfExists("Inst_Name2", Inst_Name2);
}
//if (!string.IsNullOrEmpty(TestCSN))
// cmd.Parameters.AddWithValue("TestCSN", TestCSN);
//Reader
if (!string.IsNullOrEmpty(Reader)) cmd.SetIfExists("Reader", Reader);
cmd.SetIfExists("checkUser", checkUser);
cmd.SetIfExists("useBeep", useBeep);
cmd.SetIfExists("EPDTimeout", EPDTimeOut);
cmd.SetIfExists("EPDRetries", EPDRetries);
cmd.SetIfExists("RestartCom", RestartCom);
cmd.SetIfExists("RestartComFirst", RestartComFirst);
cmd.SetIfExists("OnlyMK2", OnlyMK2);
cmd.SetIfExists("AllowMultipleEPD", AllowMultipleEPD);
cmd.SetIfExists("useTestButtons", useTestButtons);
}
catch (System.Exception ex)
{
splunkLog?.WriteException("Station", "SetParams", ex);
Error = 1;
ErrorMessage = ex.Message;
stationLog?.WriteLine($"GetStationSettings error {ex.Message} {System.DateTime.Now}");
}
}
private void UpdateToDb(SqlConnection co, SqlCommand cmd)
{
const string module = "UpdateToDb";
cmd.Connection = co;
try
{
cmd.Parameters.Clear();
SqlCommandBuilder.DeriveParameters(cmd);
CmdSetParams(cmd);
splunkLog?.KvAddCommand(spl1.skeys.sqlQuery, cmd);
cmd.ExecuteNonQuery();
splunkLog?.WriteSplunkLog(module,null, spl1.iseverity.info);
}
catch (System.Exception ex) {
splunkLog?.WriteException( module,null, ex);
stationLog?.WriteLine($"{module} error {ex.Message} co {co.DataSource} {System.DateTime.Now}");
}
splunkLog?.KvClear();
}
public void UpdateAppSettings()
{
const string module = "UpdateAppSettings";
string step = null;
string[] Keys = { "LogAll", "Elatec" } ;
string[] Values = { "false" ,"" };
Values[0] = LogAll.ToString();
Values[1] = ElatecPort;
try
{
step = "open";
var configFile = System.Configuration.ConfigurationManager.OpenExeConfiguration(System.Configuration.ConfigurationUserLevel.None);
var settings = configFile.AppSettings.Settings;
for (int idx = 0; idx < Keys.Length; idx++)
{
if (settings[Keys[idx]] == null)
{
settings.Add(Keys[idx], Values[idx]);
}
else
{
settings[Keys[idx]].Value = Values[idx];
}
}
step = "save";
configFile.Save(System.Configuration.ConfigurationSaveMode.Modified);
step = "refresh";
System.Configuration.ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);
}
catch (System.Exception ex)
{
splunkLog?.WriteException(module, step, ex);
}
}
public void Update()
{
const string module = "Update";
string step = null;
SqlConnection co = null;
using (var cmd = new SqlCommand("StationSettingsUpdate"))
{
cmd.CommandType = System.Data.CommandType.StoredProcedure;
try
{
step = "UpdateToLocalDB";
co = dataInterface.getCon(true);
splunkLog?.KvAddCommand(spl1.skeys.sqlQuery,cmd);
UpdateToDb(co, cmd);
co.Close();
step = "UpdateToCentralDB";
co = dataInterface.getConCentral(true);
splunkLog?.KvClear(spl1.skeys.sqlQuery);
splunkLog?.KvAddCommand(spl1.skeys.sqlQuery, cmd);
UpdateToDb(co, cmd);
splunkLog?.WriteSplunkLog(module,step, spl1.iseverity.info);
}
catch (System.Exception ex)
{
Error = 1;
ErrorMessage = ex.Message;
splunkLog?.WriteException( module,step, ex);
stationLog?.WriteLine($"{module} error {ex.Message} co {co.DataSource} {System.DateTime.Now}");
}
co?.Close();
splunkLog?.KvClear();
}
UpdateAppSettings();
}
public string MakeComportString(int comport)
{
return "COM" + comport.ToString();
}
public string find()
{
string rv ;
if (DevCon != null)
{
if (DevCon.hasCommand) rv = DevCon.FindEdosCom();
else rv = DevCon.comdefault;
}
else rv = sComPort;
return rv;
}
public string DeviceRestart()
{
const string module = "DeviceRestart";
string er = null;
if (DevCon != null && DevCon.hasCommand) er=DevCon.Restart();
if (!string.IsNullOrEmpty(er)) splunkLog?.WriteSplunkLog(module, null, spl1.iseverity.err, er);
return er;
}
public void openElatec()
{
if (isElatec)
{
elatecReader = new System.IO.Ports.SerialPort(ElatecPort, 115200);
elatecReader.DataReceived += ElatecReader_DataReceived;
elatecReader.Open();
}
}
private void ElatecReader_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
if (ReceivedPersid != null)
{
var v = elatecReader.ReadLine();
int PersID;
if (!int.TryParse(v, out PersID)) PersID = 0;
ReceivedPersid(PersID);
}
}
}
}

View file

@ -0,0 +1,58 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
namespace eDosStation
{
public class TouchEnabledTextBox : TextBox
{
//inside the class definition
private Process _touchKeyboardProcess = null;
public TouchEnabledTextBox()
{
this.GotFocus += TouchEnabledTextBox_GotFocus;
//this.GotTouchCapture += TouchEnabledTextBox_GotTouchCapture;
this.LostFocus += TouchEnabledTextBox_LostFocus;
}
private void TouchEnabledTextBox_GotFocus(object sender, RoutedEventArgs e)
{
string touchKeyboardPath = @"C:\Program Files\Common Files\Microsoft Shared\Ink\TabTip.exe";
_touchKeyboardProcess = Process.Start(touchKeyboardPath);
}
private void TouchEnabledTextBox_GotTouchCapture(object sender, System.Windows.Input.TouchEventArgs e)
{
string touchKeyboardPath = @"C:\Program Files\Common Files\Microsoft Shared\Ink\TabTip.exe";
_touchKeyboardProcess= Process.Start(touchKeyboardPath);
}
//add this method as a member method of the class
private void TouchEnabledTextBox_LostFocus(object sender, RoutedEventArgs eventArgs)
{
if (_touchKeyboardProcess != null)
{
_touchKeyboardProcess.Kill();
//nullify the instance pointing to the now-invalid process
_touchKeyboardProcess = null;
}
}
}
}

View file

@ -0,0 +1,73 @@
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace eDosStation
{
public class User
{
public const string ErrorEPDInUse = "EPD in use";
public int PersID { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public string conCode { get; set; }
public string Language { get; set; }
public bool? AccessAllow { get; set; }
public double? Margin { get; set; }
public int? VisitIDLocked { get; set; }
public string ReasonNoAccess { get; set; }
public string UserComment { get; set; }
public bool AllOk = false;
public bool hasEPD { get; set; }
public int Error = 0;
public string ErrorMessage;
internal int? activeVisit;
internal bool? isAgent;
public string FullUserName()
{
return string.Concat(FirstName, " ", LastName);
}
public bool HasMessage ()
{
return AccessAllow != true || !string.IsNullOrEmpty(UserComment) || !string.IsNullOrEmpty(ReasonNoAccess);
}
public bool AllowShowTask()
{
return AllOk == true && !hasEPD && (VisitIDLocked == null || VisitIDLocked==0);
}
public User()
{
SetNotFound();
Error = 0;
}
public void SetNotFound()
{
Error = 0;
PersID = 0;
LastName = "Not Found";
FirstName = "Not Found";
conCode = "A1";
Language = "N";
AccessAllow = false;
activeVisit = null;
Margin = 0;
VisitIDLocked = 0;
ReasonNoAccess = "Not found";
UserComment = string.Empty;
hasEPD = false;
AllOk = false;
isAgent = false;
}
}
}

View file

@ -0,0 +1,109 @@
<Window xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" x:Class="eDosStation.UserInfo"
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:eDosStation"
mc:Ignorable="d"
Title="UserInfo" Height="600" Width="900" Loaded="Window_Loaded" FontSize="22">
<Grid Name="G1" >
<Grid.RowDefinitions >
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto"/>
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.ColumnSpan="5" HorizontalAlignment="Center" Height="60" Text="Overzicht documenten en status" FontSize="18" FontWeight="Bold" />
<TextBlock Grid.Row="2" Grid.Column="0" Text="Naam" />
<TextBlock Grid.Row="2" Grid.Column="1" Text="Leenaers" Name="LastName"/>
<TextBlock Grid.Row="3" Grid.Column="0" Text="Voornaam" />
<TextBlock Grid.Row="3" Grid.Column="1" Text="Ann" Name="FirstName"/>
<TextBlock Grid.Row="4" Grid.Column="0" Text="Groep" />
<TextBlock Grid.Row="4" Grid.Column="1" Text="W" Name="Type" />
<TextBlock Grid.Row="5" Grid.Column="0" Text="BadgeColor" />
<TextBlock Grid.Row="5" Grid.Column="1" Text="Blue" Name="BadgeColor" />
<TextBlock Grid.Row="6" Grid.Column="0" Text="------" />
<TextBlock Grid.Row="6" Grid.Column="1" Text="Starts" HorizontalAlignment="Center" FontWeight="Bold" />
<TextBlock Grid.Row="6" Grid.Column="2" Text="Expires" HorizontalAlignment="Center" FontWeight="Bold" />
<TextBlock Grid.Row="6" Grid.Column="3" Text="Status" HorizontalAlignment="Center" FontWeight="Bold" />
<TextBlock Grid.Row="7" Grid.Column="0" Text="Quiz" />
<TextBlock Grid.Row="7" Grid.Column="1" Text="start" Name="QuizDate" />
<TextBlock Grid.Row="7" Grid.Column="2" Text="end" Name="QuizExpiry"/>
<TextBlock Grid.Row="7" Grid.Column="3" Text="OK" Name="QuizOK"/>
<TextBlock Grid.Row="8" Grid.Column="0" Text="Document A" />
<TextBlock Grid.Row="8" Grid.Column="1" Text="start" Name="RFStart" />
<TextBlock Grid.Row="8" Grid.Column="2" Text="end" Name="RFEnd"/>
<TextBlock Grid.Row="9" Grid.Column="0" Text="Medic" />
<TextBlock Grid.Row="9" Grid.Column="1" Text="" />
<TextBlock Grid.Row="9" Grid.Column="2" Text="End" Name="MedicExpiry" />
<TextBlock Grid.Row="9" Grid.Column="3" Text="ok" Name="MedicOK" />
<TextBlock Grid.Row="10" Grid.Column="0" Text="Bunker" />
<TextBlock Grid.Row="10" Grid.Column="2" Text="" Name="InVivoWbcExpiry" />
<TextBlock Grid.Row="10" Grid.Column="3" Text="ok" Name="InVivoOK" />
<TextBlock Grid.Row="10" Grid.Column="4" Text="Freq:" Name="InVivoWbcFreq" />
<TextBlock Grid.Row="11" Grid.Column="0" Text="LRM" />
<TextBlock Grid.Row="11" Grid.Column="2" Text="" Name="InVitroExpiry" />
<TextBlock Grid.Row="11" Grid.Column="3" Text="ok" Name="InVitroOK" />
<TextBlock Grid.Row="11" Grid.Column="4" Text="Freq:" Name="InVitroFreq" />
<TextBlock Grid.Row="12" Grid.Column="0" Text="Attest" />
<TextBlock Grid.Row="12" Grid.Column="1" Text="" />
<TextBlock Grid.Row="12" Grid.Column="2" Text="End" Name="VxExpiry" />
<TextBlock Grid.Row="12" Grid.Column="3" Text="ok" Name="VxColor" />
<TextBlock Grid.Row="13" Grid.Column="0" Text="eDos ACCESS" />
<TextBlock Grid.Row="13" Grid.Column="1" Text="" Name="AccessAllow" />
<TextBlock Grid.Row="14" Grid.Column="0" Text="Comment" />
<TextBlock Grid.Row="14" Grid.Column="1" Text="" Name="Comment" />
<TextBlock Grid.Row="15" Grid.Column="0" Text="Visit with Alarm" />
<TextBlock Grid.Row="15" Grid.Column="1" Text="" Name="VisitLocked" />
<TextBlock Grid.Row="16" Grid.Column="0" Text="Dosislimiet" />
<TextBlock Grid.Row="16" Grid.Column="1" Text="" />
<TextBlock Grid.Row="16" Grid.Column="2" Text="1000UsV" Name="MarginHP10_Y" />
<telerik:RadButton Grid.Row="17" Grid.Column="0" Grid.ColumnSpan="5" Content="OK" Name="cmdOK" Width="200" Height="50" Margin="5,20,5,20" Click="cmdOK_Click" />
</Grid>
</Window>

View file

@ -0,0 +1,131 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection.Emit;
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;
using System.Xml;
using Telerik.Windows.Input.Touch;
namespace eDosStation
{
/// <summary>
/// Interaction logic for UserInfo.xaml
/// </summary>
public partial class UserInfo : Window
{
int PersID;
DataTable dsInfo;
DataSet1.GetPersonOverviewRow rw;
public UserInfo(int persid)
{
InitializeComponent();
PersID = 12925;
}
private void cmdOK_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
GridLength glz = new GridLength(0);
rw = null;
using (var ta = new DataSet1TableAdapters.GetPersonOverviewTableAdapter())
{
dsInfo = ta.GetData(PersID);
if (dsInfo != null && dsInfo.Rows.Count > 0) rw = dsInfo.Rows[0] as DataSet1.GetPersonOverviewRow;
}
if (rw != null)
{
LastName.Text = rw.LastName;
FirstName.Text = rw.FirstName;
Type.Text = rw.Type;
MarginHP10_Y.Text = rw.MarginHP10_Y.ToString() + " µSv";
if (rw.VisitIDLocked > 0)
VisitLocked.Text = rw.VisitIDLocked.ToString();
else
VisitLocked.Text = string.Empty;
if (!rw.IsAccessAllowNull())
AccessAllow.Text = rw.AccessAllow ? "OK" : "Not ok";
else
AccessAllow.Text = "No access";
Comment.Text = rw.ReasonNoAccess;
if (!rw.IsinfoNull())
{
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(rw.info);
var nl = xmlDocument.SelectSingleNode("Info[1]") as XmlElement;
QuizDate.Text = XmlConvert.ToDateTime(nl.GetAttribute("QuizDate"), XmlDateTimeSerializationMode.Local).ToString("yyyy-MM-dd");
QuizExpiry.Text = nl.GetAttribute("QuizExpiry");
MedicExpiry.Text = nl.GetAttribute("MedicExpiry");
InVivoWbcExpiry.Text = nl.GetAttribute("InVivoWbcExpiry");
InVitroExpiry.Text = nl.GetAttribute("InVitroExpiry");
RFStart.Text = nl.GetAttribute("RFStart");
RFEnd.Text = nl.GetAttribute("RFEnd");
BadgeColor.Text = nl.GetAttribute("badgeColor");
QuizOK.Text = nl.GetAttribute("QuizOK").Equals("1") ? "OK" : "Niet ok";
MedicOK.Text = nl.GetAttribute("MedicOK").Equals("1") ? "OK" : "Niet ok";
bool BunkerReq = XmlConvert.ToBoolean(nl.GetAttribute("InVivoReq"));
int r = Grid.GetRow(InVivoWbcFreq);
RowDefinition rowDef = G1.RowDefinitions[r];
rowDef.Height = BunkerReq ? GridLength.Auto : glz;
InVivoWbcFreq.Text = nl.GetAttribute("InVivoWbcFreq");
InVivoOK.Text = nl.GetAttribute("InVivoOK");
bool LRMReq = XmlConvert.ToBoolean(nl.GetAttribute("InVitroReq"));
r = Grid.GetRow(InVitroFreq);
rowDef = G1.RowDefinitions[r];
rowDef.Height = LRMReq ? GridLength.Auto : glz;
InVitroFreq.Text = nl.GetAttribute("InVitroFreq");
InVitroOK.Text = nl.GetAttribute("InVitroOK");
VxExpiry.Text = nl.GetAttribute("VxExpiry");
VxColor.Text = nl.GetAttribute("VxColor");
} else
{
QuizDate.Text = string.Empty;
QuizExpiry.Text = string.Empty;
MedicExpiry.Text = string.Empty;
RFStart.Text = string.Empty;
RFEnd.Text = string.Empty;
BadgeColor.Text = string.Empty;
QuizOK.Text = string.Empty;
MedicOK.Text = string.Empty;
int r = Grid.GetRow(InVivoWbcFreq);
RowDefinition rowDef = G1.RowDefinitions[r];
rowDef.Height = glz;
r = Grid.GetRow(InVitroFreq);
rowDef = G1.RowDefinitions[r];
rowDef.Height = glz;
VxExpiry.Text = string.Empty;
VxColor.Text = string.Empty;
}
}
}
}
}

View file

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">>
<assemblyIdentity version="1.0.0.0" name="SCKCEN.HPH.eDosStation"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!--<requestedExecutionLevel level="asInvoker" uiAccess="false" />-->
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<!--<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />-->
</requestedPrivileges>
</security>
</trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- A list of the Windows versions that this application has been tested on
and is designed to work with. Uncomment the appropriate elements
and Windows will automatically select the most compatible environment. -->
<!-- Windows Vista -->
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
<!-- Windows 7 -->
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
<!-- Windows 8 -->
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
<!-- Windows 8.1 -->
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
<!-- Windows 10 -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
</application>
</compatibility>
<!-- Indicates that the application is DPI-aware and will not be automatically scaled by Windows at higher
DPIs. Windows Presentation Foundation (WPF) applications are automatically DPI-aware and do not need
to opt in. Windows Forms applications targeting .NET Framework 4.6 that opt into this setting, should
also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config. -->
<!--
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
</application>
-->
<!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
<asmv3:application>
<asmv3:windowsSettings xmlns:ws2="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
<ws2:longPathAware>true</ws2:longPathAware>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>

Some files were not shown because too many files have changed in this diff Show more