Compare commits
320 Commits
feature/en
...
develop
| Author | SHA1 | Date | |
|---|---|---|---|
| 4257fdbea0 | |||
| a3d6ed337a | |||
| 6375639387 | |||
| 9b45b902c7 | |||
| 4174ea9e65 | |||
| b1b01532ca | |||
| 5eb181de91 | |||
| 6076b2529e | |||
| 5ee7cf2f2a | |||
| be78399def | |||
| 3735735ef7 | |||
| 8bbf7e9cc9 | |||
| 83edca21de | |||
| 933a283a4b | |||
| b6c1de3817 | |||
| bdc7131a1e | |||
| 46ca051331 | |||
| 1d44b156f4 | |||
| eae9b42266 | |||
| 284d669dc7 | |||
| 731a7eff9c | |||
| 4b49c78166 | |||
| d649c4ac16 | |||
| e3b12ae531 | |||
| a0b72f63a8 | |||
| 310819a527 | |||
| 012cbc4d6d | |||
| fa460ec8e4 | |||
| ec81631bd8 | |||
| e7ca08c65d | |||
| 680ebcdf84 | |||
| e965bc6b89 | |||
| e96b03d595 | |||
| 6eb265ea55 | |||
| f58e9e7079 | |||
| 92998c2add | |||
| c1e450c18b | |||
| 8a836ed096 | |||
| cf81ec0225 | |||
| 43fc89c7d3 | |||
| 96ddbd5e0a | |||
| 3dd2439524 | |||
| 1b97c7836b | |||
| 0e65d37ef9 | |||
| 0e43233edc | |||
| c650c78d90 | |||
| dd11e46a18 | |||
| f5d473574e | |||
| 97859d3cc8 | |||
| dfa5b1cf33 | |||
| a434b419ad | |||
| 973b0c267c | |||
| 82c01c8936 | |||
| 1df95d2807 | |||
| 9ad543e705 | |||
| e620c2d0e5 | |||
| f833aab844 | |||
| 4eacf85d8d | |||
| ce97aeca27 | |||
| ad2f7afd16 | |||
| 494e377b98 | |||
| 9a4831283d | |||
| 0c9b38ddd9 | |||
| 54aa91afc1 | |||
| b979136467 | |||
| 85bfd8b434 | |||
| ffca8e5bdd | |||
| 4d65172fbf | |||
| 87f5e601a3 | |||
| 36a79fe2dd | |||
| 4d131f718f | |||
| 8bc2ae99a8 | |||
| 57ed0b5b19 | |||
| e2f7ef1486 | |||
| d1e2e67d5f | |||
| ef96795bbf | |||
| abc2afdc11 | |||
| 626b058119 | |||
| a4a74da6f9 | |||
| 37122c4144 | |||
| 37ee8e1edf | |||
| 8e5a5b2d62 | |||
| ba59b69f92 | |||
| 43df352318 | |||
| 1c5e938f9a | |||
| 2608b4fd5a | |||
| 9462920fce | |||
| e50d165dc3 | |||
| b7f0108f52 | |||
| d1c131c52b | |||
| 83d57328fc | |||
| c85291b179 | |||
| 78a3168d79 | |||
| 8029aeeac3 | |||
| bcee0383b7 | |||
| 6d0a258236 | |||
| c206226b3c | |||
| 11d6bedc71 | |||
| db92b35dec | |||
| 4f1e4fca12 | |||
| ef5cca3aab | |||
| d97692ff94 | |||
| afb33fd249 | |||
| 6b456fc4f4 | |||
| cabbdd88d6 | |||
| b29811e6d7 | |||
| 63aca94ec4 | |||
| a10e7178f2 | |||
| f53b37eb12 | |||
| 661768abdd | |||
| 2004362e1a | |||
| 071b0ff5ee | |||
| 7c8eed08bd | |||
| 006a253fd7 | |||
| 40b9fff121 | |||
| 082266f47c | |||
| f3e398e07d | |||
| c4006d0585 | |||
| 579e704a1b | |||
| 0d80f6e514 | |||
| b1051546b7 | |||
| daf20a49b3 | |||
| ebbcd1ad97 | |||
| 51d6aeee74 | |||
| ee1c17bb4f | |||
| e0e46b8613 | |||
| 3c3fa5e1bd | |||
| b2062c3227 | |||
| 2ce1d692d2 | |||
| c8e22c6511 | |||
| bdb50ea901 | |||
| c15fdb8ee2 | |||
| 6ee9293fc8 | |||
| b0b6cef327 | |||
| c5bfc505d8 | |||
| b552bf2dd0 | |||
| 14931ce2c3 | |||
| 8e1d41cc0d | |||
| 11b9b14fbd | |||
| 0dcae7cafe | |||
| 5e8f111997 | |||
| 06509767e5 | |||
| ed666aff0c | |||
| 135542ed70 | |||
| 3c57936caa | |||
| 82a98ab9e6 | |||
| 2ebb3f1838 | |||
| 4b34ca9c31 | |||
| 3c1e35a012 | |||
| d299a286a9 | |||
| 74665defb3 | |||
| 2bb1dd03f4 | |||
| 472c1e1b81 | |||
| c636c9b931 | |||
| a3f2e4f7b3 | |||
| 56934660c1 | |||
| 7db2736e12 | |||
| 63a1436afc | |||
| 7e992576c8 | |||
| ff574c1a5c | |||
| b5db6cdb33 | |||
| 259fe00f43 | |||
| 7967b4336d | |||
| 5d02cf1cfa | |||
| 5085b82a13 | |||
| 50b65e6dea | |||
| c46881698f | |||
| a90aa4b1ab | |||
| d83413c623 | |||
| 36b596709a | |||
| 40908e1bb3 | |||
| c26c19d401 | |||
| bed3fc397a | |||
| c11e571473 | |||
| c4cd477002 | |||
| 28878447b8 | |||
| 47d6d4d073 | |||
| a59daa7a78 | |||
| 121ccaf295 | |||
| a4c340c2ec | |||
| 3743b55ef6 | |||
| f9f8980e09 | |||
| 1947c30010 | |||
| e0ca7a9074 | |||
| d4db41de2c | |||
| fadc975b83 | |||
| f6d74e87db | |||
| ee6658bafd | |||
| 703986bbbc | |||
| 9d4eea244a | |||
| c7e502d658 | |||
| 7950d16f2b | |||
| cb1ff8a533 | |||
| 0d0cbe1949 | |||
| a695da8b4e | |||
| 5ac41ec075 | |||
| 23ce2b9088 | |||
| cdeae588be | |||
| 7d4ec5de59 | |||
| d9f5c37482 | |||
| 1454f80191 | |||
| 8482ebfd12 | |||
| b89e543e63 | |||
| f0ef7ee650 | |||
| 7efa78f29e | |||
| b2af44895b | |||
| 0adc7ab5c4 | |||
| bacc1f0685 | |||
| 858fc7f7b0 | |||
| e36804e735 | |||
| c5411570e4 | |||
| 2b9c6f445b | |||
| ffc92bbfc6 | |||
| 7412f61ef9 | |||
| 6c43b17d53 | |||
| 8e6d9aa0c0 | |||
| 5a7346de43 | |||
| f9ddd2c48e | |||
| 932be48c24 | |||
| a974cf79a7 | |||
| 7d46f926cb | |||
| a00cb9a791 | |||
| 8ea5efe7cc | |||
| c1c236d825 | |||
| ff4fb86e78 | |||
| ed8d6adef6 | |||
| 0fa6e13690 | |||
| c22e9d8edd | |||
| a8c8ce080e | |||
| c70e4700c3 | |||
| da5ebaf226 | |||
| cacf9b6b1f | |||
| 332780e6eb | |||
| ab04e3ce58 | |||
| b123ecdae1 | |||
| e8b9ed80dc | |||
| 5e85294375 | |||
| 7232a455a6 | |||
| a292caa666 | |||
| c3b839635b | |||
| 1e0dbb8c8c | |||
| fff9d05290 | |||
| eafc5f3b81 | |||
| 51ad5ab3ae | |||
| f4d2ba6291 | |||
| 51839b1748 | |||
| 0b677f36cc | |||
| 73da72ad8a | |||
| a6831bc816 | |||
| 805ef43551 | |||
| 8249c8f01d | |||
| b040531ec8 | |||
| 8884eab404 | |||
| ea31386310 | |||
| 1643a22277 | |||
| 0709ee53b7 | |||
| bc47aee394 | |||
| 05ea4b5783 | |||
| f4fd9595a1 | |||
| c1b7bce386 | |||
| d596f1f7fb | |||
| 6e8fdb0d35 | |||
| 73019a996d | |||
| 68b52f0296 | |||
| 771032b137 | |||
| 3af6bda7e5 | |||
| 29cead2389 | |||
| 5eb9e1e170 | |||
| c83146c9f4 | |||
| a36d0dd048 | |||
| ab2dde2f72 | |||
| 59e51cd586 | |||
| 1da414a782 | |||
| 12e65a27e4 | |||
| ef65f2545f | |||
| b7ce7aea90 | |||
| 85cfe5155f | |||
| 04907e2104 | |||
| 0b2893ecde | |||
| 272dbcc1f3 | |||
| 1ccb063ac7 | |||
| 144c38661d | |||
| 2fe98ca6ae | |||
| 1913328577 | |||
| 21dddc9990 | |||
| 6df2c0224d | |||
| a89ef42258 | |||
| 939b7fd23e | |||
| 5aec63ba4f | |||
| 545eb6d6f9 | |||
| 07215858fe | |||
| 1f7ada5c58 | |||
| 8c38001e42 | |||
| d37a92be6f | |||
| de8b48feb7 | |||
| 2058161c79 | |||
| f6316e52dc | |||
| 78bc71d2ca | |||
| 42b09532da | |||
| 172f64d68e | |||
| c7cc69126c | |||
| 9f6a342c20 | |||
| 5694a3bf89 | |||
| 0ad92218c2 | |||
| fda2da13d8 | |||
| 588385fc14 | |||
| 17ea1f080c | |||
| 9ffbd23cb7 | |||
| c97b9a72f5 | |||
| ae0f6cae51 | |||
| 3010d783f1 | |||
| 66c96daa92 | |||
| 6205efc7a2 | |||
| 8285519e3f | |||
| 78a72caffc | |||
| 882861a328 | |||
| 1bbccadd17 | |||
| 1555e40ad1 | |||
| 3ef5a35176 | |||
| 084f4de514 |
@ -1,20 +1,8 @@
|
|||||||
// Copyright (c) 2017 Informatibüro Daniel Schick
|
// Copyright (c) 2017 Informatibüro Daniel Schick
|
||||||
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;
|
|
||||||
|
|
||||||
using bsmd.database;
|
using bsmd.database;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Input;
|
||||||
|
|
||||||
namespace ENI2
|
namespace ENI2
|
||||||
{
|
{
|
||||||
@ -43,10 +31,9 @@ namespace ENI2
|
|||||||
{
|
{
|
||||||
DataGrid grid = sender as DataGrid;
|
DataGrid grid = sender as DataGrid;
|
||||||
if(grid?.SelectedItems?.Count == 1)
|
if(grid?.SelectedItems?.Count == 1)
|
||||||
{
|
{
|
||||||
DataGridRow dgr = grid.ItemContainerGenerator.ContainerFromItem(grid.SelectedItem) as DataGridRow;
|
MessageCore selectedCore = grid.SelectedItem as MessageCore;
|
||||||
MessageCore selectedCore = grid.SelectedItem as MessageCore;
|
this.DisplayCore(selectedCore);
|
||||||
this.DisplayCore(selectedCore);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -63,7 +50,7 @@ namespace ENI2
|
|||||||
{
|
{
|
||||||
if((this.MessageCoreSelected != null) && (aMessageCore != null))
|
if((this.MessageCoreSelected != null) && (aMessageCore != null))
|
||||||
{
|
{
|
||||||
this.MessageCoreSelected(aMessageCore);
|
this.MessageCoreSelected(aMessageCore, DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].ShipcallDisplayMode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,18 +1,18 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!--
|
<!--
|
||||||
(c) 2017-present Informatikbüro Daniel Schick
|
(c) 2017-present Informatikbüro Daniel Schick
|
||||||
-->
|
-->
|
||||||
<configuration>
|
<configuration>
|
||||||
<configSections>
|
<configSections>
|
||||||
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<section name="ENI2.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
|
<section name="ENI2.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
|
||||||
</sectionGroup>
|
</sectionGroup>
|
||||||
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<section name="ENI2.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
|
<section name="ENI2.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
|
||||||
</sectionGroup>
|
</sectionGroup>
|
||||||
</configSections>
|
</configSections>
|
||||||
<startup>
|
<startup>
|
||||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
|
||||||
</startup>
|
</startup>
|
||||||
<applicationSettings>
|
<applicationSettings>
|
||||||
<ENI2.Properties.Settings>
|
<ENI2.Properties.Settings>
|
||||||
@ -26,28 +26,103 @@
|
|||||||
<value>1000</value>
|
<value>1000</value>
|
||||||
</setting>
|
</setting>
|
||||||
<setting name="LockingServerAddress" serializeAs="String">
|
<setting name="LockingServerAddress" serializeAs="String">
|
||||||
<value>http://192.168.2.24/LockingService/LockingService.svc</value>
|
<value>http://192.168.2.24/LockingService/LockingService.svc</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="ReportAuthor" serializeAs="String">
|
||||||
|
<value>BSMD ReportGenerator</value>
|
||||||
</setting>
|
</setting>
|
||||||
<setting name="ConnectionString" serializeAs="String">
|
<setting name="ConnectionString" serializeAs="String">
|
||||||
<value>Initial Catalog=nswtest;Data Source=192.168.2.24\SQLEXPRESS;Uid=dfuser;pwd=dfpasswd;Persist Security Info=False;Connection Reset=false</value>
|
<value>Initial Catalog=nswtest;Data Source=192.168.2.24\SQLEXPRESS;Uid=dfuser;pwd=dfpasswd;Persist Security Info=False;Connection Reset=false</value>
|
||||||
</setting>
|
</setting>
|
||||||
</ENI2.Properties.Settings>
|
</ENI2.Properties.Settings>
|
||||||
</applicationSettings>
|
</applicationSettings>
|
||||||
<userSettings>
|
<userSettings>
|
||||||
<ENI2.Properties.Settings>
|
<ENI2.Properties.Settings>
|
||||||
<setting name="MainWindowPlacement" serializeAs="String">
|
<setting name="MainWindowPlacement" serializeAs="String">
|
||||||
<value/>
|
<value />
|
||||||
|
</setting>
|
||||||
|
<setting name="Width" serializeAs="String">
|
||||||
|
<value>825</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="Height" serializeAs="String">
|
||||||
|
<value>450</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="W1Left" serializeAs="String">
|
||||||
|
<value>0</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="W1Top" serializeAs="String">
|
||||||
|
<value>0</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="W2Left" serializeAs="String">
|
||||||
|
<value>0</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="W2Top" serializeAs="String">
|
||||||
|
<value>0</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="W3Left" serializeAs="String">
|
||||||
|
<value>0</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="W3Top" serializeAs="String">
|
||||||
|
<value>0</value>
|
||||||
</setting>
|
</setting>
|
||||||
</ENI2.Properties.Settings>
|
</ENI2.Properties.Settings>
|
||||||
</userSettings>
|
</userSettings>
|
||||||
<system.serviceModel>
|
<system.serviceModel>
|
||||||
<bindings>
|
<bindings>
|
||||||
<basicHttpBinding>
|
<basicHttpBinding>
|
||||||
<binding name="BasicHttpBinding_IService" maxReceivedMessageSize="2147483647"/>
|
<binding name="BasicHttpBinding_IService" maxReceivedMessageSize="2147483647" />
|
||||||
</basicHttpBinding>
|
</basicHttpBinding>
|
||||||
</bindings>
|
</bindings>
|
||||||
<client>
|
<client>
|
||||||
<endpoint address="http://localhost:11651/LockingService.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService" contract="LockingServiceReference.IService" name="BasicHttpBinding_IService"/>
|
<endpoint address="http://localhost:11651/LockingService.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService" contract="LockingServiceReference.IService" name="BasicHttpBinding_IService" />
|
||||||
</client>
|
</client>
|
||||||
</system.serviceModel>
|
</system.serviceModel>
|
||||||
|
<runtime>
|
||||||
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.3" newVersion="9.0.0.3" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.9" newVersion="9.0.0.9" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-6.0.3.0" newVersion="6.0.3.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-4.0.5.0" newVersion="4.0.5.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-4.2.4.0" newVersion="4.2.4.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.Options" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-6.0.0.1" newVersion="6.0.0.1" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-6.0.0.2" newVersion="6.0.0.2" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.3" newVersion="9.0.0.3" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Extensions.Primitives" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.3" newVersion="9.0.0.3" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Security.Cryptography.Pkcs" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-9.0.0.9" newVersion="9.0.0.9" />
|
||||||
|
</dependentAssembly>
|
||||||
|
</assemblyBinding>
|
||||||
|
</runtime>
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|||||||
@ -6,6 +6,8 @@ using System.Windows;
|
|||||||
using System.Windows.Markup;
|
using System.Windows.Markup;
|
||||||
|
|
||||||
using bsmd.database;
|
using bsmd.database;
|
||||||
|
using log4net;
|
||||||
|
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
using System;
|
using System;
|
||||||
@ -13,13 +15,16 @@ using System.Net;
|
|||||||
using ENI2.LockingServiceReference;
|
using ENI2.LockingServiceReference;
|
||||||
using ENI2.Util;
|
using ENI2.Util;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.Office.Interop.Excel;
|
||||||
|
using System.Drawing.Drawing2D;
|
||||||
|
|
||||||
namespace ENI2
|
namespace ENI2
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Interaction logic for App.xaml
|
/// Interaction logic for App.xaml
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class App : Application
|
public partial class App : System.Windows.Application
|
||||||
{
|
{
|
||||||
// "global" statics, da gibt es sicher noch einen eleganteren Weg..
|
// "global" statics, da gibt es sicher noch einen eleganteren Weg..
|
||||||
private static ServiceClient _lockingServiceClient = null;
|
private static ServiceClient _lockingServiceClient = null;
|
||||||
@ -30,6 +35,8 @@ namespace ENI2
|
|||||||
private ManualResetEvent ResetSplashCreated;
|
private ManualResetEvent ResetSplashCreated;
|
||||||
private Thread _splashThread;
|
private Thread _splashThread;
|
||||||
|
|
||||||
|
private readonly ILog _log = LogManager.GetLogger(typeof(App).Name);
|
||||||
|
|
||||||
public App() : base()
|
public App() : base()
|
||||||
{
|
{
|
||||||
this.Dispatcher.UnhandledException += Dispatcher_UnhandledException;
|
this.Dispatcher.UnhandledException += Dispatcher_UnhandledException;
|
||||||
@ -68,11 +75,10 @@ namespace ENI2
|
|||||||
// initialize static / localized lookups from sqlite database
|
// initialize static / localized lookups from sqlite database
|
||||||
|
|
||||||
string langKey = CultureInfo.CurrentCulture.TwoLetterISOLanguageName;
|
string langKey = CultureInfo.CurrentCulture.TwoLetterISOLanguageName;
|
||||||
|
|
||||||
Dictionary<int, string> cargoHandlingDict = LocalizedLookup.getLADGCargoHandlingStrings(langKey);
|
Dictionary<int, string> cargoHandlingDict = LocalizedLookup.getLADGCargoHandlingStrings(langKey);
|
||||||
foreach (int key in cargoHandlingDict.Keys)
|
foreach (int key in cargoHandlingDict.Keys)
|
||||||
LADG.CargoHandlingDict.Add(key, cargoHandlingDict[key]);
|
LADG.CargoHandlingDict.Add(key, cargoHandlingDict[key]);
|
||||||
|
LADG.MVSHLocodes.AddRange(LocalizedLookup.getMVSHLocodes());
|
||||||
EventManager.RegisterClassHandler(typeof(DatePicker), DatePicker.PreviewKeyDownEvent, new KeyEventHandler(this.DatePicker_PreviewKeyDown));
|
EventManager.RegisterClassHandler(typeof(DatePicker), DatePicker.PreviewKeyDownEvent, new KeyEventHandler(this.DatePicker_PreviewKeyDown));
|
||||||
CREW.NationalityDict = LocalizedLookup.getNationalities();
|
CREW.NationalityDict = LocalizedLookup.getNationalities();
|
||||||
STAT.VesselTypeDict = LocalizedLookup.getVesselTypes();
|
STAT.VesselTypeDict = LocalizedLookup.getVesselTypes();
|
||||||
@ -82,6 +88,9 @@ namespace ENI2
|
|||||||
LADG.CargoCodesNST = LocalizedLookup.getCargoCodesNST();
|
LADG.CargoCodesNST = LocalizedLookup.getCargoCodesNST();
|
||||||
LADG.CargoCodesNST3 = LocalizedLookup.getCargoCodesNST3();
|
LADG.CargoCodesNST3 = LocalizedLookup.getCargoCodesNST3();
|
||||||
|
|
||||||
|
// Load import value mappings
|
||||||
|
Task.Run(async () => await ValueMapping.LoadDicts());
|
||||||
|
|
||||||
// Preload validation fields
|
// Preload validation fields
|
||||||
List<ValidationField> vFields = bsmd.database.ValidationRule.ValidationFields;
|
List<ValidationField> vFields = bsmd.database.ValidationRule.ValidationFields;
|
||||||
RuleEngine.RegisterLocodeChecker(Util.GlobalStructures.IsValidLocode);
|
RuleEngine.RegisterLocodeChecker(Util.GlobalStructures.IsValidLocode);
|
||||||
@ -150,9 +159,9 @@ namespace ENI2
|
|||||||
private void Dispatcher_UnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
|
private void Dispatcher_UnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
|
||||||
{
|
{
|
||||||
string errorMessage = string.Format("An unhandled exception occurred: {0}\r\n{1}", e.Exception.Message, e.Exception.StackTrace);
|
string errorMessage = string.Format("An unhandled exception occurred: {0}\r\n{1}", e.Exception.Message, e.Exception.StackTrace);
|
||||||
MessageBox.Show(errorMessage, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
|
Xceed.Wpf.Toolkit.MessageBox.Show(errorMessage, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
// TODO: Dieser Fehler muss irgendwohin gesendet / gespeichert werden
|
|
||||||
e.Handled = true;
|
e.Handled = true;
|
||||||
|
_log.Error(errorMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DatePicker_PreviewKeyDown(object sender, KeyEventArgs e)
|
private void DatePicker_PreviewKeyDown(object sender, KeyEventArgs e)
|
||||||
|
|||||||
@ -56,6 +56,33 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
</ControlTemplate>
|
</ControlTemplate>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Validation Error Template for a DataGrid Row -->
|
||||||
|
|
||||||
|
<Style TargetType="{x:Type DataGridRow}">
|
||||||
|
<Setter Property="ValidationErrorTemplate">
|
||||||
|
<Setter.Value>
|
||||||
|
<ControlTemplate>
|
||||||
|
<Grid Margin="0,-2,0,-2"
|
||||||
|
ToolTip="{Binding RelativeSource={RelativeSource
|
||||||
|
FindAncestor, AncestorType={x:Type DataGridRow}},
|
||||||
|
Path=(Validation.Errors)[0].ErrorContent}">
|
||||||
|
<Ellipse StrokeThickness="0" Fill="Red"
|
||||||
|
Width="{TemplateBinding FontSize}"
|
||||||
|
Height="{TemplateBinding FontSize}" />
|
||||||
|
<TextBlock Text="!" FontSize="{TemplateBinding FontSize}"
|
||||||
|
FontWeight="Bold" Foreground="White"
|
||||||
|
HorizontalAlignment="Center" />
|
||||||
|
</Grid>
|
||||||
|
</ControlTemplate>
|
||||||
|
</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
</Style>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<Style TargetType="{x:Type ToolTip}" >
|
<Style TargetType="{x:Type ToolTip}" >
|
||||||
|
|
||||||
<Setter Property="OverridesDefaultStyle" Value="true" />
|
<Setter Property="OverridesDefaultStyle" Value="true" />
|
||||||
|
|||||||
@ -8,6 +8,7 @@ using System.Windows;
|
|||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using System.Windows.Media.Animation;
|
using System.Windows.Media.Animation;
|
||||||
|
using System.Windows.Threading;
|
||||||
|
|
||||||
namespace ENI2.Controls
|
namespace ENI2.Controls
|
||||||
{
|
{
|
||||||
@ -161,8 +162,9 @@ namespace ENI2.Controls
|
|||||||
}
|
}
|
||||||
if (!abort)
|
if (!abort)
|
||||||
{
|
{
|
||||||
var tabControl = Parent as ItemsControl;
|
var tabControl = Parent as TabControl;
|
||||||
tabControl.Items.Remove(this);
|
tabControl.SelectedItem = null;
|
||||||
|
_ = Dispatcher.BeginInvoke(new Action(() => tabControl.Items.Remove(this)), DispatcherPriority.Background);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
dockPanel.Children.Add(closeButton);
|
dockPanel.Children.Add(closeButton);
|
||||||
|
|||||||
@ -56,6 +56,7 @@ namespace ENI2.Controls
|
|||||||
// das hier bildet 1:1 das Kontext-Menü des ANSW ab
|
// das hier bildet 1:1 das Kontext-Menü des ANSW ab
|
||||||
|
|
||||||
public event Action<DatabaseEntity> EditRequested;
|
public event Action<DatabaseEntity> EditRequested;
|
||||||
|
public event Action<List<DatabaseEntity>> MultiEditRequested;
|
||||||
public event Action<DatabaseEntity> DeleteRequested;
|
public event Action<DatabaseEntity> DeleteRequested;
|
||||||
public event Action CreateRequested;
|
public event Action CreateRequested;
|
||||||
public event Action RefreshGrid;
|
public event Action RefreshGrid;
|
||||||
@ -203,9 +204,17 @@ namespace ENI2.Controls
|
|||||||
{
|
{
|
||||||
if((this.SelectedItems != null) && (this.SelectedItems.Count == 1) && !this.IsReadOnly)
|
if((this.SelectedItems != null) && (this.SelectedItems.Count == 1) && !this.IsReadOnly)
|
||||||
{
|
{
|
||||||
if (this.SelectedItems[0] is DatabaseEntity selectedEntity)
|
if (this.SelectedItems[0] is DatabaseEntity selectedEntity)
|
||||||
this.EditRequested?.Invoke(selectedEntity);
|
this.EditRequested?.Invoke(selectedEntity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if((this.SelectedItems != null) && (this.SelectedItems.Count > 1) && !this.IsReadOnly)
|
||||||
|
{
|
||||||
|
List<DatabaseEntity> databaseEntities = new List<DatabaseEntity>();
|
||||||
|
foreach(DatabaseEntity databaseEntity in this.SelectedItems)
|
||||||
|
databaseEntities.Add(databaseEntity);
|
||||||
|
this.MultiEditRequested?.Invoke(databaseEntities);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void printItem(object sender, RoutedEventArgs e)
|
protected void printItem(object sender, RoutedEventArgs e)
|
||||||
|
|||||||
113
ENI2/Controls/EasyPeasyControl.xaml
Normal file
113
ENI2/Controls/EasyPeasyControl.xaml
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
<UserControl x:Class="ENI2.Controls.EasyPeasyControl"
|
||||||
|
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:ENI2.Controls"
|
||||||
|
mc:Ignorable="d"
|
||||||
|
d:DesignHeight="650" d:DesignWidth="1024" Loaded="UserControl_Loaded" Unloaded="UserControl_Unloaded">
|
||||||
|
|
||||||
|
|
||||||
|
<DockPanel>
|
||||||
|
<!-- Header with logo -->
|
||||||
|
<Border DockPanel.Dock="Top" Padding="10" Background="#FFFDF6">
|
||||||
|
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" >
|
||||||
|
<!-- Embed SVG via Image (optional): place your SVG as a DrawingImage in resources, or replace with PNG -->
|
||||||
|
<TextBlock Text="🍋 easy-peasy" FontSize="20" FontWeight="Bold" Margin="0,0,16,0"/>
|
||||||
|
<TextBlock Text="Edit • Paste • Export XML" VerticalAlignment="Center"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
||||||
|
<StackPanel Margin="12" Orientation="Vertical" >
|
||||||
|
<!-- Top-level fields -->
|
||||||
|
<UniformGrid Columns="4" Rows="3" Margin="0,0,0,12" Height="84">
|
||||||
|
<TextBlock Text="Art der Identification (Vertreter)" Margin="0,0,4,0" VerticalAlignment="Center" TextAlignment="Right"/>
|
||||||
|
<TextBox Text="{Binding DelegateIdentificationType, UpdateSourceTrigger=PropertyChanged}" Margin="2" VerticalContentAlignment="Center"/>
|
||||||
|
<TextBlock Text="Art der Identifikation (Kunde)" VerticalAlignment="Center" Margin="0,0,4,0" TextAlignment="Right" />
|
||||||
|
<TextBox Text="{Binding TraderIdentificationType, UpdateSourceTrigger=PropertyChanged}" Margin="2" VerticalContentAlignment="Center"/>
|
||||||
|
|
||||||
|
<TextBlock Text="LRN" TextAlignment="Right" Margin="0,0,4,0" VerticalAlignment="Center"/>
|
||||||
|
<TextBox Text="{Binding LRN, UpdateSourceTrigger=PropertyChanged}" Margin="2" VerticalContentAlignment="Center"/>
|
||||||
|
<TextBlock Text="Identifikationsnummer (Kunde)" Margin="0,0,4,0" VerticalAlignment="Center" TextAlignment="Right" />
|
||||||
|
<TextBox Text="{Binding TraderIdentificationNumber, UpdateSourceTrigger=PropertyChanged}" Margin="2" VerticalContentAlignment="Center"/>
|
||||||
|
|
||||||
|
<TextBlock Text="Land" TextAlignment="Right" Margin="0,0,4,0" VerticalAlignment="Center"/>
|
||||||
|
<TextBox Text="{Binding Country, UpdateSourceTrigger=PropertyChanged}" Margin="2" VerticalContentAlignment="Center"/>
|
||||||
|
<TextBlock Text="Identifikationsnummer (Vertreter)" Margin="0,0,4,0" VerticalAlignment="Center" TextAlignment="Right"/>
|
||||||
|
<TextBox Text="{Binding DelegateIdentificationNumber, UpdateSourceTrigger=PropertyChanged}" Margin="2" VerticalContentAlignment="Center"/>
|
||||||
|
</UniformGrid>
|
||||||
|
|
||||||
|
<!-- ProofInformation -->
|
||||||
|
<GroupBox Header="Kennung des Antrags auf Nachweis TZ2L(F)">
|
||||||
|
<StackPanel Margin="8">
|
||||||
|
<UniformGrid Columns="4" Rows="4" Margin="0,0,0,12" >
|
||||||
|
<TextBlock Text="Zuständige Zollstelle" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,4,0"/>
|
||||||
|
<TextBox Text="{Binding ProofInformationT2LT2LF.CompetentCustomsOffice, UpdateSourceTrigger=PropertyChanged}" Margin="2" VerticalContentAlignment="Center"/>
|
||||||
|
<TextBlock Text="Art der Anmeldung" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,4,0"/>
|
||||||
|
<TextBox Text="{Binding ProofInformationT2LT2LF.DeclarationType, UpdateSourceTrigger=PropertyChanged}" Margin="2" VerticalContentAlignment="Center"/>
|
||||||
|
|
||||||
|
<TextBlock TextWrapping="Wrap" Text="Datum Anmeldung
|
||||||
|
(yyyy-MM-ddTHH:mm:ss)" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,4,0"/>
|
||||||
|
<TextBox Text="{Binding ProofInformationT2LT2LF.DeclarationDate, StringFormat={}{0:yyyy-MM-ddTHH:mm:ss}, UpdateSourceTrigger=PropertyChanged}" Margin="2" VerticalContentAlignment="Center" />
|
||||||
|
<TextBlock Text="Gesamtrohmasse (kg)" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,4,0"/>
|
||||||
|
<TextBox x:Name="textBoxTotalGrossMass" Text="{Binding ProofInformationT2LT2LF.TotalGrossMassKg, UpdateSourceTrigger=PropertyChanged}" Margin="2" VerticalContentAlignment="Center"/>
|
||||||
|
|
||||||
|
<TextBlock TextWrapping="Wrap" Text="Antrag auf Gültigkeitsdauer des Nachweises (in Tagen)" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,4,0"/>
|
||||||
|
<TextBox Text="{Binding ProofInformationT2LT2LF.RequestedValidityOfTheProof.NumberOfDays, UpdateSourceTrigger=PropertyChanged}" Margin="2" VerticalContentAlignment="Center"/>
|
||||||
|
<TextBlock Text="Art des Antrags" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,4,0"/>
|
||||||
|
<TextBox Text="{Binding ProofInformationT2LT2LF.RequestType, UpdateSourceTrigger=PropertyChanged}" Margin="2" VerticalContentAlignment="Center"/>
|
||||||
|
</UniformGrid>
|
||||||
|
|
||||||
|
<GroupBox Header="Warenort">
|
||||||
|
<UniformGrid Columns="6" Margin="8" Height="28">
|
||||||
|
<TextBlock Text="Art des Ortes" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,4,0"/>
|
||||||
|
<TextBox Text="{Binding ProofInformationT2LT2LF.GoodsShipmentForT2LT2LF.LocationOfGoods.TypeOfLocation}" Margin="2" VerticalContentAlignment="Center"/>
|
||||||
|
<TextBlock Text="Art der Ortsbestimmung" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,4,0"/>
|
||||||
|
<TextBox Text="{Binding ProofInformationT2LT2LF.GoodsShipmentForT2LT2LF.LocationOfGoods.QualifierOfIdentification}" Margin="2" VerticalContentAlignment="Center"/>
|
||||||
|
<TextBlock Text="UNLocode" TextAlignment="Right" VerticalAlignment="Center" Margin="0,0,4,0"/>
|
||||||
|
<TextBox Text="{Binding ProofInformationT2LT2LF.GoodsShipmentForT2LT2LF.LocationOfGoods.UNLocode}" Margin="2" VerticalContentAlignment="Center"/>
|
||||||
|
</UniformGrid>
|
||||||
|
</GroupBox>
|
||||||
|
|
||||||
|
<CheckBox Content="In Containern beförderte Waren" Margin="8"
|
||||||
|
IsChecked="{Binding ProofInformationT2LT2LF.GoodsShipmentForT2LT2LF.ContainerIndication}"/>
|
||||||
|
|
||||||
|
<!-- Goods Items grid (paste target) -->
|
||||||
|
<TextBlock Text="Warenpositionen (Paste tab/CSV with columns: HS, Item#, Description, Gross, Net, Pkgs, Type, Marks)" Margin="4,12,0,4"/>
|
||||||
|
<DataGrid ItemsSource="{Binding ProofInformationT2LT2LF.GoodsShipmentForT2LT2LF.GoodsItemsForT2LT2LF}"
|
||||||
|
AutoGenerateColumns="False" SelectionMode="Extended" x:Name="dataGridGoodsItems" CanUserAddRows="False"
|
||||||
|
PreviewKeyDown="DataGrid_PreviewKeyDown" Focusable="True" MinHeight="80" IsTabStop="True" MaxHeight="320">
|
||||||
|
<DataGrid.Columns>
|
||||||
|
<DataGridTextColumn Header="HS Code" Binding="{Binding Commodity.HarmonizedSystemSubHeadingCode}"/>
|
||||||
|
<DataGridTextColumn Header="Item #" Binding="{Binding GoodsItemNumber}"/>
|
||||||
|
<DataGridTextColumn Header="Description" Binding="{Binding DescriptionOfGoods}" Width="2*"/>
|
||||||
|
<DataGridTextColumn Header="Gross" Binding="{Binding GoodsMeasure.GrossMass}"/>
|
||||||
|
<DataGridTextColumn Header="Net" Binding="{Binding GoodsMeasure.NetMass}"/>
|
||||||
|
<DataGridTextColumn Header="Pkgs" Binding="{Binding Packaging.NumberOfPackages}"/>
|
||||||
|
<DataGridTextColumn Header="Type" Binding="{Binding Packaging.TypeOfPackages}"/>
|
||||||
|
<DataGridTextColumn Header="Marks" Binding="{Binding Packaging.ShippingMarks}" Width="*"/>
|
||||||
|
</DataGrid.Columns>
|
||||||
|
</DataGrid>
|
||||||
|
|
||||||
|
<GroupBox Header="Dokumente" Margin="0,12,0,0">
|
||||||
|
<UniformGrid Columns="4" Margin="8" Height="28">
|
||||||
|
<TextBlock Text="Art des Dokuments" Margin="0,0,4,0" VerticalAlignment="Center" TextAlignment="Right"/>
|
||||||
|
<TextBox Text="{Binding ProofInformationT2LT2LF.GoodsShipmentForT2LT2LF.TransportDocuments.Type}" Margin="2" VerticalContentAlignment="Center"/>
|
||||||
|
<TextBlock Text="Referenznummer" Margin="0,0,4,0" VerticalAlignment="Center" TextAlignment="Right"/>
|
||||||
|
<TextBox Text="{Binding ProofInformationT2LT2LF.GoodsShipmentForT2LT2LF.TransportDocuments.ReferenceNumber}" Margin="2" VerticalContentAlignment="Center" />
|
||||||
|
</UniformGrid>
|
||||||
|
</GroupBox>
|
||||||
|
</StackPanel>
|
||||||
|
</GroupBox>
|
||||||
|
|
||||||
|
<!-- Actions -->
|
||||||
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,16,0,0">
|
||||||
|
<Button x:Name="buttonImport" Content="Import" Width="100" Margin="0,0,8,0" Click="buttonImport_Click" />
|
||||||
|
<Button x:Name="buttonClear" Content="Clear" Width="100" Margin="0,0,8,0" Click="buttonClear_Click"/>
|
||||||
|
<Button x:Name="buttonExport" Content="Export" Width="120" Click="buttonExport_Click"/>
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</ScrollViewer>
|
||||||
|
</DockPanel>
|
||||||
|
</UserControl>
|
||||||
506
ENI2/Controls/EasyPeasyControl.xaml.cs
Normal file
506
ENI2/Controls/EasyPeasyControl.xaml.cs
Normal file
@ -0,0 +1,506 @@
|
|||||||
|
// Copyright (c) 2017- schick Informatik
|
||||||
|
// Description: Display dialog for customs XML data upload app
|
||||||
|
//
|
||||||
|
|
||||||
|
using bsmd.database.EasyPeasy;
|
||||||
|
using ENI2.Util;
|
||||||
|
using Microsoft.Win32;
|
||||||
|
using System;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.Collections.Specialized;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Data;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
using System.Xml;
|
||||||
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
|
namespace ENI2.Controls
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Interaction logic for EasyPeasyControl.xaml
|
||||||
|
/// </summary>
|
||||||
|
public partial class EasyPeasyControl : UserControl
|
||||||
|
{
|
||||||
|
|
||||||
|
private ProofRequest _vm;
|
||||||
|
|
||||||
|
#region Construction
|
||||||
|
|
||||||
|
public EasyPeasyControl()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
|
this.dataGridGoodsItems.ContextMenu = new ContextMenu();
|
||||||
|
|
||||||
|
MenuItem addItem = new MenuItem();
|
||||||
|
addItem.Header = Properties.Resources.textAdd;
|
||||||
|
addItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/add.png")) };
|
||||||
|
addItem.Click += AddItem_Click;
|
||||||
|
this.dataGridGoodsItems.ContextMenu.Items.Add(addItem);
|
||||||
|
|
||||||
|
MenuItem deleteItem = new MenuItem();
|
||||||
|
deleteItem.Header = Properties.Resources.textDelete;
|
||||||
|
deleteItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/delete.png")) };
|
||||||
|
deleteItem.Click += DeleteItem_Click;
|
||||||
|
this.dataGridGoodsItems.ContextMenu.Items.Add(deleteItem);
|
||||||
|
|
||||||
|
// Add separator and paste option
|
||||||
|
this.dataGridGoodsItems.ContextMenu.Items.Add(new Separator());
|
||||||
|
|
||||||
|
MenuItem pasteItem = new MenuItem();
|
||||||
|
pasteItem.Header = "Paste";
|
||||||
|
pasteItem.Click += (s, e) => HandlePasteOperation();
|
||||||
|
this.dataGridGoodsItems.ContextMenu.Items.Add(pasteItem);
|
||||||
|
|
||||||
|
// Add command bindings for proper keyboard handling
|
||||||
|
this.dataGridGoodsItems.CommandBindings.Add(new CommandBinding(
|
||||||
|
ApplicationCommands.Paste,
|
||||||
|
(s, e) => HandlePasteOperation(),
|
||||||
|
(s, e) => e.CanExecute = Clipboard.ContainsText()));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
public void SaveState()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
EasyPeasyState.Save(_vm);
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
|
||||||
|
#region context menu event handler
|
||||||
|
|
||||||
|
private void AddItem_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (_vm?.ProofInformationT2LT2LF?.GoodsShipmentForT2LT2LF?.GoodsItemsForT2LT2LF == null) return;
|
||||||
|
var list = _vm.ProofInformationT2LT2LF.GoodsShipmentForT2LT2LF.GoodsItemsForT2LT2LF;
|
||||||
|
int nextItemNo = list.Any() ? list.Max(x => x.GoodsItemNumber) + 1 : 1;
|
||||||
|
var item = new GoodsItemForT2LT2LF
|
||||||
|
{
|
||||||
|
GoodsItemNumber = nextItemNo
|
||||||
|
};
|
||||||
|
list.Add(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DeleteItem_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
foreach(GoodsItemForT2LT2LF item in this.dataGridGoodsItems.SelectedItems.Cast<GoodsItemForT2LT2LF>().ToArray())
|
||||||
|
{
|
||||||
|
if (_vm?.ProofInformationT2LT2LF?.GoodsShipmentForT2LT2LF?.GoodsItemsForT2LT2LF == null) return;
|
||||||
|
var list = _vm.ProofInformationT2LT2LF.GoodsShipmentForT2LT2LF.GoodsItemsForT2LT2LF;
|
||||||
|
list.Remove(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region button event handler
|
||||||
|
|
||||||
|
private void buttonClear_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
CleanupAutoCalculation();
|
||||||
|
|
||||||
|
this._vm = EasyPeasyState.CreateDefault();
|
||||||
|
if (_vm.ProofInformationT2LT2LF?.GoodsShipmentForT2LT2LF?.GoodsItemsForT2LT2LF == null)
|
||||||
|
_vm.ProofInformationT2LT2LF.GoodsShipmentForT2LT2LF.GoodsItemsForT2LT2LF = new ObservableCollection<GoodsItemForT2LT2LF>();
|
||||||
|
|
||||||
|
_vm.ProofInformationT2LT2LF.DeclarationDate = DateTime.Now; // reset to today
|
||||||
|
_vm.ProofInformationT2LT2LF.RequestedValidityOfTheProof.NumberOfDays = 90; // default 90 days
|
||||||
|
|
||||||
|
this.DataContext = this._vm;
|
||||||
|
SetupAutoCalculation();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonExport_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
var dlg = new SaveFileDialog
|
||||||
|
{
|
||||||
|
FileName = "proofRequest.xml",
|
||||||
|
Filter = "XML file|*.xml",
|
||||||
|
OverwritePrompt = true
|
||||||
|
};
|
||||||
|
if (dlg.ShowDialog() == true)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var ser = new XmlSerializer(typeof(ProofRequest));
|
||||||
|
|
||||||
|
// Namespaces (if needed)
|
||||||
|
// var ns = new XmlSerializerNamespaces();
|
||||||
|
// ns.Add("xsd", "http://www.w3.org/2001/XMLSchema");
|
||||||
|
// ns.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
|
||||||
|
|
||||||
|
var settings = new XmlWriterSettings
|
||||||
|
{
|
||||||
|
Indent = true,
|
||||||
|
OmitXmlDeclaration = true
|
||||||
|
};
|
||||||
|
|
||||||
|
using (var fs = File.Create(dlg.FileName))
|
||||||
|
using (var xw = XmlWriter.Create(fs, settings))
|
||||||
|
{
|
||||||
|
ser.Serialize(xw, _vm); //, ns);
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageBox.Show("Exported successfully.", "easy-peasy", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show("Export failed:\n" + ex.Message, "easy-peasy", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonImport_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
OpenFileDialog ofd = new OpenFileDialog();
|
||||||
|
ofd.Filter = "XML file|*.xml";
|
||||||
|
ofd.RestoreDirectory = true;
|
||||||
|
ofd.Multiselect = false;
|
||||||
|
|
||||||
|
if (ofd.ShowDialog() == true)
|
||||||
|
{
|
||||||
|
using (var fs = File.OpenRead(ofd.FileName))
|
||||||
|
{
|
||||||
|
CleanupAutoCalculation();
|
||||||
|
var ser = new XmlSerializer(typeof(ProofRequest));
|
||||||
|
_vm = (ProofRequest)ser.Deserialize(fs);
|
||||||
|
// after loading/creating _vm
|
||||||
|
if (_vm.ProofInformationT2LT2LF?.GoodsShipmentForT2LT2LF?.GoodsItemsForT2LT2LF == null)
|
||||||
|
_vm.ProofInformationT2LT2LF.GoodsShipmentForT2LT2LF.GoodsItemsForT2LT2LF = new ObservableCollection<GoodsItemForT2LT2LF>();
|
||||||
|
|
||||||
|
_vm.ProofInformationT2LT2LF.DeclarationDate = DateTime.Now; // reset to today
|
||||||
|
if(_vm.ProofInformationT2LT2LF.RequestedValidityOfTheProof.NumberOfDays == 9)
|
||||||
|
_vm.ProofInformationT2LT2LF.RequestedValidityOfTheProof.NumberOfDays = 90; // default 90 days
|
||||||
|
|
||||||
|
this.DataContext = _vm;
|
||||||
|
SetupAutoCalculation();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region loaded/unloaded event handler
|
||||||
|
|
||||||
|
private void UserControl_Loaded(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
_vm = EasyPeasyState.LoadOrCreate();
|
||||||
|
if (_vm.ProofInformationT2LT2LF == null)
|
||||||
|
_vm.ProofInformationT2LT2LF = new ProofInformationT2LT2LF();
|
||||||
|
if (_vm.ProofInformationT2LT2LF.GoodsShipmentForT2LT2LF == null)
|
||||||
|
_vm.ProofInformationT2LT2LF.GoodsShipmentForT2LT2LF = new GoodsShipmentForT2LT2LF
|
||||||
|
{
|
||||||
|
LocationOfGoods = new LocationOfGoods(),
|
||||||
|
TransportDocuments = new TransportDocuments()
|
||||||
|
};
|
||||||
|
_vm.ProofInformationT2LT2LF.DeclarationDate = DateTime.Now; // reset to today
|
||||||
|
this.DataContext = _vm;
|
||||||
|
|
||||||
|
SetupAutoCalculation();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UserControl_Unloaded(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
CleanupAutoCalculation();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
EasyPeasyState.Save(_vm);
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region auto calculation total gross mass
|
||||||
|
|
||||||
|
private void SetupAutoCalculation()
|
||||||
|
{
|
||||||
|
if (_vm?.ProofInformationT2LT2LF?.GoodsShipmentForT2LT2LF?.GoodsItemsForT2LT2LF != null)
|
||||||
|
{
|
||||||
|
// Subscribe to collection changes (add/remove items)
|
||||||
|
_vm.ProofInformationT2LT2LF.GoodsShipmentForT2LT2LF.GoodsItemsForT2LT2LF.CollectionChanged += GoodsItems_CollectionChanged;
|
||||||
|
|
||||||
|
// Subscribe to DataGrid cell changes
|
||||||
|
dataGridGoodsItems.CellEditEnding += DataGridGoodsItems_CellEditEnding;
|
||||||
|
|
||||||
|
// Calculate initial total
|
||||||
|
CalculateTotalGrossMass();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CleanupAutoCalculation()
|
||||||
|
{
|
||||||
|
if (_vm?.ProofInformationT2LT2LF?.GoodsShipmentForT2LT2LF?.GoodsItemsForT2LT2LF != null)
|
||||||
|
{
|
||||||
|
// Unsubscribe from collection changes
|
||||||
|
_vm.ProofInformationT2LT2LF.GoodsShipmentForT2LT2LF.GoodsItemsForT2LT2LF.CollectionChanged -= GoodsItems_CollectionChanged;
|
||||||
|
dataGridGoodsItems.CellEditEnding -= DataGridGoodsItems_CellEditEnding;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DataGridGoodsItems_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
|
||||||
|
{
|
||||||
|
// Check if the edited column is GrossMass
|
||||||
|
if (e.Column.Header.ToString() == "Gross")
|
||||||
|
{
|
||||||
|
// Delay calculation to allow the binding to update
|
||||||
|
Dispatcher.BeginInvoke(new Action(() => {
|
||||||
|
CalculateTotalGrossMass();
|
||||||
|
}), System.Windows.Threading.DispatcherPriority.Background);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void GoodsItems_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
|
||||||
|
{
|
||||||
|
// Recalculate total after any collection change
|
||||||
|
CalculateTotalGrossMass();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CalculateTotalGrossMass()
|
||||||
|
{
|
||||||
|
if (_vm?.ProofInformationT2LT2LF?.GoodsShipmentForT2LT2LF?.GoodsItemsForT2LT2LF != null)
|
||||||
|
{
|
||||||
|
var total = _vm.ProofInformationT2LT2LF.GoodsShipmentForT2LT2LF.GoodsItemsForT2LT2LF
|
||||||
|
.Sum(item => item.GoodsMeasure?.GrossMass ?? 0m);
|
||||||
|
|
||||||
|
_vm.ProofInformationT2LT2LF.TotalGrossMassKg = total;
|
||||||
|
|
||||||
|
// Force UI update by refreshing the binding
|
||||||
|
var binding = BindingOperations.GetBindingExpression(
|
||||||
|
FindTotalGrossMassTextBox(), TextBox.TextProperty);
|
||||||
|
binding?.UpdateTarget();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Simple property changed notification helper
|
||||||
|
public event PropertyChangedEventHandler PropertyChanged;
|
||||||
|
protected virtual void OnPropertyChanged(string propertyName)
|
||||||
|
{
|
||||||
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
||||||
|
}
|
||||||
|
|
||||||
|
private TextBox FindTotalGrossMassTextBox()
|
||||||
|
{
|
||||||
|
// Find the TextBox that displays TotalGrossMassKg
|
||||||
|
return this.FindName("textBoxTotalGrossMass") as TextBox ??
|
||||||
|
this.GetTemplateChild("textBoxTotalGrossMass") as TextBox;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region cut & paste logic
|
||||||
|
|
||||||
|
private void HandlePasteOperation()
|
||||||
|
{
|
||||||
|
if (Clipboard.ContainsText())
|
||||||
|
{
|
||||||
|
var text = Clipboard.GetText();
|
||||||
|
if (!TryPaste_EspHsPkgsGross(text))
|
||||||
|
PasteGoodsItems(text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DataGrid_PreviewKeyDown(object sender, KeyEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Key == Key.V && (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
|
||||||
|
{
|
||||||
|
if (Clipboard.ContainsText())
|
||||||
|
{
|
||||||
|
var text = Clipboard.GetText();
|
||||||
|
|
||||||
|
if(!TryPaste_EspHsPkgsGross(text))
|
||||||
|
PasteGoodsItems(text);
|
||||||
|
e.Handled = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PasteGoodsItems(string text)
|
||||||
|
{
|
||||||
|
if (_vm?.ProofInformationT2LT2LF?.GoodsShipmentForT2LT2LF == null) return;
|
||||||
|
|
||||||
|
var lines = text.Replace("\r\n", "\n").Replace('\r', '\n')
|
||||||
|
.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
|
||||||
|
|
||||||
|
foreach (var line in lines)
|
||||||
|
{
|
||||||
|
// Split by tab first; if only one column, try CSV
|
||||||
|
var cells = line.Split('\t');
|
||||||
|
if (cells.Length == 1) cells = SplitCsv(line);
|
||||||
|
|
||||||
|
// Expected order: HS, Item#, Description, Gross, Net, Pkgs, Type, Marks
|
||||||
|
var item = new GoodsItemForT2LT2LF();
|
||||||
|
|
||||||
|
if (cells.Length > 0) item.Commodity.HarmonizedSystemSubHeadingCode = cells[0].Trim();
|
||||||
|
if (cells.Length > 1 && int.TryParse(cells[1], out var n)) item.GoodsItemNumber = n;
|
||||||
|
if (cells.Length > 2) item.DescriptionOfGoods = cells[2].Trim();
|
||||||
|
if (cells.Length > 3 && decimal.TryParse(cells[3], out var gross)) item.GoodsMeasure.GrossMass = gross;
|
||||||
|
if (cells.Length > 4 && decimal.TryParse(cells[4], out var net)) item.GoodsMeasure.NetMass = net;
|
||||||
|
if (cells.Length > 5 && int.TryParse(cells[5], out var pkgs)) item.Packaging.NumberOfPackages = pkgs;
|
||||||
|
if (cells.Length > 6) item.Packaging.TypeOfPackages = cells[6].Trim();
|
||||||
|
if (cells.Length > 7) item.Packaging.ShippingMarks = cells[7].Trim();
|
||||||
|
|
||||||
|
_vm.ProofInformationT2LT2LF.GoodsShipmentForT2LT2LF.GoodsItemsForT2LT2LF.Add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Very small CSV splitter (handles quotes)
|
||||||
|
private static string[] SplitCsv(string line)
|
||||||
|
{
|
||||||
|
var res = new System.Collections.Generic.List<string>();
|
||||||
|
var sb = new StringBuilder();
|
||||||
|
bool inQuotes = false;
|
||||||
|
for (int i = 0; i < line.Length; i++)
|
||||||
|
{
|
||||||
|
char c = line[i];
|
||||||
|
if (c == '\"')
|
||||||
|
{
|
||||||
|
if (inQuotes && i + 1 < line.Length && line[i + 1] == '\"')
|
||||||
|
{ sb.Append('\"'); i++; }
|
||||||
|
else { inQuotes = !inQuotes; }
|
||||||
|
}
|
||||||
|
else if (c == ',' && !inQuotes)
|
||||||
|
{ res.Add(sb.ToString()); sb.Clear(); }
|
||||||
|
else { sb.Append(c); }
|
||||||
|
}
|
||||||
|
res.Add(sb.ToString());
|
||||||
|
return res.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool TryPaste_EspHsPkgsGross(string text)
|
||||||
|
{
|
||||||
|
if (_vm?.ProofInformationT2LT2LF?.GoodsShipmentForT2LT2LF == null) return false;
|
||||||
|
|
||||||
|
// Normalize and split lines
|
||||||
|
var lines = text.Replace("\r\n", "\n").Replace('\r', '\n')
|
||||||
|
.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
|
||||||
|
if (lines.Length == 0) return false;
|
||||||
|
|
||||||
|
// Determine next item number
|
||||||
|
var list = _vm.ProofInformationT2LT2LF.GoodsShipmentForT2LT2LF.GoodsItemsForT2LT2LF;
|
||||||
|
int nextItemNo = list.Any() ? list.Max(x => x.GoodsItemNumber) + 1 : 1;
|
||||||
|
|
||||||
|
bool anyAdded = false;
|
||||||
|
bool countrySeen = false;
|
||||||
|
|
||||||
|
foreach (var raw in lines)
|
||||||
|
{
|
||||||
|
var line = raw; // do not Trim() entirely; keep leading tab as empty first cell
|
||||||
|
var cells = line.Split('\t'); // keeps empty entries
|
||||||
|
|
||||||
|
// Expected:
|
||||||
|
// - 4 cells: [ESP or ""], [HS], [Pkgs], [Gross]
|
||||||
|
// - 3 cells: [HS], [Pkgs], [Gross]
|
||||||
|
string hs = null, pkgs = null, gross = null;
|
||||||
|
|
||||||
|
if (cells.Length >= 4)
|
||||||
|
{
|
||||||
|
string c0 = cells[0]?.Trim();
|
||||||
|
// Optionally capture the first token like "ESP" (country tag),
|
||||||
|
// only once and only if alphabetic (won't throw if numeric)
|
||||||
|
if (!countrySeen && !string.IsNullOrWhiteSpace(c0) && c0.All(ch => char.IsLetter(ch)))
|
||||||
|
{
|
||||||
|
// If you decide later this should set a field, uncomment:
|
||||||
|
// if (string.IsNullOrWhiteSpace(_vm.Country)) _vm.Country = c0;
|
||||||
|
countrySeen = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
hs = (cells.Length > 1 ? cells[1] : null);
|
||||||
|
pkgs = (cells.Length > 2 ? cells[2] : null);
|
||||||
|
gross = (cells.Length > 3 ? cells[3] : null);
|
||||||
|
}
|
||||||
|
else if (cells.Length == 3)
|
||||||
|
{
|
||||||
|
hs = cells[0];
|
||||||
|
pkgs = cells[1];
|
||||||
|
gross = cells[2];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Not enough data for this format; skip the row
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(hs)) continue;
|
||||||
|
|
||||||
|
var item = new GoodsItemForT2LT2LF
|
||||||
|
{
|
||||||
|
GoodsItemNumber = nextItemNo++,
|
||||||
|
DescriptionOfGoods = "" // per spec
|
||||||
|
};
|
||||||
|
item.Commodity.HarmonizedSystemSubHeadingCode = hs.Trim();
|
||||||
|
|
||||||
|
if (TryParseIntFlexible(pkgs, out var pk))
|
||||||
|
item.Packaging.NumberOfPackages = pk;
|
||||||
|
|
||||||
|
if (TryParseDecimalFlexible(gross, out var g))
|
||||||
|
{
|
||||||
|
item.GoodsMeasure.GrossMass = g;
|
||||||
|
var net = g; // - 1m; // now net mass equals gross mass (no deduction)
|
||||||
|
if (net < 0m) net = 0m;
|
||||||
|
item.GoodsMeasure.NetMass = net;
|
||||||
|
}
|
||||||
|
|
||||||
|
item.DescriptionOfGoods = "Brand New Vehicles"; // per spec
|
||||||
|
item.Packaging.TypeOfPackages = "UN"; // per spec
|
||||||
|
item.Packaging.ShippingMarks = "-"; // per spec
|
||||||
|
|
||||||
|
list.Add(item);
|
||||||
|
anyAdded = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return anyAdded;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region static utils
|
||||||
|
|
||||||
|
// this will go somewhere else later
|
||||||
|
|
||||||
|
// Try parse decimal with current culture, invariant, and comma/dot flip
|
||||||
|
private static bool TryParseDecimalFlexible(string s, out decimal value)
|
||||||
|
{
|
||||||
|
s = (s ?? "").Trim();
|
||||||
|
// 1) current culture
|
||||||
|
if (decimal.TryParse(s, NumberStyles.Number, CultureInfo.CurrentCulture, out value)) return true;
|
||||||
|
// 2) invariant
|
||||||
|
if (decimal.TryParse(s, NumberStyles.Number, CultureInfo.InvariantCulture, out value)) return true;
|
||||||
|
// 3) flip comma/dot and retry (helps when clipboard mixes locales)
|
||||||
|
string flipped = s.Contains(",") ? s.Replace(",", ".") : s.Replace(".", ",");
|
||||||
|
if (decimal.TryParse(flipped, NumberStyles.Number, CultureInfo.CurrentCulture, out value)) return true;
|
||||||
|
if (decimal.TryParse(flipped, NumberStyles.Number, CultureInfo.InvariantCulture, out value)) return true;
|
||||||
|
value = 0m;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool TryParseIntFlexible(string s, out int value)
|
||||||
|
{
|
||||||
|
s = (s ?? "").Trim();
|
||||||
|
// Extract leading integer if something like "12 pcs"
|
||||||
|
var digits = new string(s.TakeWhile(ch => char.IsDigit(ch) || ch == '-' || ch == '+').ToArray());
|
||||||
|
if (string.IsNullOrEmpty(digits)) digits = s;
|
||||||
|
return int.TryParse(digits, NumberStyles.Integer, CultureInfo.CurrentCulture, out value)
|
||||||
|
|| int.TryParse(digits, NumberStyles.Integer, CultureInfo.InvariantCulture, out value);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@ -12,6 +12,8 @@ using Xceed.Wpf.Toolkit;
|
|||||||
|
|
||||||
using bsmd.database;
|
using bsmd.database;
|
||||||
using ENI2.Util;
|
using ENI2.Util;
|
||||||
|
using System.Windows.Data;
|
||||||
|
using System.Xml.Linq;
|
||||||
|
|
||||||
namespace ENI2.Controls
|
namespace ENI2.Controls
|
||||||
{
|
{
|
||||||
@ -47,6 +49,12 @@ namespace ENI2.Controls
|
|||||||
cancelButton.Click += (s, e) => { if (this.IsModal()) DialogResult = false; CancelClicked?.Invoke(); this.Close(); };
|
cancelButton.Click += (s, e) => { if (this.IsModal()) DialogResult = false; CancelClicked?.Invoke(); this.Close(); };
|
||||||
addButton.Click += (s, e) => AddClicked?.Invoke();
|
addButton.Click += (s, e) => AddClicked?.Invoke();
|
||||||
this.Closing += Window_Closing;
|
this.Closing += Window_Closing;
|
||||||
|
|
||||||
|
SettingBindingExtension stBinding = new SettingBindingExtension("W1Top");
|
||||||
|
BindingOperations.SetBinding(this, Window.TopProperty, stBinding);
|
||||||
|
|
||||||
|
SettingBindingExtension slBinding = new SettingBindingExtension("W1Left");
|
||||||
|
BindingOperations.SetBinding(this, Window.LeftProperty, slBinding);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,10 +63,17 @@ namespace ENI2.Controls
|
|||||||
get { var addButton = (Button)Template.FindName("buttonAdd", this); return addButton.Visibility == Visibility.Visible; }
|
get { var addButton = (Button)Template.FindName("buttonAdd", this); return addButton.Visibility == Visibility.Visible; }
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
var addButton = (Button)Template.FindName("buttonAdd", this); addButton.Visibility = value ? Visibility.Visible : Visibility.Hidden;
|
var addButton = (Button)Template.FindName("buttonAdd", this);
|
||||||
|
if (addButton != null)
|
||||||
|
{
|
||||||
|
addButton.Visibility = value ? Visibility.Visible : Visibility.Hidden;
|
||||||
|
}
|
||||||
var okButton = (Button)Template.FindName("buttonOK", this);
|
var okButton = (Button)Template.FindName("buttonOK", this);
|
||||||
if (okButton.Visibility == Visibility.Hidden)
|
if (okButton != null)
|
||||||
okButton.Width = 1; // we are in a DockPanel, try to collapse okButton to place addButton more to the right
|
{
|
||||||
|
if (okButton.Visibility == Visibility.Hidden)
|
||||||
|
okButton.Width = 1; // we are in a DockPanel, try to collapse okButton to place addButton more to the right
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -79,6 +79,11 @@ namespace ENI2.Controls
|
|||||||
portName = LocodeDB.PortNameFromLocode(value); break;
|
portName = LocodeDB.PortNameFromLocode(value); break;
|
||||||
case RuleEngine.LocodeMode.SSN:
|
case RuleEngine.LocodeMode.SSN:
|
||||||
portName = LocodeDB.SSNPortNameFromLocode(value); break;
|
portName = LocodeDB.SSNPortNameFromLocode(value); break;
|
||||||
|
case RuleEngine.LocodeMode.OLD:
|
||||||
|
portName = LocodeDB.PortNameFromLocode(value);
|
||||||
|
if ((portName == null) && value.Equals("DEWHV"))
|
||||||
|
portName = "Stadthafen Wilhelmshaven";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
LocodeState locodeState = portName.IsNullOrEmpty() ? LocodeState.INVALID : LocodeState.OK;
|
LocodeState locodeState = portName.IsNullOrEmpty() ? LocodeState.INVALID : LocodeState.OK;
|
||||||
this.SetLocodeStateImage(this.imageLocodeState, locodeState);
|
this.SetLocodeStateImage(this.imageLocodeState, locodeState);
|
||||||
@ -164,6 +169,18 @@ namespace ENI2.Controls
|
|||||||
portname = LocodeDB.PortNameFromLocode(directLocode); break;
|
portname = LocodeDB.PortNameFromLocode(directLocode); break;
|
||||||
case RuleEngine.LocodeMode.SSN:
|
case RuleEngine.LocodeMode.SSN:
|
||||||
portname = LocodeDB.SSNPortNameFromLocode(directLocode); break;
|
portname = LocodeDB.SSNPortNameFromLocode(directLocode); break;
|
||||||
|
case RuleEngine.LocodeMode.OLD:
|
||||||
|
{
|
||||||
|
if (directLocode.Equals("DEWHV"))
|
||||||
|
{
|
||||||
|
portname = "Stadthafen Wilhelmshaven";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
portname = LocodeDB.PortNameFromLocode(directLocode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool isLocode = !portname.IsNullOrEmpty();
|
bool isLocode = !portname.IsNullOrEmpty();
|
||||||
@ -191,6 +208,8 @@ namespace ENI2.Controls
|
|||||||
locodeEntries = LocodeDB.AllLocodesForCityNameAsEntries(lookupString); break;
|
locodeEntries = LocodeDB.AllLocodesForCityNameAsEntries(lookupString); break;
|
||||||
case RuleEngine.LocodeMode.SSN:
|
case RuleEngine.LocodeMode.SSN:
|
||||||
locodeEntries = LocalizedLookup.SSNAllLocodesForCityNameAsEntries(lookupString); break;
|
locodeEntries = LocalizedLookup.SSNAllLocodesForCityNameAsEntries(lookupString); break;
|
||||||
|
case RuleEngine.LocodeMode.OLD:
|
||||||
|
locodeEntries = LocodeDB.AllLocodesForCityNameAsEntries(lookupString); break;
|
||||||
}
|
}
|
||||||
locodeEntries.Sort();
|
locodeEntries.Sort();
|
||||||
|
|
||||||
|
|||||||
@ -30,7 +30,7 @@ namespace ENI2.Controls
|
|||||||
|
|
||||||
#region Fields
|
#region Fields
|
||||||
|
|
||||||
private readonly ObservableCollection<MaerskData> maerskDataList = new ObservableCollection<MaerskData>();
|
private readonly ObservableCollection<MaerskData> maerskDataList = new ObservableCollection<MaerskData>();
|
||||||
private readonly DatabaseEntityWatchdog _dbWatchDog;
|
private readonly DatabaseEntityWatchdog _dbWatchDog;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@ -290,24 +290,10 @@ namespace ENI2.Controls
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.TimeFilterItemSource();
|
this.TimeFilterItemSource();
|
||||||
// this.SortItemSource();
|
|
||||||
this.dataGridPOCores.SelectedItem = null;
|
this.dataGridPOCores.SelectedItem = null;
|
||||||
busyControl.BusyState = Util.UIHelper.BusyStateEnum.NEUTRAL;
|
busyControl.BusyState = Util.UIHelper.BusyStateEnum.NEUTRAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
private string ReadFieldAsString(IExcelDataReader reader, int fieldNum)
|
|
||||||
{
|
|
||||||
if (fieldNum >= reader.FieldCount) return null;
|
|
||||||
if (reader.GetFieldType(fieldNum) == typeof(string))
|
|
||||||
return reader.GetString(fieldNum).Clean();
|
|
||||||
if (reader.GetFieldType(fieldNum) == typeof(DateTime))
|
|
||||||
return reader.GetDateTime(fieldNum).ToString();
|
|
||||||
if (reader.GetFieldType(fieldNum) == typeof(int))
|
|
||||||
return reader.GetInt32(fieldNum).ToString();
|
|
||||||
if (reader.GetFieldType(fieldNum) == typeof(double))
|
|
||||||
return ((int) reader.GetDouble(fieldNum)).ToString();
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void TimeFilterItemSource()
|
private void TimeFilterItemSource()
|
||||||
{
|
{
|
||||||
@ -330,16 +316,7 @@ namespace ENI2.Controls
|
|||||||
|
|
||||||
foreach (MaerskData md in removeList)
|
foreach (MaerskData md in removeList)
|
||||||
this.maerskDataList.Remove(md);
|
this.maerskDataList.Remove(md);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SortItemSource()
|
|
||||||
{
|
|
||||||
ObservableCollection<MaerskData> temp;
|
|
||||||
temp = new ObservableCollection<MaerskData>(this.maerskDataList.OrderBy(p => p.ColA));
|
|
||||||
this.maerskDataList.Clear();
|
|
||||||
foreach (MaerskData md in temp)
|
|
||||||
this.maerskDataList.Add(md);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@ -409,28 +386,28 @@ namespace ENI2.Controls
|
|||||||
if (DateTime.TryParse(md.ColA, out DateTime aDateTime))
|
if (DateTime.TryParse(md.ColA, out DateTime aDateTime))
|
||||||
md.ETA = aDateTime;
|
md.ETA = aDateTime;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!reader.IsDBNull(1)) md.ColB = ReadFieldAsString(reader, 1);
|
if (!reader.IsDBNull(1)) md.ColB = reader.ReadAsString(1);
|
||||||
if (!reader.IsDBNull(2)) md.ColC = ReadFieldAsString(reader, 2);
|
if (!reader.IsDBNull(2)) md.ColC = reader.ReadAsString(2);
|
||||||
if (!reader.IsDBNull(3)) md.ColD = ReadFieldAsString(reader, 3);
|
if (!reader.IsDBNull(3)) md.ColD = reader.ReadAsString(3);
|
||||||
if (!reader.IsDBNull(4)) md.ColE = ReadFieldAsString(reader, 4);
|
if (!reader.IsDBNull(4)) md.ColE = reader.ReadAsString(4);
|
||||||
if (!reader.IsDBNull(5)) md.ColF = ReadFieldAsString(reader, 5);
|
if (!reader.IsDBNull(5)) md.ColF = reader.ReadAsString(5);
|
||||||
if (!reader.IsDBNull(6)) md.ColG = ReadFieldAsString(reader, 6);
|
if (!reader.IsDBNull(6)) md.ColG = reader.ReadAsString(6);
|
||||||
if (!reader.IsDBNull(7)) md.ColH = ReadFieldAsString(reader, 7);
|
if (!reader.IsDBNull(7)) md.ColH = reader.ReadAsString(7);
|
||||||
if (!reader.IsDBNull(8)) md.ColI = ReadFieldAsString(reader, 8);
|
if (!reader.IsDBNull(8)) md.ColI = reader.ReadAsString(8);
|
||||||
if (md.ColI != null)
|
if (md.ColI != null)
|
||||||
{
|
{
|
||||||
if ((md.ColI.Contains("bremerhaven", StringComparison.OrdinalIgnoreCase) && this.PortLocode.Equals("DEWVN")) ||
|
if ((md.ColI.Contains("bremerhaven", StringComparison.OrdinalIgnoreCase) && this.PortLocode.Equals("DEWVN")) ||
|
||||||
(md.ColI.Contains("eurogate", StringComparison.OrdinalIgnoreCase) && this.PortLocode.Equals("DEBRV")))
|
(md.ColI.Contains("eurogate", StringComparison.OrdinalIgnoreCase) && this.PortLocode.Equals("DEBRV")))
|
||||||
throw new InvalidOperationException($"{md.ColI} found in import to {PortLocode}, this is probably an error. Aborting import");
|
throw new InvalidOperationException($"{md.ColI} found in import to {PortLocode}, this is probably an error. Aborting import");
|
||||||
}
|
}
|
||||||
if (!reader.IsDBNull(9)) md.ColJ = ReadFieldAsString(reader, 9);
|
if (!reader.IsDBNull(9)) md.ColJ = reader.ReadAsString(9);
|
||||||
if (md.ColJ == null) continue;
|
if (md.ColJ == null) continue;
|
||||||
if (!(md.ColJ.Equals("msk", StringComparison.OrdinalIgnoreCase) || md.ColJ.Equals("sgl", StringComparison.OrdinalIgnoreCase))) continue; // skip operator we are not interested in
|
if (!(md.ColJ.Equals("msk", StringComparison.OrdinalIgnoreCase) || md.ColJ.Equals("sgl", StringComparison.OrdinalIgnoreCase))) continue; // skip operator we are not interested in
|
||||||
if (!reader.IsDBNull(10)) md.ColK = ReadFieldAsString(reader, 10);
|
if (!reader.IsDBNull(10)) md.ColK = reader.ReadAsString(10);
|
||||||
if (!reader.IsDBNull(11)) md.ColL = ReadFieldAsString(reader, 11);
|
if (!reader.IsDBNull(11)) md.ColL = reader.ReadAsString(11);
|
||||||
if (!reader.IsDBNull(12)) md.ColM = ReadFieldAsString(reader, 12);
|
if (!reader.IsDBNull(12)) md.ColM = reader.ReadAsString(12);
|
||||||
if (!reader.IsDBNull(13)) md.Remark = ReadFieldAsString(reader, 13);
|
if (!reader.IsDBNull(13)) md.Remark = reader.ReadAsString(13);
|
||||||
|
|
||||||
if(!md.ColF.IsNullOrEmpty())
|
if(!md.ColF.IsNullOrEmpty())
|
||||||
{
|
{
|
||||||
@ -444,8 +421,8 @@ namespace ENI2.Controls
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
imosAreOkay = false;
|
imosAreOkay = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
imosAreOkay = false;
|
imosAreOkay = false;
|
||||||
@ -459,7 +436,7 @@ namespace ENI2.Controls
|
|||||||
|
|
||||||
importData.Add(md);
|
importData.Add(md);
|
||||||
|
|
||||||
if (isFirstRow) isFirstRow = false;
|
if (isFirstRow) isFirstRow = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@ -469,7 +446,7 @@ namespace ENI2.Controls
|
|||||||
|
|
||||||
if (imosAreOkay && importData.Count > 0)
|
if (imosAreOkay && importData.Count > 0)
|
||||||
{
|
{
|
||||||
busyControl.BusyState = Util.UIHelper.BusyStateEnum.BUSY;
|
busyControl.BusyState = Util.UIHelper.BusyStateEnum.BUSY;
|
||||||
|
|
||||||
foreach (MaerskData md in importData)
|
foreach (MaerskData md in importData)
|
||||||
{
|
{
|
||||||
@ -480,25 +457,46 @@ namespace ENI2.Controls
|
|||||||
(m.ColG != null) ? m.ColG.Equals(md.ColG) : (md.ColG == null) &&
|
(m.ColG != null) ? m.ColG.Equals(md.ColG) : (md.ColG == null) &&
|
||||||
(m.ColH != null) ? m.ColH.Equals(md.ColH) : (md.ColH == null));
|
(m.ColH != null) ? m.ColH.Equals(md.ColH) : (md.ColH == null));
|
||||||
|
|
||||||
if(foundData.ETA.HasValue && ((foundData.ETA.Value - DateTime.Now).TotalSeconds > 0) && foundData.Update(md))
|
if ((foundData.MessageCore == null) || !(foundData.MessageCore.Cancelled ?? false))
|
||||||
foundData.Status = MaerskData.MDStatus.UPDATED;
|
{
|
||||||
|
if (foundData.ETA.HasValue && ((foundData.ETA.Value - DateTime.Now).TotalSeconds > 0) && foundData.Update(md))
|
||||||
|
foundData.Status = MaerskData.MDStatus.UPDATED;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!md.ColM.IsNullOrEmpty())
|
if (!md.ColM.IsNullOrEmpty())
|
||||||
{
|
{
|
||||||
md.MessageCore = await DBManagerAsync.LoadCoreByVisitIdAsync(md.ColM);
|
md.MessageCore = await DBManagerAsync.LoadCoreByVisitIdAsync(md.ColM);
|
||||||
|
if (md.MessageCore != null)
|
||||||
|
{
|
||||||
|
MaerskData existingMD = await DBManagerAsync.LoadMaerskDataForCoreAsync(md.MessageCore.Id.Value);
|
||||||
|
if(existingMD == null)
|
||||||
|
{
|
||||||
|
// we have a core but no MarskData for this import -> save it
|
||||||
|
md.MessageCoreId = (Guid) md.MessageCore.Id;
|
||||||
|
_ = DBManagerAsync.SaveAsync(md);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
existingMD.Update(md);
|
||||||
|
_ = DBManagerAsync.SaveAsync(existingMD);
|
||||||
|
this.UpdateStatus(existingMD);
|
||||||
|
maerskDataList.Add(existingMD);
|
||||||
|
continue; // add existing instead of new one
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.UpdateStatus(md);
|
this.UpdateStatus(md);
|
||||||
maerskDataList.Add(md);
|
maerskDataList.Add(md);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.TimeFilterItemSource();
|
this.TimeFilterItemSource();
|
||||||
// this.SortItemSource();
|
|
||||||
busyControl.BusyState = Util.UIHelper.BusyStateEnum.NEUTRAL;
|
busyControl.BusyState = Util.UIHelper.BusyStateEnum.NEUTRAL;
|
||||||
|
|
||||||
this.dataGridPOCores.Items.Refresh();
|
this.dataGridPOCores.Items.Refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stream.Close();
|
stream.Close();
|
||||||
@ -531,26 +529,6 @@ namespace ENI2.Controls
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
private async void buttonSave_Click(object sender, RoutedEventArgs e)
|
|
||||||
{
|
|
||||||
busyControl.BusyState = Util.UIHelper.BusyStateEnum.BUSY;
|
|
||||||
|
|
||||||
// save the current list to DB (only if the entries have matching cores!)
|
|
||||||
foreach(MaerskData md in this.maerskDataList)
|
|
||||||
{
|
|
||||||
if(md.MessageCore != null)
|
|
||||||
{
|
|
||||||
await DBManagerAsync.Save(md);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
busyControl.BusyState = Util.UIHelper.BusyStateEnum.NEUTRAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
private async void buttonRequestIds_Click(object sender, RoutedEventArgs e)
|
private async void buttonRequestIds_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
// find all entries from now until 4 days into the future and track parallel requests
|
// find all entries from now until 4 days into the future and track parallel requests
|
||||||
@ -629,7 +607,7 @@ namespace ENI2.Controls
|
|||||||
MaerskData md = grid.SelectedItem as MaerskData;
|
MaerskData md = grid.SelectedItem as MaerskData;
|
||||||
if(md.MessageCore != null) {
|
if(md.MessageCore != null) {
|
||||||
Util.UIHelper.SetBusyState();
|
Util.UIHelper.SetBusyState();
|
||||||
this.MessageCoreSelected?.Invoke(md.MessageCore);
|
this.MessageCoreSelected?.Invoke(md.MessageCore, DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].ShipcallDisplayMode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,12 +16,8 @@
|
|||||||
<RowDefinition Height="*" />
|
<RowDefinition Height="*" />
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<StackPanel Grid.Row="0" Orientation="Horizontal">
|
<StackPanel Grid.Row="0" Orientation="Horizontal">
|
||||||
<Label Content="Excel:" />
|
|
||||||
<Label Name="labelStatusExcel" Content="?" FontWeight="Bold" />
|
|
||||||
<Label Content="Transmitter:" />
|
<Label Content="Transmitter:" />
|
||||||
<Label Name="labelStatusTransmitter" Content="?" FontWeight="Bold" />
|
<Label Name="labelStatusTransmitter" Content="?" FontWeight="Bold" />
|
||||||
<Label Content="Report:" />
|
|
||||||
<Label Name="labelStatusReport" Content="?" FontWeight="Bold" />
|
|
||||||
<Button Name="refreshButton" Content="{x:Static p:Resources.textRefresh}" Margin="4" Background="Transparent" Click="refreshButton_Click"/>
|
<Button Name="refreshButton" Content="{x:Static p:Resources.textRefresh}" Margin="4" Background="Transparent" Click="refreshButton_Click"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<local:ENIDataGrid Grid.Row="1"
|
<local:ENIDataGrid Grid.Row="1"
|
||||||
|
|||||||
@ -27,13 +27,14 @@ namespace ENI2.Controls
|
|||||||
private readonly static ILog _log = LogManager.GetLogger("ServerStatus");
|
private readonly static ILog _log = LogManager.GetLogger("ServerStatus");
|
||||||
private ProgressBar _updateProgressBar;
|
private ProgressBar _updateProgressBar;
|
||||||
private TextBlock _updateTextBlock;
|
private TextBlock _updateTextBlock;
|
||||||
|
private bool _isUpdating = false;
|
||||||
|
private readonly static Dictionary<Guid, string> coreIdVisitIdMap = new Dictionary<Guid, string>();
|
||||||
|
|
||||||
public ServerStatusControl()
|
public ServerStatusControl()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
this.dataGridStatus.ItemsSource = this.entries;
|
this.dataGridStatus.ItemsSource = this.entries;
|
||||||
this.Loaded += ServerStatusControl_Loaded;
|
this.Loaded += ServerStatusControl_Loaded;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ServerStatusControl_Loaded(object sender, System.Windows.RoutedEventArgs e)
|
private void ServerStatusControl_Loaded(object sender, System.Windows.RoutedEventArgs e)
|
||||||
@ -43,6 +44,8 @@ namespace ENI2.Controls
|
|||||||
|
|
||||||
internal void Update(LockingServiceReference.ServerStatus serverStatus)
|
internal void Update(LockingServiceReference.ServerStatus serverStatus)
|
||||||
{
|
{
|
||||||
|
if (this._isUpdating) return;
|
||||||
|
_isUpdating = true;
|
||||||
int totalNum = serverStatus.IMPFiles.Length + serverStatus.READYFiles.Length + serverStatus.CORRUPTFiles.Length;
|
int totalNum = serverStatus.IMPFiles.Length + serverStatus.READYFiles.Length + serverStatus.CORRUPTFiles.Length;
|
||||||
entries.Clear();
|
entries.Clear();
|
||||||
BackgroundWorker bgWorker = new BackgroundWorker();
|
BackgroundWorker bgWorker = new BackgroundWorker();
|
||||||
@ -95,24 +98,20 @@ namespace ENI2.Controls
|
|||||||
|
|
||||||
System.Windows.Application.Current.Dispatcher.Invoke(delegate {
|
System.Windows.Application.Current.Dispatcher.Invoke(delegate {
|
||||||
foreach (StatusEntry se in tmpList)
|
foreach (StatusEntry se in tmpList)
|
||||||
entries.Add(se);
|
entries.Add(se);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
bgWorker.RunWorkerCompleted += (o, e) =>
|
bgWorker.RunWorkerCompleted += (o, e) =>
|
||||||
{
|
{
|
||||||
|
|
||||||
// Enumeration parsen und text ausgeben
|
// Enumeration parsen und text ausgeben
|
||||||
ServiceControllerStatus excel = (ServiceControllerStatus)serverStatus.Excel;
|
|
||||||
this.labelStatusExcel.Content = excel.ToString();
|
|
||||||
|
|
||||||
ServiceControllerStatus report = (ServiceControllerStatus)serverStatus.Report;
|
|
||||||
this.labelStatusReport.Content = report.ToString();
|
|
||||||
|
|
||||||
ServiceControllerStatus transmitter = (ServiceControllerStatus)serverStatus.Transmitter;
|
ServiceControllerStatus transmitter = (ServiceControllerStatus)serverStatus.Transmitter;
|
||||||
this.labelStatusTransmitter.Content = transmitter.ToString();
|
this.labelStatusTransmitter.Content = transmitter.ToString();
|
||||||
|
|
||||||
this.busyIndicator.IsBusy = false;
|
this.busyIndicator.IsBusy = false;
|
||||||
|
|
||||||
|
_isUpdating = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.busyIndicator.IsBusy = true;
|
this.busyIndicator.IsBusy = true;
|
||||||
@ -147,15 +146,23 @@ namespace ENI2.Controls
|
|||||||
|
|
||||||
string guidString = m.Groups[2].Value;
|
string guidString = m.Groups[2].Value;
|
||||||
|
|
||||||
|
string idString = "";
|
||||||
if (!guidIdDict.ContainsKey(guidString))
|
if (!guidIdDict.ContainsKey(guidString))
|
||||||
{
|
{
|
||||||
string idString = "";
|
|
||||||
if (Guid.TryParse(m.Groups[2].Value, out Guid coreId))
|
if (Guid.TryParse(m.Groups[2].Value, out Guid coreId))
|
||||||
{
|
{
|
||||||
MessageCore aCore = DBManager.Instance.GetMessageCoreById(coreId);
|
if (!coreIdVisitIdMap.ContainsKey(coreId))
|
||||||
if (aCore != null)
|
|
||||||
{
|
{
|
||||||
idString = aCore.DisplayId;
|
MessageCore aCore = DBManager.Instance.GetMessageCoreById(coreId);
|
||||||
|
if (aCore != null)
|
||||||
|
{
|
||||||
|
coreIdVisitIdMap[coreId] = aCore.DisplayId;
|
||||||
|
idString = aCore.DisplayId;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
idString = coreIdVisitIdMap[coreId];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
guidIdDict[guidString] = idString;
|
guidIdDict[guidString] = idString;
|
||||||
|
|||||||
@ -8,12 +8,13 @@ using System.Windows;
|
|||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using ENI2.Util;
|
using ENI2.Util;
|
||||||
|
using System.Windows.Data;
|
||||||
|
|
||||||
namespace ENI2.Controls
|
namespace ENI2.Controls
|
||||||
{
|
{
|
||||||
|
|
||||||
[TemplatePart(Name = "buttonRefresh", Type = typeof(Button))]
|
[TemplatePart(Name = "buttonRefresh", Type = typeof(Button))]
|
||||||
[TemplatePart(Name = "buttonClose", Type = typeof(Button))]
|
[TemplatePart(Name = "buttonClose", Type = typeof(Button))]
|
||||||
public class StatusWindowBase : Window
|
public class StatusWindowBase : Window
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -34,9 +35,23 @@ namespace ENI2.Controls
|
|||||||
|
|
||||||
closeButton.Click += (s, e) => { if (this.IsModal()) DialogResult = true; CloseClicked?.Invoke(); this.Close(); };
|
closeButton.Click += (s, e) => { if (this.IsModal()) DialogResult = true; CloseClicked?.Invoke(); this.Close(); };
|
||||||
refreshButton.Click += (s, e) => { RefreshClicked?.Invoke(); };
|
refreshButton.Click += (s, e) => { RefreshClicked?.Invoke(); };
|
||||||
|
|
||||||
};
|
string topProperty = "W2Top";
|
||||||
}
|
string leftProperty = "W2Left";
|
||||||
|
if(this.GetType().Name == "ViolationListDialog")
|
||||||
|
{
|
||||||
|
topProperty = "W3Top";
|
||||||
|
leftProperty = "W3Left";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SettingBindingExtension stBinding = new SettingBindingExtension(topProperty);
|
||||||
|
this.SetBinding(Window.TopProperty, stBinding);
|
||||||
|
|
||||||
|
SettingBindingExtension slBinding = new SettingBindingExtension(leftProperty);
|
||||||
|
this.SetBinding (Window.LeftProperty, slBinding);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
public bool RefreshVisible
|
public bool RefreshVisible
|
||||||
{
|
{
|
||||||
|
|||||||
68
ENI2/Controls/ValueMappingsControl.xaml
Normal file
68
ENI2/Controls/ValueMappingsControl.xaml
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
<UserControl x:Class="ENI2.Controls.ValueMappingsControl"
|
||||||
|
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:ENI2.Controls"
|
||||||
|
xmlns:p="clr-namespace:ENI2.Properties"
|
||||||
|
mc:Ignorable="d"
|
||||||
|
d:DesignHeight="450" d:DesignWidth="800" Loaded="UserControl_Loaded">
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="*" />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Label Grid.Row="0" Content="{x:Static p:Resources.textExcelValueMappings}" />
|
||||||
|
<GroupBox Name="groupBoxRP" Header="" Grid.Row="1">
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="*" />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid Grid.Row="0">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="40" />
|
||||||
|
<ColumnDefinition Width="120" />
|
||||||
|
<ColumnDefinition Width="40" />
|
||||||
|
<ColumnDefinition Width="120" />
|
||||||
|
<ColumnDefinition Width="50" />
|
||||||
|
<ColumnDefinition Width="30" />
|
||||||
|
<ColumnDefinition Width="120" />
|
||||||
|
<ColumnDefinition Width="80" />
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
<ColumnDefinition Width="80" />
|
||||||
|
<ColumnDefinition Width="80" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Label Content="Type" Grid.Column="0" />
|
||||||
|
<ComboBox Margin="2" Grid.Column="1" x:Name="comboBoxType" SelectionChanged="comboBoxType_SelectionChanged" />
|
||||||
|
|
||||||
|
<local:BusyControl x:Name="busyControl" Grid.Column="2" />
|
||||||
|
<Button x:Name="buttonSave" Grid.Column="6" Margin="2" Content="Save all changes" Click="buttonSave_Click" />
|
||||||
|
<Button x:Name="buttonImport" Grid.Column="9" Margin="2" Content="Import" Click="buttonImport_Click" IsEnabled="False" />
|
||||||
|
<Button x:Name="buttonExport" Grid.Column="10" Margin="2" Content="Export" Click="buttonExport_Click" IsEnabled="False" />
|
||||||
|
|
||||||
|
</Grid>
|
||||||
|
<local:ENIDataGrid Grid.Row="1" Margin="2,8,2,2" x:Name="dataGridValueMappings" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
||||||
|
SelectionMode="Extended" AutoGenerateColumns="False" CellEditEnding="dataGridValueMappings_CellEditEnding" CanUserAddRows="False"
|
||||||
|
MouseDoubleClick="dataGridValueMappings_MouseDoubleClick" BeginningEdit="dataGridValueMappings_BeginningEdit">
|
||||||
|
<local:ENIDataGrid.RowStyle>
|
||||||
|
<Style TargetType="DataGridRow">
|
||||||
|
<Style.Triggers>
|
||||||
|
<DataTrigger Binding="{Binding Value}" Value="*">
|
||||||
|
<Setter Property="Background" Value="Pink"></Setter>
|
||||||
|
</DataTrigger>
|
||||||
|
</Style.Triggers>
|
||||||
|
</Style>
|
||||||
|
</local:ENIDataGrid.RowStyle>
|
||||||
|
<DataGrid.Columns>
|
||||||
|
<DataGridTextColumn x:Name="columnKey" Header="Key" Binding="{Binding Key, Mode=TwoWay}" IsReadOnly="False" />
|
||||||
|
<DataGridTextColumn x:Name="columnValue" Header="Value key" Binding="{Binding Value, Mode=TwoWay}" IsReadOnly="False" />
|
||||||
|
<DataGridTextColumn x:Name="columnValueText" Header="Value text" Binding="{Binding ValueText, Mode=TwoWay}" IsReadOnly="True" />
|
||||||
|
<DataGridTextColumn Header="Created" Binding="{Binding Created}" IsReadOnly="True" />
|
||||||
|
<DataGridTextColumn Header="Changed" Binding="{Binding Changed}" IsReadOnly="True" />
|
||||||
|
</DataGrid.Columns>
|
||||||
|
</local:ENIDataGrid>
|
||||||
|
</Grid>
|
||||||
|
</GroupBox>
|
||||||
|
</Grid>
|
||||||
|
</UserControl>
|
||||||
218
ENI2/Controls/ValueMappingsControl.xaml.cs
Normal file
218
ENI2/Controls/ValueMappingsControl.xaml.cs
Normal file
@ -0,0 +1,218 @@
|
|||||||
|
using bsmd.database;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
|
||||||
|
namespace ENI2.Controls
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Interaction logic for ValueMappingsControl.xaml
|
||||||
|
/// </summary>
|
||||||
|
public partial class ValueMappingsControl : UserControl
|
||||||
|
{
|
||||||
|
private readonly ObservableCollection<ValueMapping> _mappings = new ObservableCollection<ValueMapping>();
|
||||||
|
private DataGridCellInfo activeCellAtEdit;
|
||||||
|
|
||||||
|
public ValueMappingsControl()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UserControl_Loaded(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
this.comboBoxType.ItemsSource = Enum.GetValues(typeof(ValueMapping.MappingType)).Cast<ValueMapping.MappingType>();
|
||||||
|
this.dataGridValueMappings.ItemsSource = _mappings;
|
||||||
|
|
||||||
|
this.dataGridValueMappings.ContextMenu = new ContextMenu();
|
||||||
|
MenuItem addItem = new MenuItem
|
||||||
|
{
|
||||||
|
Header = Properties.Resources.textAdd,
|
||||||
|
Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/add.png")) }
|
||||||
|
};
|
||||||
|
|
||||||
|
addItem.Click += AddItem_Click;
|
||||||
|
this.dataGridValueMappings.ContextMenu.Items.Add(addItem);
|
||||||
|
|
||||||
|
MenuItem delItem = new MenuItem
|
||||||
|
{
|
||||||
|
Header = Properties.Resources.textDelete,
|
||||||
|
Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/delete.png")) }
|
||||||
|
};
|
||||||
|
|
||||||
|
delItem.Click += DelItem_Click;
|
||||||
|
this.dataGridValueMappings.ContextMenu.Items.Add(delItem);
|
||||||
|
|
||||||
|
MenuItem invalidItem = new MenuItem
|
||||||
|
{
|
||||||
|
Header = "Set as invalid key",
|
||||||
|
Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/sign_warning_radiation.png")) }
|
||||||
|
};
|
||||||
|
invalidItem.Click += InvalidItem_Click;
|
||||||
|
this.dataGridValueMappings.ContextMenu.Items.Add(invalidItem);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#region context menu event handler
|
||||||
|
|
||||||
|
private void InvalidItem_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (this.dataGridValueMappings.SelectedItem is ValueMapping vm)
|
||||||
|
{
|
||||||
|
vm.Value = "*";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void DelItem_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (this.dataGridValueMappings.SelectedItems.Count > 0)
|
||||||
|
{
|
||||||
|
if (MessageBox.Show($"Are you sure to delete the selected values?", Properties.Resources.textConfirmation, MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) ==
|
||||||
|
MessageBoxResult.Yes)
|
||||||
|
{
|
||||||
|
var selectedItems = new List<ValueMapping>();
|
||||||
|
foreach(ValueMapping vm in this.dataGridValueMappings.SelectedItems)
|
||||||
|
selectedItems.Add(vm);
|
||||||
|
foreach(ValueMapping vm in selectedItems)
|
||||||
|
{
|
||||||
|
int result = await DBManagerAsync.DeleteAsync(vm);
|
||||||
|
if (result == 1)
|
||||||
|
{
|
||||||
|
_mappings.Remove(vm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AddItem_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
ValueMapping.MappingType? mappingType = (ValueMapping.MappingType?) this.comboBoxType.SelectedItem;
|
||||||
|
if (mappingType == null) return;
|
||||||
|
ValueMapping vm = ValueMapping.Create(mappingType.Value);
|
||||||
|
_mappings.Add(vm);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private void dataGridValueMappings_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
|
||||||
|
{
|
||||||
|
// we need to check that there are no keys entered twice or changed into something that is already here
|
||||||
|
string newValue = ((TextBox)e.EditingElement).Text;
|
||||||
|
if (newValue == null) return;
|
||||||
|
|
||||||
|
if (e.Column == columnKey)
|
||||||
|
{
|
||||||
|
ValueMapping editedMapping = e.Row.Item as ValueMapping;
|
||||||
|
foreach(ValueMapping vm in _mappings)
|
||||||
|
{
|
||||||
|
if (vm == editedMapping) continue; // dont compare with myself
|
||||||
|
if (vm.Key == newValue)
|
||||||
|
{
|
||||||
|
((TextBox)e.EditingElement).Text = editedMapping.Key;
|
||||||
|
e.Cancel = true; // hopefully this avoids writing back to the model
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(e.Column == columnValue)
|
||||||
|
{
|
||||||
|
ValueMapping editedMapping = e.Row.Item as ValueMapping;
|
||||||
|
|
||||||
|
ValueMapping.MappingType? mappingType = (ValueMapping.MappingType)this.comboBoxType.SelectedItem;
|
||||||
|
if ((mappingType != null) && (newValue != null))
|
||||||
|
{
|
||||||
|
switch (mappingType)
|
||||||
|
{
|
||||||
|
case ValueMapping.MappingType.GENDER:
|
||||||
|
if (Util.GlobalStructures.GenderDict.ContainsKey(newValue))
|
||||||
|
editedMapping.ValueText = Util.GlobalStructures.GenderDict[newValue];
|
||||||
|
else
|
||||||
|
editedMapping.ValueText = "";
|
||||||
|
break;
|
||||||
|
case ValueMapping.MappingType.DOCUMENT_TYPE:
|
||||||
|
if (Util.GlobalStructures.IDDocTypeDict.ContainsKey(newValue))
|
||||||
|
editedMapping.ValueText = Util.GlobalStructures.IDDocTypeDict[newValue];
|
||||||
|
else
|
||||||
|
editedMapping.ValueText = "";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
editedMapping.ValueText = newValue;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void dataGridValueMappings_MouseDoubleClick(object sender, MouseButtonEventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonImport_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonExport_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void comboBoxType_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||||
|
{
|
||||||
|
this._mappings.Clear();
|
||||||
|
|
||||||
|
if(this.comboBoxType.SelectedItem != null)
|
||||||
|
{
|
||||||
|
ValueMapping.MappingType mappingType = (ValueMapping.MappingType)this.comboBoxType.SelectedItem;
|
||||||
|
List<ValueMapping> mappings = await DBManagerAsync.LoadValuesForType(mappingType);
|
||||||
|
foreach (ValueMapping vm in mappings)
|
||||||
|
{
|
||||||
|
// add "Klartext"
|
||||||
|
switch(mappingType)
|
||||||
|
{
|
||||||
|
case ValueMapping.MappingType.GENDER:
|
||||||
|
if (Util.GlobalStructures.GenderDict.ContainsKey(vm.Value))
|
||||||
|
vm.ValueText = Util.GlobalStructures.GenderDict[vm.Value];
|
||||||
|
break;
|
||||||
|
case ValueMapping.MappingType.DOCUMENT_TYPE:
|
||||||
|
if (Util.GlobalStructures.IDDocTypeDict.ContainsKey(vm.Value))
|
||||||
|
vm.ValueText = Util.GlobalStructures.IDDocTypeDict[vm.Value];
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
vm.ValueText = vm.Value;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
_mappings.Add(vm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void dataGridValueMappings_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
|
||||||
|
{
|
||||||
|
this.activeCellAtEdit = this.dataGridValueMappings.CurrentCell;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void buttonSave_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
int totalSaves = 0;
|
||||||
|
foreach(ValueMapping vm in _mappings)
|
||||||
|
{
|
||||||
|
if (vm.Key.IsNullOrEmpty()) continue;
|
||||||
|
if (vm.IsNew || vm.IsDirty)
|
||||||
|
{
|
||||||
|
totalSaves += await DBManagerAsync.SaveAsync(vm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(totalSaves > 0)
|
||||||
|
{
|
||||||
|
MessageBox.Show($"{totalSaves} value mappings saved", "Success", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -34,8 +34,7 @@ namespace ENI2
|
|||||||
if (parentObject == null) return null;
|
if (parentObject == null) return null;
|
||||||
|
|
||||||
//check if the parent matches the type we're looking for
|
//check if the parent matches the type we're looking for
|
||||||
T parent = parentObject as T;
|
if (parentObject is T parent)
|
||||||
if (parent != null)
|
|
||||||
return parent;
|
return parent;
|
||||||
else
|
else
|
||||||
return FindParent<T>(parentObject);
|
return FindParent<T>(parentObject);
|
||||||
|
|||||||
@ -33,6 +33,7 @@ namespace ENI2
|
|||||||
private DependencyPropertyDescriptor _dpComboboxValue;
|
private DependencyPropertyDescriptor _dpComboboxValue;
|
||||||
private DependencyPropertyDescriptor _dpNumericUpdown;
|
private DependencyPropertyDescriptor _dpNumericUpdown;
|
||||||
private DependencyPropertyDescriptor _dpIntUpdown;
|
private DependencyPropertyDescriptor _dpIntUpdown;
|
||||||
|
|
||||||
private readonly Dictionary<Object, Message.NotificationClass> _controlClassDict = new Dictionary<object, Message.NotificationClass>();
|
private readonly Dictionary<Object, Message.NotificationClass> _controlClassDict = new Dictionary<object, Message.NotificationClass>();
|
||||||
private readonly Dictionary<Message.NotificationClass, Message> _typeMessageDict = new Dictionary<Message.NotificationClass, Message>();
|
private readonly Dictionary<Message.NotificationClass, Message> _typeMessageDict = new Dictionary<Message.NotificationClass, Message>();
|
||||||
|
|
||||||
@ -69,7 +70,7 @@ namespace ENI2
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Damit kann ein Listenelement eine Validierung der gesamten Anmeldung auslösen (inkl. Highlighting) (auf Knopfdruck)
|
/// Damit kann ein Listenelement eine Validierung der gesamten Anmeldung auslösen (inkl. Highlighting) (auf Knopfdruck)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public event Action RequestValidate;
|
public event Action<bool> RequestValidate;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Alle Meldeklassen die auf "zu versenden" stehen werden validiert und falls die Validierung scheitert auf "SUSPEND" gestellt
|
/// Alle Meldeklassen die auf "zu versenden" stehen werden validiert und falls die Validierung scheitert auf "SUSPEND" gestellt
|
||||||
@ -89,7 +90,7 @@ namespace ENI2
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Eine in der Detailansicht enthaltene Meldeklasse hat sich geändert
|
/// Eine in der Detailansicht enthaltene Meldeklasse hat sich geändert
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public event Action<Message.NotificationClass> NotificationClassChanged;
|
public event Action<Message.NotificationClass?> NotificationClassChanged;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Eine Maske soll neu erzeugt werden weil sich dort "indirekt" etwas geändert hat durch eine Änderung in einer anderen Maske.
|
/// Eine Maske soll neu erzeugt werden weil sich dort "indirekt" etwas geändert hat durch eine Änderung in einer anderen Maske.
|
||||||
@ -132,8 +133,7 @@ namespace ENI2
|
|||||||
_dpComboboxIndex = DependencyPropertyDescriptor.FromProperty(ComboBox.SelectedIndexProperty, typeof(ComboBox));
|
_dpComboboxIndex = DependencyPropertyDescriptor.FromProperty(ComboBox.SelectedIndexProperty, typeof(ComboBox));
|
||||||
_dpComboboxValue = DependencyPropertyDescriptor.FromProperty(ComboBox.SelectedValueProperty, typeof(ComboBox));
|
_dpComboboxValue = DependencyPropertyDescriptor.FromProperty(ComboBox.SelectedValueProperty, typeof(ComboBox));
|
||||||
_dpNumericUpdown = DependencyPropertyDescriptor.FromProperty(Xceed.Wpf.Toolkit.DoubleUpDown.ValueProperty, typeof(Xceed.Wpf.Toolkit.DoubleUpDown));
|
_dpNumericUpdown = DependencyPropertyDescriptor.FromProperty(Xceed.Wpf.Toolkit.DoubleUpDown.ValueProperty, typeof(Xceed.Wpf.Toolkit.DoubleUpDown));
|
||||||
_dpIntUpdown = DependencyPropertyDescriptor.FromProperty(Xceed.Wpf.Toolkit.IntegerUpDown.ValueProperty, typeof(Xceed.Wpf.Toolkit.IntegerUpDown));
|
_dpIntUpdown = DependencyPropertyDescriptor.FromProperty(Xceed.Wpf.Toolkit.IntegerUpDown.ValueProperty, typeof(Xceed.Wpf.Toolkit.IntegerUpDown));
|
||||||
|
|
||||||
|
|
||||||
foreach(Message message in this.Messages)
|
foreach(Message message in this.Messages)
|
||||||
{
|
{
|
||||||
@ -160,9 +160,9 @@ namespace ENI2
|
|||||||
this.RequestReload?.Invoke(coreId);
|
this.RequestReload?.Invoke(coreId);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void OnRequestValidate()
|
protected virtual void OnRequestValidate(bool showDialog)
|
||||||
{
|
{
|
||||||
this.RequestValidate?.Invoke();
|
this.RequestValidate?.Invoke(showDialog);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void OnRequestSendValidation()
|
protected virtual void OnRequestSendValidation()
|
||||||
@ -185,6 +185,17 @@ namespace ENI2
|
|||||||
this.ResetControlCache?.Invoke(messageGroupName);
|
this.ResetControlCache?.Invoke(messageGroupName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected virtual void ScrollViewer_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
|
||||||
|
{
|
||||||
|
ScrollViewer scv = (ScrollViewer)sender;
|
||||||
|
scv.ScrollToVerticalOffset(scv.VerticalOffset - e.Delta);
|
||||||
|
e.Handled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual int SelectedTabIndex { get; set; } = -1;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region event handling for control content changes (signal dirty etc)
|
#region event handling for control content changes (signal dirty etc)
|
||||||
|
|
||||||
protected void RegisterTextboxChange(TextBox textBox, Message.NotificationClass notificationClass)
|
protected void RegisterTextboxChange(TextBox textBox, Message.NotificationClass notificationClass)
|
||||||
@ -246,7 +257,7 @@ namespace ENI2
|
|||||||
{
|
{
|
||||||
this._dpIntUpdown.AddValueChanged(intUpDown, this.controlContentChanged);
|
this._dpIntUpdown.AddValueChanged(intUpDown, this.controlContentChanged);
|
||||||
this._controlClassDict[intUpDown] = notificationClass;
|
this._controlClassDict[intUpDown] = notificationClass;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void SublistElementChanged(Message.NotificationClass notificationClass)
|
protected void SublistElementChanged(Message.NotificationClass notificationClass)
|
||||||
{
|
{
|
||||||
@ -258,12 +269,17 @@ namespace ENI2
|
|||||||
{
|
{
|
||||||
_typeMessageDict[notificationClass].IsDirty = true;
|
_typeMessageDict[notificationClass].IsDirty = true;
|
||||||
// signal this notification class changed..
|
// signal this notification class changed..
|
||||||
this.NotificationClassChanged?.Invoke(notificationClass);
|
this.OnNotificationClassChanged(notificationClass);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void OnNotificationClassChanged(Message.NotificationClass? notificationClass)
|
||||||
|
{
|
||||||
|
this.NotificationClassChanged?.Invoke(notificationClass);
|
||||||
|
}
|
||||||
|
|
||||||
#region "BHV Spezial" Datetime Parsing..
|
#region "BHV Spezial" Datetime Parsing..
|
||||||
|
|
||||||
protected void DateTimePicker_PreviewKeyUp(object sender, System.Windows.Input.KeyEventArgs e)
|
protected void DateTimePicker_PreviewKeyUp(object sender, System.Windows.Input.KeyEventArgs e)
|
||||||
@ -333,9 +349,7 @@ namespace ENI2
|
|||||||
GlobalStructures.FilterCombobox(cmb, e.Key);
|
GlobalStructures.FilterCombobox(cmb, e.Key);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region IHighlightControlContainer implementation
|
#region IHighlightControlContainer implementation
|
||||||
|
|
||||||
|
|||||||
@ -15,7 +15,7 @@
|
|||||||
<RowDefinition Height="*" />
|
<RowDefinition Height="*" />
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="220" />
|
<ColumnDefinition Width="220" x:Name="leftColumnDefinition"/>
|
||||||
<ColumnDefinition Width="*" />
|
<ColumnDefinition Width="*" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
@ -28,7 +28,7 @@
|
|||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<StackPanel Orientation="Horizontal" Grid.Row="0" Grid.Column="0" >
|
<StackPanel Orientation="Horizontal" Grid.Row="0" Grid.Column="0" >
|
||||||
<xctk:AutoSelectTextBox x:Name="displayIdLabel" Width="Auto" VerticalContentAlignment="Center" FontWeight="Bold" IsReadOnly="True" BorderThickness="0" AutoSelectBehavior="OnFocus" />
|
<xctk:AutoSelectTextBox x:Name="displayIdLabel" Width="Auto" VerticalContentAlignment="Center" FontWeight="Bold" IsReadOnly="True" BorderThickness="0" AutoSelectBehavior="OnFocus" />
|
||||||
<Label Margin="10,0,0,0" Content="Ship e-mail:" VerticalContentAlignment="Center" />
|
<Label Margin="10,0,0,0" Content="{x:Static p:Resources.textShipEmail}" VerticalContentAlignment="Center" />
|
||||||
<xctk:AutoSelectTextBox Width="400" x:Name="shipEMailLabel" VerticalContentAlignment="Center" FontWeight="Normal" IsReadOnly="True" BorderThickness="0" AutoSelectBehavior="OnFocus" />
|
<xctk:AutoSelectTextBox Width="400" x:Name="shipEMailLabel" VerticalContentAlignment="Center" FontWeight="Normal" IsReadOnly="True" BorderThickness="0" AutoSelectBehavior="OnFocus" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<Button Name="buttonSave" Grid.Column="1" Grid.Row="0" Margin="2" Click="buttonSave_Click" BorderThickness="0" Background="Transparent" Visibility="Hidden">
|
<Button Name="buttonSave" Grid.Column="1" Grid.Row="0" Margin="2" Click="buttonSave_Click" BorderThickness="0" Background="Transparent" Visibility="Hidden">
|
||||||
|
|||||||
@ -15,6 +15,8 @@ using ENI2.Util;
|
|||||||
|
|
||||||
using ENI2.EditControls;
|
using ENI2.EditControls;
|
||||||
using System.Windows.Input;
|
using System.Windows.Input;
|
||||||
|
using System.Linq;
|
||||||
|
using ENI2.SheetDisplayControls;
|
||||||
|
|
||||||
namespace ENI2
|
namespace ENI2
|
||||||
{
|
{
|
||||||
@ -29,7 +31,7 @@ namespace ENI2
|
|||||||
private readonly List<MessageGroup> _listBoxList = new List<MessageGroup>();
|
private readonly List<MessageGroup> _listBoxList = new List<MessageGroup>();
|
||||||
private List<Message> _messages;
|
private List<Message> _messages;
|
||||||
private readonly Dictionary<string, DetailBaseControl> controlCache = new Dictionary<string, DetailBaseControl>();
|
private readonly Dictionary<string, DetailBaseControl> controlCache = new Dictionary<string, DetailBaseControl>();
|
||||||
// private readonly Dictionary<Message.NotificationClass, string> messageClassControlDict = new Dictionary<Message.NotificationClass, string>();
|
// private readonly Dictionary<Message.NotificationClass, string> messageClassControlDict = new Dictionary<Message.NotificationClass, string>();
|
||||||
private readonly object messageListLock = new object();
|
private readonly object messageListLock = new object();
|
||||||
private readonly HighlightService highlightService = new HighlightService();
|
private readonly HighlightService highlightService = new HighlightService();
|
||||||
|
|
||||||
@ -41,7 +43,7 @@ namespace ENI2
|
|||||||
|
|
||||||
#region Properties
|
#region Properties
|
||||||
|
|
||||||
public MessageCore Core { get; private set; }
|
public MessageCore Core { get; private set; }
|
||||||
|
|
||||||
public bool LockedByOtherUser { get; set; }
|
public bool LockedByOtherUser { get; set; }
|
||||||
|
|
||||||
@ -63,7 +65,7 @@ namespace ENI2
|
|||||||
get
|
get
|
||||||
{
|
{
|
||||||
// Bedingung:
|
// Bedingung:
|
||||||
// wenn in einer Meldeklasse zwar Daten vorhanden sind, eingespielt durch Excel import oder
|
// wenn in einer Meldeklasse zwar Daten vorhanden sind, eingespielt durch Excel import oder
|
||||||
// Handeingabe, diese aber NICHT gesendet wurden.
|
// Handeingabe, diese aber NICHT gesendet wurden.
|
||||||
// TODO: Hier wird noch ein Flag benötigt, dass die erfolgte Anzeige des Warndialogs speichert
|
// TODO: Hier wird noch ein Flag benötigt, dass die erfolgte Anzeige des Warndialogs speichert
|
||||||
List<string> result = new List<string>();
|
List<string> result = new List<string>();
|
||||||
@ -72,7 +74,7 @@ namespace ENI2
|
|||||||
{
|
{
|
||||||
if (((aMessage.InternalStatus == Message.BSMDStatus.UPDATED) ||
|
if (((aMessage.InternalStatus == Message.BSMDStatus.UPDATED) ||
|
||||||
(aMessage.InternalStatus == Message.BSMDStatus.SAVED)) && // ||
|
(aMessage.InternalStatus == Message.BSMDStatus.SAVED)) && // ||
|
||||||
// (aMessage.InternalStatus == Message.BSMDStatus.EXCEL)) &&
|
// (aMessage.InternalStatus == Message.BSMDStatus.EXCEL)) &&
|
||||||
!aMessage.UnsentMessageWarningShown)
|
!aMessage.UnsentMessageWarningShown)
|
||||||
{
|
{
|
||||||
aMessage.UnsentMessageWarningShown = true;
|
aMessage.UnsentMessageWarningShown = true;
|
||||||
@ -80,7 +82,7 @@ namespace ENI2
|
|||||||
result.Add(aMessage.MessageNotificationClassDisplay);
|
result.Add(aMessage.MessageNotificationClassDisplay);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -106,55 +108,89 @@ namespace ENI2
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool HasCriticalInfoMissing(out string messageText)
|
public bool HasCriticalInfoMissing(out string messageText, string locode)
|
||||||
{
|
{
|
||||||
messageText = "";
|
messageText = "";
|
||||||
// Hier haben wir Logik für Spezialfälle, z.B. dass für BRE und BRV bestimmte Meldeklassen gesendet werden *müssen*
|
// Hier haben wir Logik für Spezialfälle, z.B. dass für BRE und BRV bestimmte Meldeklassen gesendet werden *müssen*
|
||||||
|
|
||||||
if(this.Core.PoC.Equals("DEBRV") || this.Core.PoC.Equals("DEBRE"))
|
switch (locode)
|
||||||
{
|
{
|
||||||
foreach(Message aMessage in _messages)
|
case "DEBRV":
|
||||||
{
|
case "DEBRE":
|
||||||
if((aMessage.MessageNotificationClass == Message.NotificationClass.NOA_NOD) && (aMessage.InternalStatus != Message.BSMDStatus.CONFIRMED)) { messageText = "NOA_NOD"; return true; }
|
{
|
||||||
if ((aMessage.MessageNotificationClass == Message.NotificationClass.AGNT) && (aMessage.InternalStatus != Message.BSMDStatus.CONFIRMED)) { messageText = "AGNT"; return true; }
|
foreach (Message aMessage in _messages)
|
||||||
if ((aMessage.MessageNotificationClass == Message.NotificationClass.INFO) && (aMessage.InternalStatus != Message.BSMDStatus.CONFIRMED)) { messageText = "INFO"; return true; }
|
{
|
||||||
if ((aMessage.MessageNotificationClass == Message.NotificationClass.SEC) && (aMessage.InternalStatus != Message.BSMDStatus.CONFIRMED)) { messageText = "SEC"; return true; }
|
if ((aMessage.MessageNotificationClass == Message.NotificationClass.NOA_NOD) && (aMessage.InternalStatus != Message.BSMDStatus.CONFIRMED)) { messageText = "NOA_NOD"; return true; }
|
||||||
if ((aMessage.MessageNotificationClass == Message.NotificationClass.TIEFA) && (aMessage.InternalStatus != Message.BSMDStatus.CONFIRMED)) { messageText = "TIEFA"; return true; }
|
if ((aMessage.MessageNotificationClass == Message.NotificationClass.AGNT) && (aMessage.InternalStatus != Message.BSMDStatus.CONFIRMED)) { messageText = "AGNT"; return true; }
|
||||||
}
|
if ((aMessage.MessageNotificationClass == Message.NotificationClass.INFO) && (aMessage.InternalStatus != Message.BSMDStatus.CONFIRMED)) { messageText = "INFO"; return true; }
|
||||||
}
|
if ((aMessage.MessageNotificationClass == Message.NotificationClass.SEC) && (aMessage.InternalStatus != Message.BSMDStatus.CONFIRMED)) { messageText = "SEC"; return true; }
|
||||||
|
if ((aMessage.MessageNotificationClass == Message.NotificationClass.TIEFA) && (aMessage.InternalStatus != Message.BSMDStatus.CONFIRMED)) { messageText = "TIEFA"; return true; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "DEHAM":
|
||||||
|
foreach (Message aMessage in _messages)
|
||||||
|
{
|
||||||
|
if ((aMessage.MessageNotificationClass == Message.NotificationClass.SERV) && (aMessage.InternalStatus != Message.BSMDStatus.CONFIRMED)) { messageText = "SERV"; return true; }
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Construction
|
#region Construction
|
||||||
|
|
||||||
public DetailRootControl(MessageCore aCore)
|
public DetailRootControl(MessageCore aCore, ReportingParty.ShipcallDisplayModeEnum displayMode)
|
||||||
{
|
{
|
||||||
Core = aCore;
|
Core = aCore;
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
shipNameLabel.Text = aCore.Shipname;
|
shipNameLabel.Text = aCore.Shipname;
|
||||||
shipEMailLabel.Text = aCore.HerbergEmailContactReportingVessel;
|
shipEMailLabel.Text = aCore.HerbergEmailContactReportingVessel;
|
||||||
displayIdLabel.Text = aCore.DisplayId;
|
displayIdLabel.Text = aCore.DisplayId;
|
||||||
|
|
||||||
|
|
||||||
// Listbox befüllen
|
// Unterscheidung in welchem Darstellungs-Mode der Anlauf dargestellt wird (Classic oder Formblatt)
|
||||||
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textOverview, MessageGroupControlType = typeof(OverViewDetailControl), ImagePath = "Resources/documents.png" });
|
|
||||||
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textPortCall, MessageGroupControlType = typeof(PortCallDetailControl), ImagePath = "Resources/eye_blue.png" });
|
|
||||||
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textPortNotification, MessageGroupControlType = typeof(PortNotificationDetailControl), ImagePath = "Resources/anchor.png" });
|
|
||||||
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textWaste, MessageGroupControlType = typeof(WasteDetailControl), ImagePath = "Resources/garbage.png" });
|
|
||||||
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textArrivalNotification, MessageGroupControlType = typeof(ArrivalNotificationDetailControl), ImagePath = "Resources/arrow_down_right_red.png" });
|
|
||||||
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textSecurity, MessageGroupControlType = typeof(SecurityDetailControl), ImagePath = "Resources/shield_yellow.png" });
|
|
||||||
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textPSC72h, MessageGroupControlType = typeof(PSC72hDetailControl), ImagePath = "Resources/alarmclock.png" });
|
|
||||||
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textMDH, MessageGroupControlType = typeof(MaritimeHealthDeclarationDetailControl), ImagePath = "Resources/medical_bag.png" });
|
|
||||||
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textDepartureNotification, MessageGroupControlType = typeof(DepartureNotificationDetailControl), ImagePath = "Resources/arrow_up_right_green.png" });
|
|
||||||
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textShipData, MessageGroupControlType = typeof(ShipDataDetailControl), ImagePath = "Resources/containership.png" });
|
|
||||||
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textBorderPolice, MessageGroupControlType = typeof(BorderPoliceDetailControl), ImagePath = "Resources/policeman_german.png" });
|
|
||||||
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textDGArrival, MessageGroupControlType = typeof(DangerousGoodsDetailControl), ImagePath = "Resources/sign_warning_radiation.png" });
|
|
||||||
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textDGDeparture, MessageGroupControlType = typeof(DangerousGoodsDetailControl), ImagePath = "Resources/sign_warning_radiation.png" });
|
|
||||||
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textTowage, MessageGroupControlType = typeof(TowageDetailControl), ImagePath = "Resources/ship2.png" });
|
|
||||||
|
|
||||||
|
if (displayMode == ReportingParty.ShipcallDisplayModeEnum.CLASSIC)
|
||||||
|
{
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textOverview, MessageGroupControlType = typeof(OverViewDetailControl), ImagePath = "Resources/documents.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textPortCall, MessageGroupControlType = typeof(PortCallDetailControl), ImagePath = "Resources/eye_blue.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textPortNotification, MessageGroupControlType = typeof(PortNotificationDetailControl), ImagePath = "Resources/anchor.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textWaste, MessageGroupControlType = typeof(WasteDetailControl), ImagePath = "Resources/garbage.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textArrivalNotification, MessageGroupControlType = typeof(ArrivalNotificationDetailControl), ImagePath = "Resources/arrow_down_right_red.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textSecurity, MessageGroupControlType = typeof(SecurityDetailControl), ImagePath = "Resources/shield_yellow.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textPSC72h, MessageGroupControlType = typeof(PSC72hDetailControl), ImagePath = "Resources/alarmclock.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textMDH, MessageGroupControlType = typeof(MaritimeHealthDeclarationDetailControl), ImagePath = "Resources/medical_bag.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textDepartureNotification, MessageGroupControlType = typeof(DepartureNotificationDetailControl), ImagePath = "Resources/arrow_up_right_green.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textShipData, MessageGroupControlType = typeof(ShipDataDetailControl), ImagePath = "Resources/containership.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textBorderPolice, MessageGroupControlType = typeof(BorderPoliceDetailControl), ImagePath = "Resources/policeman_german.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textDGArrival, MessageGroupControlType = typeof(DangerousGoodsDetailControl), ImagePath = "Resources/sign_warning_radiation.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textDGDeparture, MessageGroupControlType = typeof(DangerousGoodsDetailControl), ImagePath = "Resources/sign_warning_radiation.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textTowage, MessageGroupControlType = typeof(TowageDetailControl), ImagePath = "Resources/ship2.png" });
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.textOverview, MessageGroupControlType = typeof(OverViewDetailControl), ImagePath = "Resources/documents.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text1Voyage, MessageGroupControlType = typeof(VoyageControl), ImagePath = "Resources/ship2.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text2PortCall, MessageGroupControlType = typeof(PortControl), ImagePath = "Resources/anchor.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text3PreArrival, MessageGroupControlType = typeof(PreArrivalControl), ImagePath = "Resources/arrow_down_right_red.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text4PreDeparture, MessageGroupControlType = typeof(PreDepartureControl), ImagePath = "Resources/arrow_up_right_green.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text5ShipData, MessageGroupControlType = typeof(ShipDataControl), ImagePath = "Resources/containership.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text6CrewDataOnArrival, MessageGroupControlType = typeof(CrewPreArrivalControl), ImagePath = "Resources/arrival_worker.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text7CrewDeparture, MessageGroupControlType = typeof(CrewDepartureControl), ImagePath = "Resources/departure_worker.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text8PassengerArrival, MessageGroupControlType = typeof(PassengerPreArrivalControl), ImagePath = "Resources/arrival_user.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text9PassengerDeparture, MessageGroupControlType = typeof(PassengerDepartureControl), ImagePath = "Resources/departure_user.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text10DangerousCargoArrival, MessageGroupControlType = typeof(DangerousCargoControl), ImagePath = "Resources/sign_warning_radiation.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text11DangerousCargoDeparture, MessageGroupControlType = typeof(DangerousCargoControl), ImagePath = "Resources/sign_warning_radiation.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text12ATAATD, MessageGroupControlType = typeof(ATAControl), ImagePath = "Resources/clock.png" });
|
||||||
|
this._listBoxList.Add(new MessageGroup() { MessageGroupName = Properties.Resources.text13WasteReceipts, MessageGroupControlType = typeof(WasteReceiptsControl), ImagePath = "Resources/garbage.png" });
|
||||||
|
this.leftColumnDefinition.Width = new GridLength(260);
|
||||||
|
}
|
||||||
|
|
||||||
this.listBoxMessages.ItemsSource = this._listBoxList;
|
this.listBoxMessages.ItemsSource = this._listBoxList;
|
||||||
|
|
||||||
@ -163,7 +199,7 @@ namespace ENI2
|
|||||||
_messages.AddRange(missingMessages);
|
_messages.AddRange(missingMessages);
|
||||||
|
|
||||||
BindingOperations.EnableCollectionSynchronization(_messages, this.messageListLock);
|
BindingOperations.EnableCollectionSynchronization(_messages, this.messageListLock);
|
||||||
Dispatcher.BeginInvoke((Action)(() => this.listBoxMessages.SelectedIndex = 0));
|
Dispatcher.BeginInvoke((System.Action)(() => this.listBoxMessages.SelectedIndex = 0));
|
||||||
|
|
||||||
RoutedCommand saveCmd = new RoutedCommand();
|
RoutedCommand saveCmd = new RoutedCommand();
|
||||||
saveCmd.InputGestures.Add(new KeyGesture(Key.S, ModifierKeys.Control));
|
saveCmd.InputGestures.Add(new KeyGesture(Key.S, ModifierKeys.Control));
|
||||||
@ -190,7 +226,8 @@ namespace ENI2
|
|||||||
public void CoreChanged(MessageCore newCore)
|
public void CoreChanged(MessageCore newCore)
|
||||||
{
|
{
|
||||||
this.Core = newCore;
|
this.Core = newCore;
|
||||||
Application.Current.Dispatcher.Invoke(delegate
|
this.ReloadCore();
|
||||||
|
System.Windows.Application.Current.Dispatcher.Invoke(delegate
|
||||||
{
|
{
|
||||||
if(controlCache.ContainsKey(Properties.Resources.textOverview))
|
if(controlCache.ContainsKey(Properties.Resources.textOverview))
|
||||||
{
|
{
|
||||||
@ -236,6 +273,8 @@ namespace ENI2
|
|||||||
// Spezial-Balkon für die Wiederverwendung von HAZD / HAZA als ein Control (es tut mir leid :D)
|
// Spezial-Balkon für die Wiederverwendung von HAZD / HAZA als ein Control (es tut mir leid :D)
|
||||||
if (mg.MessageGroupName.Equals(Properties.Resources.textDGDeparture))
|
if (mg.MessageGroupName.Equals(Properties.Resources.textDGDeparture))
|
||||||
((DangerousGoodsDetailControl)detailControl).IsDeparture = true;
|
((DangerousGoodsDetailControl)detailControl).IsDeparture = true;
|
||||||
|
if (mg.MessageGroupName.Equals(Properties.Resources.text11DangerousCargoDeparture))
|
||||||
|
((DangerousCargoControl)detailControl).IsDeparture = true;
|
||||||
detailControl.Core = Core;
|
detailControl.Core = Core;
|
||||||
detailControl.Messages = _messages;
|
detailControl.Messages = _messages;
|
||||||
detailControl.LockedByOtherUser = this.LockedByOtherUser;
|
detailControl.LockedByOtherUser = this.LockedByOtherUser;
|
||||||
@ -261,7 +300,7 @@ namespace ENI2
|
|||||||
detailControl.SetEnabled(isEnabled);
|
detailControl.SetEnabled(isEnabled);
|
||||||
|
|
||||||
if (!isEnabled && (detailControl is OverViewDetailControl control) && !(Core.Cancelled ?? false))
|
if (!isEnabled && (detailControl is OverViewDetailControl control) && !(Core.Cancelled ?? false))
|
||||||
control.ShowLockedBy(this.LockedBy);
|
control.ShowLockedBy(this.LockedBy);
|
||||||
|
|
||||||
controlCache.Add(mg.MessageGroupName, detailControl);
|
controlCache.Add(mg.MessageGroupName, detailControl);
|
||||||
this.buttonSave.Visibility = Visibility.Hidden;
|
this.buttonSave.Visibility = Visibility.Hidden;
|
||||||
@ -295,7 +334,7 @@ namespace ENI2
|
|||||||
MessageCore newCore = new MessageCore();
|
MessageCore newCore = new MessageCore();
|
||||||
cdd.NewCore = newCore;
|
cdd.NewCore = newCore;
|
||||||
cdd.OldCore = this.Core;
|
cdd.OldCore = this.Core;
|
||||||
|
|
||||||
cdd.Closed += (senderDialog, closeArgs) =>
|
cdd.Closed += (senderDialog, closeArgs) =>
|
||||||
{
|
{
|
||||||
CopyDeclarationDialog closedDialog = senderDialog as CopyDeclarationDialog;
|
CopyDeclarationDialog closedDialog = senderDialog as CopyDeclarationDialog;
|
||||||
@ -328,19 +367,19 @@ namespace ENI2
|
|||||||
|
|
||||||
if(existingCore != null)
|
if(existingCore != null)
|
||||||
{
|
{
|
||||||
if(MessageBox.Show(Properties.Resources.textDeclarationAlreadyExists, Properties.Resources.textCaptionExists,
|
if(MessageBox.Show(Properties.Resources.textDeclarationAlreadyExists, Properties.Resources.textCaptionExists,
|
||||||
MessageBoxButton.OKCancel, MessageBoxImage.Question) == MessageBoxResult.OK)
|
MessageBoxButton.OKCancel, MessageBoxImage.Question) == MessageBoxResult.OK)
|
||||||
{
|
{
|
||||||
List<Message> existingMessages = DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).GetMessagesForCore(existingCore, DBManager.MessageLoad.ALL);
|
List<Message> existingMessages = DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).GetMessagesForCore(existingCore, DBManager.MessageLoad.ALL);
|
||||||
foreach(Message existingMessage in existingMessages)
|
foreach(Message existingMessage in existingMessages)
|
||||||
{
|
{
|
||||||
if((existingMessage.InternalStatus == Message.BSMDStatus.SENT) &&
|
if((existingMessage.InternalStatus == Message.BSMDStatus.SENT) &&
|
||||||
(existingMessage.MessageNotificationClass != Message.NotificationClass.VISIT) &&
|
(existingMessage.MessageNotificationClass != Message.NotificationClass.VISIT) &&
|
||||||
(existingMessage.MessageNotificationClass != Message.NotificationClass.TRANSIT))
|
(existingMessage.MessageNotificationClass != Message.NotificationClass.TRANSIT))
|
||||||
{
|
{
|
||||||
MessageBox.Show(Properties.Resources.textMessagesAlreadySent, Properties.Resources.textCaptionError, MessageBoxButton.OK, MessageBoxImage.Stop);
|
MessageBox.Show(Properties.Resources.textMessagesAlreadySent, Properties.Resources.textCaptionError, MessageBoxButton.OK, MessageBoxImage.Stop);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// delete all existing data of core
|
// delete all existing data of core
|
||||||
@ -354,7 +393,7 @@ namespace ENI2
|
|||||||
// Bearbeitungsinformationen für bestehende ID-Beantragung beibehalten, falls bereits vorhanden
|
// Bearbeitungsinformationen für bestehende ID-Beantragung beibehalten, falls bereits vorhanden
|
||||||
|
|
||||||
if(existingCore.IsTransit &&
|
if(existingCore.IsTransit &&
|
||||||
(existingMessage.MessageNotificationClass == Message.NotificationClass.TRANSIT) &&
|
(existingMessage.MessageNotificationClass == Message.NotificationClass.TRANSIT) &&
|
||||||
(existingMessage.InternalStatus == Message.BSMDStatus.CONFIRMED))
|
(existingMessage.InternalStatus == Message.BSMDStatus.CONFIRMED))
|
||||||
{
|
{
|
||||||
skipCopyTransit = true;
|
skipCopyTransit = true;
|
||||||
@ -386,7 +425,7 @@ namespace ENI2
|
|||||||
|
|
||||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(newCore);
|
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(newCore);
|
||||||
|
|
||||||
// Meldeklassen für neuen Anlauf erzeugen
|
// Meldeklassen für neuen Anlauf erzeugen
|
||||||
List<Message> newMessages = new List<Message>();
|
List<Message> newMessages = new List<Message>();
|
||||||
foreach (Message oldMessage in this._messages)
|
foreach (Message oldMessage in this._messages)
|
||||||
{
|
{
|
||||||
@ -414,6 +453,7 @@ namespace ENI2
|
|||||||
newMessage.SaveElements();
|
newMessage.SaveElements();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).LoadXtraData(newCore); // reload data from DB and set all rel properites
|
||||||
this.OnOpenNewCoreRequested(newCore);
|
this.OnOpenNewCoreRequested(newCore);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -424,12 +464,12 @@ namespace ENI2
|
|||||||
{
|
{
|
||||||
this.LockedByOtherUser = true; // fake flag
|
this.LockedByOtherUser = true; // fake flag
|
||||||
|
|
||||||
// clear existing controls
|
// clear existing controls
|
||||||
this.detailView.Children.Clear();
|
this.detailView.Children.Clear();
|
||||||
this.controlCache.Clear();
|
this.controlCache.Clear();
|
||||||
|
|
||||||
// return to "new" overview
|
// return to "new" overview
|
||||||
Dispatcher.BeginInvoke((Action)(() => this.listBoxMessages_SelectionChanged(this, null)));
|
Dispatcher.BeginInvoke((System.Action)(() => this.listBoxMessages_SelectionChanged(this, null)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DetailControl_ResetControlCache(string messageGroupName)
|
private void DetailControl_ResetControlCache(string messageGroupName)
|
||||||
@ -441,12 +481,13 @@ namespace ENI2
|
|||||||
|
|
||||||
private void buttonSave_Click(object sender, RoutedEventArgs e)
|
private void buttonSave_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
MessageBoxResult result = MessageBox.Show(Properties.Resources.textQuestionSavePage, Properties.Resources.textConfirmation,
|
MessageBoxResult result = MessageBox.Show(Properties.Resources.textQuestionSavePage, Properties.Resources.textConfirmation,
|
||||||
MessageBoxButton.YesNo, MessageBoxImage.Question);
|
MessageBoxButton.YesNo, MessageBoxImage.Question);
|
||||||
if (result == MessageBoxResult.Yes)
|
if (result == MessageBoxResult.Yes)
|
||||||
{
|
{
|
||||||
|
|
||||||
Util.UIHelper.SetBusyState();
|
Util.UIHelper.SetBusyState();
|
||||||
|
int currentMainTabIndex = -1;
|
||||||
|
|
||||||
if (this.detailView.Children[0] is DetailBaseControl currentControl)
|
if (this.detailView.Children[0] is DetailBaseControl currentControl)
|
||||||
{
|
{
|
||||||
@ -461,10 +502,24 @@ namespace ENI2
|
|||||||
// ggf. hat sich die Ticketnr geändert..
|
// ggf. hat sich die Ticketnr geändert..
|
||||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(currentControl.Core);
|
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(currentControl.Core);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.DetailControl_RequestReload(this.Core.Id.Value);
|
currentMainTabIndex = currentControl.SelectedTabIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.DetailControl_RequestReload(this.Core.Id.Value);
|
||||||
|
|
||||||
|
System.Action<int> SetTabAction = x =>
|
||||||
|
{
|
||||||
|
// this hopefully happens *after* the view was completely reloaded
|
||||||
|
if (this.detailView.Children[0] is DetailBaseControl currentNewControl)
|
||||||
|
{
|
||||||
|
currentNewControl.SelectedTabIndex = x;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (currentMainTabIndex >= 0)
|
||||||
|
Dispatcher.BeginInvoke(SetTabAction, currentMainTabIndex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SaveMessage(Message message)
|
private void SaveMessage(Message message)
|
||||||
@ -473,9 +528,14 @@ namespace ENI2
|
|||||||
{
|
{
|
||||||
if ((message.Status == Message.MessageStatus.ACCEPTED) &&
|
if ((message.Status == Message.MessageStatus.ACCEPTED) &&
|
||||||
((message.InternalStatus == Message.BSMDStatus.CONFIRMED) || (message.InternalStatus == Message.BSMDStatus.VIOLATION)))
|
((message.InternalStatus == Message.BSMDStatus.CONFIRMED) || (message.InternalStatus == Message.BSMDStatus.VIOLATION)))
|
||||||
|
{
|
||||||
message.InternalStatus = Message.BSMDStatus.UPDATED;
|
message.InternalStatus = Message.BSMDStatus.UPDATED;
|
||||||
|
message.Status = null; // reset send status
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
message.InternalStatus = Message.BSMDStatus.SAVED;
|
message.InternalStatus = Message.BSMDStatus.SAVED;
|
||||||
|
}
|
||||||
|
|
||||||
string userName = "?";
|
string userName = "?";
|
||||||
if(App.UserId.HasValue && DBManager.Instance.GetReportingPartyDict().ContainsKey(App.UserId.Value))
|
if(App.UserId.HasValue && DBManager.Instance.GetReportingPartyDict().ContainsKey(App.UserId.Value))
|
||||||
@ -492,7 +552,7 @@ namespace ENI2
|
|||||||
|
|
||||||
if(message.MessageNotificationClass == Message.NotificationClass.ATA)
|
if(message.MessageNotificationClass == Message.NotificationClass.ATA)
|
||||||
{
|
{
|
||||||
DetailBaseControl currentControl = this.detailView.Children[0] as DetailBaseControl;
|
DetailBaseControl currentControl = this.detailView.Children[0] as DetailBaseControl;
|
||||||
// ggf. hat sich die Ticketnr geändert..
|
// ggf. hat sich die Ticketnr geändert..
|
||||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(currentControl.Core);
|
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(currentControl.Core);
|
||||||
}
|
}
|
||||||
@ -509,12 +569,13 @@ namespace ENI2
|
|||||||
|
|
||||||
private void buttonSaveAll_Click(object sender, RoutedEventArgs e)
|
private void buttonSaveAll_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
MessageBoxResult result = MessageBox.Show(Properties.Resources.textQuestionSaveAll, Properties.Resources.textConfirmation,
|
MessageBoxResult result = MessageBox.Show(Properties.Resources.textQuestionSaveAll, Properties.Resources.textConfirmation,
|
||||||
MessageBoxButton.YesNo, MessageBoxImage.Question);
|
MessageBoxButton.YesNo, MessageBoxImage.Question);
|
||||||
if (result == MessageBoxResult.Yes)
|
if (result == MessageBoxResult.Yes)
|
||||||
{
|
{
|
||||||
|
|
||||||
Util.UIHelper.SetBusyState();
|
Util.UIHelper.SetBusyState();
|
||||||
|
int currentMainTabIndex = -1;
|
||||||
|
|
||||||
foreach (Message message in this._messages)
|
foreach (Message message in this._messages)
|
||||||
{
|
{
|
||||||
@ -525,16 +586,33 @@ namespace ENI2
|
|||||||
if (currentControl is OverViewDetailControl)
|
if (currentControl is OverViewDetailControl)
|
||||||
{
|
{
|
||||||
// ggf. hat sich die Ticketnr geändert..
|
// ggf. hat sich die Ticketnr geändert..
|
||||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(currentControl.Core);
|
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(currentControl.Core);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
currentMainTabIndex = currentControl.SelectedTabIndex;
|
||||||
|
Trace.WriteLine($"Last selected tab index: {currentMainTabIndex}");
|
||||||
|
|
||||||
this.buttonSaveAll.Visibility = Visibility.Hidden;
|
this.buttonSaveAll.Visibility = Visibility.Hidden;
|
||||||
this.buttonSave.Visibility = Visibility.Hidden;
|
this.buttonSave.Visibility = Visibility.Hidden;
|
||||||
|
|
||||||
|
this.DetailControl_RequestReload(this.Core.Id.Value);
|
||||||
|
|
||||||
|
Action<int> SetTabAction = x =>
|
||||||
|
{
|
||||||
|
// this hopefully happens *after* the view was completely reloaded
|
||||||
|
if (this.detailView.Children[0] is DetailBaseControl currentNewControl)
|
||||||
|
{
|
||||||
|
currentNewControl.SelectedTabIndex = x;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if(currentMainTabIndex >= 0)
|
||||||
|
Dispatcher.BeginInvoke(SetTabAction, currentMainTabIndex);
|
||||||
}
|
}
|
||||||
this.DetailControl_RequestReload(this.Core.Id.Value);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DetailControl_NotificationClassChanged(Message.NotificationClass notificationClass)
|
private void DetailControl_NotificationClassChanged(Message.NotificationClass? notificationClass)
|
||||||
{
|
{
|
||||||
// in der Übersicht die Meldeklasse als geändert markieren..?
|
// in der Übersicht die Meldeklasse als geändert markieren..?
|
||||||
this.buttonSaveAll.Visibility = Visibility.Visible;
|
this.buttonSaveAll.Visibility = Visibility.Visible;
|
||||||
@ -586,7 +664,7 @@ namespace ENI2
|
|||||||
|
|
||||||
private void ShortCutValidate(object sender, ExecutedRoutedEventArgs e)
|
private void ShortCutValidate(object sender, ExecutedRoutedEventArgs e)
|
||||||
{
|
{
|
||||||
this.DetailControl_RequestValidate();
|
this.DetailControl_RequestValidate(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DetailControl_RequestReload(Guid id)
|
private void DetailControl_RequestReload(Guid id)
|
||||||
@ -606,12 +684,15 @@ namespace ENI2
|
|||||||
this.detailView.Children.Clear();
|
this.detailView.Children.Clear();
|
||||||
this.controlCache.Clear();
|
this.controlCache.Clear();
|
||||||
|
|
||||||
// return to "new" overviewdan
|
int currentIndex = this.listBoxMessages.SelectedIndex;
|
||||||
Dispatcher.BeginInvoke((Action)(() =>
|
|
||||||
|
// return to "new" overview
|
||||||
|
Dispatcher.BeginInvoke((System.Action)(() =>
|
||||||
{
|
{
|
||||||
this.listBoxMessages_SelectionChanged(this, null);
|
this.listBoxMessages_SelectionChanged(this, null);
|
||||||
shipNameLabel.Text = this.Core.Shipname;
|
shipNameLabel.Text = this.Core.Shipname;
|
||||||
shipEMailLabel.Text = this.Core.HerbergEmailContactReportingVessel;
|
shipEMailLabel.Text = this.Core.HerbergEmailContactReportingVessel;
|
||||||
|
this.listBoxMessages.SelectedIndex = currentIndex;
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
@ -696,16 +777,16 @@ namespace ENI2
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DetailControl_RequestValidate()
|
private void DetailControl_RequestValidate(bool showDialog)
|
||||||
{
|
{
|
||||||
this.Validate(true, out _, out _);
|
this.Validate(showDialog, out _, out _);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Validate(bool showMessages, out List<MessageViolation> vViolations, out List<MessageError> vErrors)
|
private void Validate(bool showMessages, out List<MessageViolation> vViolations, out List<MessageError> vErrors)
|
||||||
{
|
{
|
||||||
vViolations = new List<MessageViolation>();
|
vViolations = new List<MessageViolation>();
|
||||||
vErrors = new List<MessageError>();
|
vErrors = new List<MessageError>();
|
||||||
|
|
||||||
// TODO: clear highlighting
|
// TODO: clear highlighting
|
||||||
|
|
||||||
Util.UIHelper.SetBusyState();
|
Util.UIHelper.SetBusyState();
|
||||||
@ -713,17 +794,27 @@ namespace ENI2
|
|||||||
RuleEngine ruleEngine = new RuleEngine();
|
RuleEngine ruleEngine = new RuleEngine();
|
||||||
foreach (Message aMessage in _messages)
|
foreach (Message aMessage in _messages)
|
||||||
{
|
{
|
||||||
// XXX : TODO wegmachen wenn CREWD/PASD kommt
|
|
||||||
if ((aMessage.MessageNotificationClass == Message.NotificationClass.PASD) ||
|
|
||||||
(aMessage.MessageNotificationClass == Message.NotificationClass.CREWD))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!aMessage.EvaluateForValidation(this.Core.IsTransit)) continue;
|
if (!aMessage.EvaluateForValidation(this.Core.IsTransit)) continue;
|
||||||
|
|
||||||
List<MessageError> errors = new List<MessageError>();
|
List<MessageError> errors = new List<MessageError>();
|
||||||
List<MessageViolation> violations = new List<MessageViolation>();
|
List<MessageViolation> violations = new List<MessageViolation>();
|
||||||
ruleEngine.ValidateMessage(aMessage, out errors, out violations);
|
ruleEngine.ValidateMessage(aMessage, out errors, out violations);
|
||||||
|
|
||||||
|
if (errors.Count > 0)
|
||||||
|
aMessage.ErrorCount = errors.Count;
|
||||||
|
else
|
||||||
|
aMessage.ErrorCount = null;
|
||||||
|
if (violations.Count > 0)
|
||||||
|
{
|
||||||
|
aMessage.ViolationCount = violations.Count;
|
||||||
|
aMessage.PositionViolationCount = violations.Count(v => !v.Identifier.IsNullOrEmpty());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
aMessage.ViolationCount = null;
|
||||||
|
aMessage.PositionViolationCount = null;
|
||||||
|
}
|
||||||
|
|
||||||
string messageGroup = this.MessageGroupForMessage(aMessage);
|
string messageGroup = this.MessageGroupForMessage(aMessage);
|
||||||
|
|
||||||
if (messageGroup != null)
|
if (messageGroup != null)
|
||||||
@ -738,17 +829,22 @@ namespace ENI2
|
|||||||
vViolations.AddRange(violations);
|
vViolations.AddRange(violations);
|
||||||
}
|
}
|
||||||
|
|
||||||
#region 12.11.18 / 6.3.21 / 23.5.22: globale Plausi-Prüfungen
|
#region 12.11.18 / 6.3.21 / 23.5.22 / 26.10.24: globale Plausi-Prüfungen
|
||||||
Message crewaMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.CREW);
|
|
||||||
|
Message crewaMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.CREWA);
|
||||||
Message crewdMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.CREWD);
|
Message crewdMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.CREWD);
|
||||||
Message pasaMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.PAS);
|
Message pasaMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.PASA);
|
||||||
Message pasdMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.PASD);
|
Message pasdMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.PASD);
|
||||||
Message pobaMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.POBA);
|
Message pobaMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.POBA);
|
||||||
|
Message pobdMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.POBD);
|
||||||
Message secMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.SEC);
|
Message secMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.SEC);
|
||||||
Message noanodMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.NOA_NOD);
|
Message noanodMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.NOA_NOD);
|
||||||
Message mdhMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.MDH);
|
Message mdhMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.MDH);
|
||||||
Message was_rcptMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.WAS_RCPT);
|
Message was_rcptMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.WAS_RCPT);
|
||||||
Message wasMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.WAS);
|
Message wasMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.WAS);
|
||||||
|
Message servMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.SERV);
|
||||||
|
Message statMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.STAT);
|
||||||
|
Message pre72hMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.PRE72H);
|
||||||
|
|
||||||
#region CREW / PAS Count Plausibility
|
#region CREW / PAS Count Plausibility
|
||||||
|
|
||||||
@ -756,29 +852,43 @@ namespace ENI2
|
|||||||
{
|
{
|
||||||
POBA poba = pobaMessage.Elements[0] as POBA;
|
POBA poba = pobaMessage.Elements[0] as POBA;
|
||||||
|
|
||||||
if (crewaMessage.Elements.Count != poba.TotalCrewMembersOnBoardUponArrival)
|
if (crewaMessage.Elements.Count != (poba.TotalCrewMembersOnBoardUponArrival ?? 0))
|
||||||
{
|
{
|
||||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.IMPLAUSIBLE, "POBA crew member count different from CREW count!", null, "Crew count mismatch", null, "CREW");
|
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.IMPLAUSIBLE, "POBA crew member count different from CREW count!", null, "Crew count mismatch", null, "CREWA");
|
||||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||||
vViolations.Add(mv);
|
vViolations.Add(mv);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(pasaMessage.Elements.Count != poba.TotalPassengersOnBoardUponArrival)
|
if(pasaMessage.Elements.Count != (poba.TotalPassengersOnBoardUponArrival ?? 0))
|
||||||
{
|
{
|
||||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.IMPLAUSIBLE, "POBA passenger count different from PAS count!", null, "Passenger count mismatch", null, "PAS");
|
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.IMPLAUSIBLE, "POBA passenger count different from PAS count!", null, "Passenger count mismatch", null, "PASA");
|
||||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||||
vViolations.Add(mv);
|
vViolations.Add(mv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
POBD pobd = pobdMessage.Elements[0] as POBD;
|
||||||
|
|
||||||
|
if (crewdMessage.Elements.Count != (pobd.TotalCrewMembersOnBoardUponDeparture ?? 0))
|
||||||
|
{
|
||||||
|
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.IMPLAUSIBLE, "POBD crew member count different from CREW count!", null, "Crew count mismatch", null, "CREWD");
|
||||||
|
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||||
|
vViolations.Add(mv);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pasdMessage.Elements.Count != (pobd.TotalPassengersOnBoardUponDeparture ?? 0))
|
||||||
|
{
|
||||||
|
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.IMPLAUSIBLE, "POBD passenger count different from PAS count!", null, "Passenger count mismatch", null, "PASD");
|
||||||
|
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||||
|
vViolations.Add(mv);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region CREW/PAS Schengen Plausibility
|
#region CREW/PAS Schengen Plausibility
|
||||||
|
|
||||||
// Wir können davon ausgehen, dass bei allen Unterelementen die Flags gleich gesetzt sind. Das wird im Import und BorderPoliceDetailControl sichergestellt.
|
// Wir können davon ausgehen, dass bei allen Unterelementen die Flags gleich gesetzt sind. Das wird im Import und BorderPoliceDetailControl sichergestellt.
|
||||||
|
|
||||||
// XXX : TODO auskommentiert bis CREWD/PASD kommt
|
|
||||||
/*
|
|
||||||
|
|
||||||
if(crewaMessage.Elements.Count > 0)
|
if(crewaMessage.Elements.Count > 0)
|
||||||
{
|
{
|
||||||
@ -786,19 +896,7 @@ namespace ENI2
|
|||||||
bool crewaIsSchengen = crewaFirst.NotificationSchengen ?? false;
|
bool crewaIsSchengen = crewaFirst.NotificationSchengen ?? false;
|
||||||
if (!((crewaFirst.NotificationPAX ?? false) || crewaIsSchengen)) // mindestens eins der beiden
|
if (!((crewaFirst.NotificationPAX ?? false) || crewaIsSchengen)) // mindestens eins der beiden
|
||||||
{
|
{
|
||||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V181, "Wrong selection", null, "CREWA", null, "CREWA");
|
vErrors.Add(RuleEngine.CreateError(ValidationCode.V181, "Pax / Schengen: one must be set", null, Properties.Resources.textOverview, null, "CREWA")); ;
|
||||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
|
||||||
vViolations.Add(mv);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach(CREW crewa in crewaMessage.Elements)
|
|
||||||
{
|
|
||||||
if(crewaIsSchengen && !crewa.HasSchengenDetails)
|
|
||||||
{
|
|
||||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V182, "No Schengen details", null, "CREWA", crewa.Identifier, "CREWA");
|
|
||||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
|
||||||
vViolations.Add(mv);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -810,19 +908,7 @@ namespace ENI2
|
|||||||
bool crewdIsSchengen = crewdFirst.NotificationSchengen ?? false;
|
bool crewdIsSchengen = crewdFirst.NotificationSchengen ?? false;
|
||||||
if (!((crewdFirst.NotificationPAX ?? false) || crewdIsSchengen)) // mindestens eins der beiden
|
if (!((crewdFirst.NotificationPAX ?? false) || crewdIsSchengen)) // mindestens eins der beiden
|
||||||
{
|
{
|
||||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V181, "Wrong selection", null, "CREWD", null, "CREWD");
|
vErrors.Add(RuleEngine.CreateError(ValidationCode.V181, "Pax / Schengen: one must be set", null, Properties.Resources.textOverview, null, "CREWD")); ;
|
||||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
|
||||||
vViolations.Add(mv);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (CREWD crewd in crewdMessage.Elements)
|
|
||||||
{
|
|
||||||
if (crewdIsSchengen && !crewd.HasSchengenDetails)
|
|
||||||
{
|
|
||||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V182, "No Schengen details", null, "CREWD", crewd.Identifier, "CREWD");
|
|
||||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
|
||||||
vViolations.Add(mv);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -834,25 +920,7 @@ namespace ENI2
|
|||||||
bool pasIsPAX = pasFirst.NotificationPAX ?? false;
|
bool pasIsPAX = pasFirst.NotificationPAX ?? false;
|
||||||
if (!(pasIsPAX || pasIsSchengen)) // mindestens eins der beiden
|
if (!(pasIsPAX || pasIsSchengen)) // mindestens eins der beiden
|
||||||
{
|
{
|
||||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V201, "Wrong selection", null, "PASA", null, "PASA");
|
vErrors.Add(RuleEngine.CreateError (ValidationCode.V201, "Pax / Schengen: one must be set", null, Properties.Resources.textOverview, null, "PASA"));
|
||||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
|
||||||
vViolations.Add(mv);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (PAS pasa in pasaMessage.Elements)
|
|
||||||
{
|
|
||||||
if (pasIsSchengen && !pasa.HasSchengenDetails)
|
|
||||||
{
|
|
||||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V202, "No Schengen details", null, "PASA", pasa.Identifier, "PASA");
|
|
||||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
|
||||||
vViolations.Add(mv);
|
|
||||||
}
|
|
||||||
if(pasIsPAX && !pasa.HasPAXDetails)
|
|
||||||
{
|
|
||||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V203, "No PAX details", null, "PASA", pasa.Identifier, "PASA");
|
|
||||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
|
||||||
vViolations.Add(mv);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -865,30 +933,54 @@ namespace ENI2
|
|||||||
bool pasdIsPAX = pasdFirst.NotificationPAX ?? false;
|
bool pasdIsPAX = pasdFirst.NotificationPAX ?? false;
|
||||||
if (!(pasdIsPAX || pasdIsSchengen)) // mindestens eins der beiden
|
if (!(pasdIsPAX || pasdIsSchengen)) // mindestens eins der beiden
|
||||||
{
|
{
|
||||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V201, "Wrong selection", null, "PASD", null, "PASD");
|
vErrors.Add(RuleEngine.CreateError(ValidationCode.V201, "Pax / Schengen: one must be set", null, Properties.Resources.textOverview, null, "PASD"));
|
||||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
|
||||||
vViolations.Add(mv);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (PASD pasd in pasdMessage.Elements)
|
|
||||||
{
|
|
||||||
if (pasdIsSchengen && !pasd.HasSchengenDetails)
|
|
||||||
{
|
|
||||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V202, "No Schengen details", null, "PASD", pasd.Identifier, "PASD");
|
|
||||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
|
||||||
vViolations.Add(mv);
|
|
||||||
}
|
|
||||||
if (pasdIsPAX && !pasd.HasPAXDetails)
|
|
||||||
{
|
|
||||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V203, "No PAX details", null, "PASD", pasd.Identifier, "PASD");
|
|
||||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
|
||||||
vViolations.Add(mv);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
*/
|
#endregion
|
||||||
|
|
||||||
|
#region 7.11.23 > 12 Passagiere in PASA oder PASD -> CREW* und PAS* muss NotificationPAX gesetzt haben
|
||||||
|
|
||||||
|
if ((pasaMessage != null) && (pasaMessage.Elements.Count > 12))
|
||||||
|
{
|
||||||
|
PAS firstPASA = pasaMessage.Elements[0] as PAS;
|
||||||
|
if(!(firstPASA.NotificationPAX ?? false))
|
||||||
|
{
|
||||||
|
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.NO_PAX, "No PAX set (PASA > 12)", null, Properties.Resources.textOverview, null, "PASA");
|
||||||
|
vViolations.Add(mv);
|
||||||
|
}
|
||||||
|
|
||||||
|
if((crewaMessage != null) && (crewaMessage.Elements.Count > 0))
|
||||||
|
{
|
||||||
|
CREW firstCREW = crewaMessage.Elements[0] as CREW;
|
||||||
|
if(!(firstCREW.NotificationPAX ?? false))
|
||||||
|
{
|
||||||
|
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.NO_PAX, "No PAX set (PASA > 12)", null, Properties.Resources.textOverview, null, "CREWA");
|
||||||
|
vViolations.Add(mv);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if((pasdMessage != null) && (pasdMessage.Elements.Count > 12))
|
||||||
|
{
|
||||||
|
PASD firstPASD = pasdMessage.Elements[0] as PASD;
|
||||||
|
if(!(firstPASD.NotificationPAX ?? false))
|
||||||
|
{
|
||||||
|
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.NO_PAX, "No PAX set (PASD > 12)", null, Properties.Resources.textOverview, null, "PASD");
|
||||||
|
vViolations.Add(mv);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((crewdMessage != null) && (crewdMessage.Elements.Count > 0))
|
||||||
|
{
|
||||||
|
CREWD firstCREW = crewdMessage.Elements[0] as CREWD;
|
||||||
|
if(!(firstCREW.NotificationPAX ?? false))
|
||||||
|
{
|
||||||
|
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.NO_PAX, "No PAX set (PASD > 12)", null, Properties.Resources.textOverview, null, "CREWD");
|
||||||
|
vViolations.Add(mv);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@ -900,8 +992,8 @@ namespace ENI2
|
|||||||
crewaMessage.ViolationList.Remove(mv);
|
crewaMessage.ViolationList.Remove(mv);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(crewdMessage != null)
|
if(crewdMessage != null)
|
||||||
{
|
{
|
||||||
MessageViolation mvd = crewdMessage.ViolationList.Find((x) => x.PropertyName.Equals("Effects") && (x.ViolationCode == (int)ValidationCode.TRUNCATE));
|
MessageViolation mvd = crewdMessage.ViolationList.Find((x) => x.PropertyName.Equals("Effects") && (x.ViolationCode == (int)ValidationCode.TRUNCATE));
|
||||||
if ((mvd != null) && !Core.IsDK)
|
if ((mvd != null) && !Core.IsDK)
|
||||||
crewdMessage.ViolationList.Remove(mvd);
|
crewdMessage.ViolationList.Remove(mvd);
|
||||||
@ -912,7 +1004,7 @@ namespace ENI2
|
|||||||
|
|
||||||
Dictionary<string, string> identDict = new Dictionary<string, string>();
|
Dictionary<string, string> identDict = new Dictionary<string, string>();
|
||||||
|
|
||||||
foreach (WAS_RCPT was_rcpt in was_rcptMessage.Elements)
|
foreach (WAS_RCPT was_rcpt in was_rcptMessage.Elements.Cast<WAS_RCPT>())
|
||||||
{
|
{
|
||||||
if (!was_rcpt.IdentificationNumber.IsNullOrEmpty())
|
if (!was_rcpt.IdentificationNumber.IsNullOrEmpty())
|
||||||
{
|
{
|
||||||
@ -1046,7 +1138,7 @@ namespace ENI2
|
|||||||
{
|
{
|
||||||
if (poc30d.PortOfCallLast30DaysDateOfDeparture.HasValue && !poc30d.PortOfCallLast30DaysLocode.IsNullOrEmpty())
|
if (poc30d.PortOfCallLast30DaysDateOfDeparture.HasValue && !poc30d.PortOfCallLast30DaysLocode.IsNullOrEmpty())
|
||||||
{
|
{
|
||||||
if((poc30d.PortOfCallLast30DaysDateOfDeparture.Value.Date == l10c.PortFacilityDateOfDeparture.Value.Date) &&
|
if((poc30d.PortOfCallLast30DaysDateOfDeparture.Value.Date == l10c.PortFacilityDateOfDeparture.Value.Date) &&
|
||||||
poc30d.PortOfCallLast30DaysLocode.Equals(l10c.PortFacilityPortLoCode, StringComparison.OrdinalIgnoreCase))
|
poc30d.PortOfCallLast30DaysLocode.Equals(l10c.PortFacilityPortLoCode, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
matchIsFound = true;
|
matchIsFound = true;
|
||||||
@ -1090,6 +1182,36 @@ namespace ENI2
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region SERV existence for DEHAM / DEBRE / DEBRV
|
||||||
|
|
||||||
|
if ((!this.Core.DisplayId.IsNullOrEmpty() && this.Core.DisplayId.StartsWith("DEHAM")) || this.Core.PoC.Equals("DEHAM") ||
|
||||||
|
(!this.Core.DisplayId.IsNullOrEmpty() && this.Core.DisplayId.StartsWith("DEBRE")) || this.Core.PoC.Equals("DEBRE") ||
|
||||||
|
(!this.Core.DisplayId.IsNullOrEmpty() && this.Core.DisplayId.StartsWith("DEBRV")) || this.Core.PoC.Equals("DEBRV"))
|
||||||
|
{
|
||||||
|
if (servMessage.Elements.Count == 0)
|
||||||
|
{
|
||||||
|
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.LIST_EMPTY, "No entry for SERV found", null, "SERV service provider", null, "SERV");
|
||||||
|
mv.MessageGroupName = Properties.Resources.textPortNotification;
|
||||||
|
vViolations.Add(mv);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Tanker validation STAT/PRE72H
|
||||||
|
|
||||||
|
if ((statMessage.Elements[0] is STAT stat) && (pre72hMessage.Elements[0] is PRE72H pre72h))
|
||||||
|
{
|
||||||
|
if((pre72h.Tanker ?? false) != (stat.IsTanker ?? false))
|
||||||
|
{
|
||||||
|
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.LIST_EMPTY, "Tanker: Please check PRE72H / STAT", null, "PRE72H / STAT", null, "STAT");
|
||||||
|
mv.MessageGroupName = Properties.Resources.textPortNotification;
|
||||||
|
vViolations.Add(mv);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
foreach (MessageError me in vErrors)
|
foreach (MessageError me in vErrors)
|
||||||
@ -1141,8 +1263,8 @@ namespace ENI2
|
|||||||
this._errorListDialog.Loaded += (o, e) => this._errorListDialog.RefreshVisible = true;
|
this._errorListDialog.Loaded += (o, e) => this._errorListDialog.RefreshVisible = true;
|
||||||
this._errorListDialog.ErrorSelected += _errorListDialog_ErrorSelected;
|
this._errorListDialog.ErrorSelected += _errorListDialog_ErrorSelected;
|
||||||
this._errorListDialog.RefreshClicked += _errorListDialog_RefreshClicked;
|
this._errorListDialog.RefreshClicked += _errorListDialog_RefreshClicked;
|
||||||
this._errorListDialog.Show();
|
this._errorListDialog.Show();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this._errorListDialog.BringUp();
|
this._errorListDialog.BringUp();
|
||||||
@ -1154,19 +1276,19 @@ namespace ENI2
|
|||||||
{
|
{
|
||||||
if(this._violationListDialog == null)
|
if(this._violationListDialog == null)
|
||||||
{
|
{
|
||||||
this._violationListDialog = new ViolationListDialog();
|
this._violationListDialog = new ViolationListDialog();
|
||||||
this._violationListDialog.Closed += (o, e) => this._violationListDialog = null;
|
this._violationListDialog.Closed += (o, e) => this._violationListDialog = null;
|
||||||
this._violationListDialog.Loaded += (o, e) => this._violationListDialog.RefreshVisible = true;
|
this._violationListDialog.Loaded += (o, e) => this._violationListDialog.RefreshVisible = true;
|
||||||
this._violationListDialog.ViolationSelected += _errorListDialog_ErrorSelected;
|
this._violationListDialog.ViolationSelected += _errorListDialog_ErrorSelected;
|
||||||
this._violationListDialog.RefreshClicked += _errorListDialog_RefreshClicked;
|
this._violationListDialog.RefreshClicked += _errorListDialog_RefreshClicked;
|
||||||
this._violationListDialog.Show();
|
this._violationListDialog.Show();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this._violationListDialog.BringUp();
|
this._violationListDialog.BringUp();
|
||||||
}
|
}
|
||||||
_violationListDialog.Violations = vViolations;
|
_violationListDialog.Violations = vViolations;
|
||||||
}
|
}
|
||||||
|
|
||||||
if((vErrors.Count == 0) && (vViolations.Count == 0))
|
if((vErrors.Count == 0) && (vViolations.Count == 0))
|
||||||
{
|
{
|
||||||
@ -1178,7 +1300,7 @@ namespace ENI2
|
|||||||
|
|
||||||
private void _errorListDialog_RefreshClicked()
|
private void _errorListDialog_RefreshClicked()
|
||||||
{
|
{
|
||||||
DetailControl_RequestValidate();
|
DetailControl_RequestValidate(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void _errorListDialog_ErrorSelected(DatabaseEntity obj)
|
private void _errorListDialog_ErrorSelected(DatabaseEntity obj)
|
||||||
@ -1243,9 +1365,9 @@ namespace ENI2
|
|||||||
case Message.NotificationClass.BKRA:
|
case Message.NotificationClass.BKRA:
|
||||||
return Properties.Resources.textArrivalNotification;
|
return Properties.Resources.textArrivalNotification;
|
||||||
case Message.NotificationClass.BPOL:
|
case Message.NotificationClass.BPOL:
|
||||||
case Message.NotificationClass.CREW:
|
case Message.NotificationClass.CREWA:
|
||||||
case Message.NotificationClass.CREWD:
|
case Message.NotificationClass.CREWD:
|
||||||
case Message.NotificationClass.PAS:
|
case Message.NotificationClass.PASA:
|
||||||
case Message.NotificationClass.PASD:
|
case Message.NotificationClass.PASD:
|
||||||
return Properties.Resources.textBorderPolice;
|
return Properties.Resources.textBorderPolice;
|
||||||
case Message.NotificationClass.HAZA:
|
case Message.NotificationClass.HAZA:
|
||||||
|
|||||||
@ -71,8 +71,24 @@
|
|||||||
AutoGenerateColumns="False" Margin="0,5,0,0">
|
AutoGenerateColumns="False" Margin="0,5,0,0">
|
||||||
<DataGrid.Columns>
|
<DataGrid.Columns>
|
||||||
<DataGridTextColumn Header="" Binding="{Binding Identifier}" IsReadOnly="True" />
|
<DataGridTextColumn Header="" Binding="{Binding Identifier}" IsReadOnly="True" />
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textBunkerType}" Binding="{Binding BunkerFuelType}" IsReadOnly="True" Width="0.2*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textBunkerType}" Width="0.2*">
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textBunkerQuantity}" Binding="{Binding BunkerFuelQuantity_TNE, Mode=TwoWay}" IsReadOnly="True" Width="0.8*" />
|
<DataGridTextColumn.Binding>
|
||||||
|
<Binding Path="BunkerFuelType" Mode="TwoWay">
|
||||||
|
<Binding.ValidationRules>
|
||||||
|
<util:StringValidationRule MaxLength="25" />
|
||||||
|
</Binding.ValidationRules>
|
||||||
|
</Binding>
|
||||||
|
</DataGridTextColumn.Binding>
|
||||||
|
</DataGridTextColumn>
|
||||||
|
<DataGridTextColumn Header="{x:Static p:Resources.textBunkerQuantity}" IsReadOnly="False" Width="0.8*">
|
||||||
|
<DataGridTextColumn.Binding>
|
||||||
|
<Binding Path="BunkerFuelQuantity_TNE" Mode="TwoWay">
|
||||||
|
<Binding.ValidationRules>
|
||||||
|
<util:NumberValidationRule MaxValue="10000"/>
|
||||||
|
</Binding.ValidationRules>
|
||||||
|
</Binding>
|
||||||
|
</DataGridTextColumn.Binding>
|
||||||
|
</DataGridTextColumn>
|
||||||
</DataGrid.Columns>
|
</DataGrid.Columns>
|
||||||
</enictrl:ENIDataGrid>
|
</enictrl:ENIDataGrid>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
|
|||||||
@ -38,7 +38,8 @@ namespace ENI2.DetailViewControls
|
|||||||
this.RegisterIntegerUpDownChange(this.integerUpDownCrewMemberOnBoard, Message.NotificationClass.POBA);
|
this.RegisterIntegerUpDownChange(this.integerUpDownCrewMemberOnBoard, Message.NotificationClass.POBA);
|
||||||
this.RegisterIntegerUpDownChange(this.integerUpDownPassengersOnBoard, Message.NotificationClass.POBA);
|
this.RegisterIntegerUpDownChange(this.integerUpDownPassengersOnBoard, Message.NotificationClass.POBA);
|
||||||
this.RegisterIntegerUpDownChange(this.integerUpDownPersonsOnBoard, Message.NotificationClass.POBA);
|
this.RegisterIntegerUpDownChange(this.integerUpDownPersonsOnBoard, Message.NotificationClass.POBA);
|
||||||
this.RegisterIntegerUpDownChange(this.integerUpDownStowawaysOnBoard, Message.NotificationClass.POBA);
|
this.RegisterIntegerUpDownChange(this.integerUpDownStowawaysOnBoard, Message.NotificationClass.POBA);
|
||||||
|
this.dataGridBKRA.CellEditEnding += (obj, ev) => { this.SublistElementChanged(Message.NotificationClass.BKRA); };
|
||||||
startupComplete = true;
|
startupComplete = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,6 +184,8 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
private void DataGridBKRA_CreateRequested()
|
private void DataGridBKRA_CreateRequested()
|
||||||
{
|
{
|
||||||
|
this.dataGridBKRA.CancelEdit();
|
||||||
|
this.dataGridBKRA.CancelEdit();
|
||||||
EditBKRDialog ebd = new EditBKRDialog();
|
EditBKRDialog ebd = new EditBKRDialog();
|
||||||
ebd.BRKA = new BRKA();
|
ebd.BRKA = new BRKA();
|
||||||
ebd.BRKA.Identifier = BRKA.GetNewIdentifier(this._bkraMessage.Elements);
|
ebd.BRKA.Identifier = BRKA.GetNewIdentifier(this._bkraMessage.Elements);
|
||||||
@ -215,6 +218,8 @@ namespace ENI2.DetailViewControls
|
|||||||
{
|
{
|
||||||
if (obj is BRKA brka)
|
if (obj is BRKA brka)
|
||||||
{
|
{
|
||||||
|
this.dataGridBKRA.CancelEdit();
|
||||||
|
this.dataGridBKRA.CancelEdit();
|
||||||
// are you sure dialog is in base class
|
// are you sure dialog is in base class
|
||||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(brka);
|
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(brka);
|
||||||
this._bkraMessage.Elements.Remove(brka);
|
this._bkraMessage.Elements.Remove(brka);
|
||||||
@ -225,8 +230,12 @@ namespace ENI2.DetailViewControls
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void DataGridBKRA_EditRequested(DatabaseEntity obj)
|
private void DataGridBKRA_EditRequested(DatabaseEntity obj)
|
||||||
{
|
{
|
||||||
|
// I am not shitting you: this has to be called TWICE(!) in a row in order to work
|
||||||
|
// see: https://stackoverflow.com/questions/20204592/wpf-datagrid-refresh-is-not-allowed-during-an-addnew-or-edititem-transaction-m
|
||||||
|
this.dataGridBKRA.CancelEdit(DataGridEditingUnit.Row);
|
||||||
|
this.dataGridBKRA.CommitEdit(DataGridEditingUnit.Row, true);
|
||||||
|
|
||||||
EditBKRDialog eld = new EditBKRDialog();
|
EditBKRDialog eld = new EditBKRDialog();
|
||||||
eld.IsDeparture = false;
|
eld.IsDeparture = false;
|
||||||
eld.BRKA = obj as BRKA;
|
eld.BRKA = obj as BRKA;
|
||||||
@ -236,7 +245,8 @@ namespace ENI2.DetailViewControls
|
|||||||
eld.CopyValuesToEntity();
|
eld.CopyValuesToEntity();
|
||||||
if(!_bkraMessage.Elements.Contains(eld.BRKA))
|
if(!_bkraMessage.Elements.Contains(eld.BRKA))
|
||||||
_bkraMessage.Elements.Add(eld.BRKA);
|
_bkraMessage.Elements.Add(eld.BRKA);
|
||||||
this.dataGridBKRA.Items.Refresh();
|
this.dataGridBKRA.ItemsSource = null;
|
||||||
|
this.dataGridBKRA.ItemsSource = this._bkraMessage.Elements;
|
||||||
eld.BRKA = new BRKA();
|
eld.BRKA = new BRKA();
|
||||||
eld.BRKA.Identifier = BRKA.GetNewIdentifier(this._bkraMessage.Elements);
|
eld.BRKA.Identifier = BRKA.GetNewIdentifier(this._bkraMessage.Elements);
|
||||||
eld.BRKA.MessageHeader = _bkraMessage;
|
eld.BRKA.MessageHeader = _bkraMessage;
|
||||||
@ -247,7 +257,8 @@ namespace ENI2.DetailViewControls
|
|||||||
{
|
{
|
||||||
if (!_bkraMessage.Elements.Contains(eld.BRKA))
|
if (!_bkraMessage.Elements.Contains(eld.BRKA))
|
||||||
_bkraMessage.Elements.Add(eld.BRKA);
|
_bkraMessage.Elements.Add(eld.BRKA);
|
||||||
this.dataGridBKRA.Items.Refresh();
|
this.dataGridBKRA.ItemsSource = null;
|
||||||
|
this.dataGridBKRA.ItemsSource = this._bkraMessage.Elements;
|
||||||
this.SublistElementChanged(Message.NotificationClass.BKRA);
|
this.SublistElementChanged(Message.NotificationClass.BKRA);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -277,18 +288,7 @@ namespace ENI2.DetailViewControls
|
|||||||
if (this._tiefaMessage.HasViolations) this.tiefaGroupBox.BorderBrush = Brushes.Yellow;
|
if (this._tiefaMessage.HasViolations) this.tiefaGroupBox.BorderBrush = Brushes.Yellow;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region mouse wheel
|
|
||||||
|
|
||||||
private void ScrollViewer_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
|
|
||||||
{
|
|
||||||
ScrollViewer scv = (ScrollViewer)sender;
|
|
||||||
scv.ScrollToVerticalOffset(scv.VerticalOffset - e.Delta);
|
|
||||||
e.Handled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region special datetimepicker validation popup (OMG)
|
#region special datetimepicker validation popup (OMG)
|
||||||
|
|
||||||
|
|||||||
@ -49,7 +49,7 @@
|
|||||||
</ScrollViewer>
|
</ScrollViewer>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<TabItem Header="{x:Static p:Resources.textCrew}" Name="tabCrewArrival">
|
<TabItem Header="{x:Static p:Resources.textCrewArrival}" Name="tabCrewArrival">
|
||||||
<GroupBox Name="groupBoxCrewList" Header="{x:Static p:Resources.textTabCrewList}">
|
<GroupBox Name="groupBoxCrewList" Header="{x:Static p:Resources.textTabCrewList}">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
@ -60,13 +60,14 @@
|
|||||||
<Button Name="buttonImportExcelCrew" Content="{x:Static p:Resources.textImportFromExcel}" Margin="2" Width="120" HorizontalAlignment="Left" VerticalAlignment="Center" Background="Transparent" Click="buttonImportExcelCrew_Click" />
|
<Button Name="buttonImportExcelCrew" Content="{x:Static p:Resources.textImportFromExcel}" Margin="2" Width="120" HorizontalAlignment="Left" VerticalAlignment="Center" Background="Transparent" Click="buttonImportExcelCrew_Click" />
|
||||||
<TextBlock Margin="20, 0, 0, 0" Name="textBlockNumCrewEntries" FontWeight="Bold" Text="{Binding Elements.Count}" VerticalAlignment="Center"/>
|
<TextBlock Margin="20, 0, 0, 0" Name="textBlockNumCrewEntries" FontWeight="Bold" Text="{Binding Elements.Count}" VerticalAlignment="Center"/>
|
||||||
<Label Name="labelCrewEntryCount" Content="{x:Static p:Resources.textEntries}" />
|
<Label Name="labelCrewEntryCount" Content="{x:Static p:Resources.textEntries}" />
|
||||||
<!--
|
|
||||||
<CheckBox Name="checkBoxCrewNotificationSchengen" IsThreeState="False" VerticalAlignment="Center" Margin="10,0,0,0" Click="checkBoxCrewNotificationSchengen_Click"/>
|
<CheckBox Name="checkBoxCrewNotificationSchengen" IsThreeState="False" VerticalAlignment="Center" Margin="10,0,0,0" Click="checkBoxCrewNotificationSchengen_Click"/>
|
||||||
<Label Name="labelCrewNotificationSchengen" Content="{x:Static p:Resources.textNotificationSchengen}" />
|
<Label Name="labelCrewNotificationSchengen" Content="{x:Static p:Resources.textNotificationSchengen}" />
|
||||||
<CheckBox Name="checkBoxCrewNotificationPAX" IsThreeState="False" VerticalAlignment="Center" Margin="10,0,0,0" Click="checkBoxCrewNotificationPAX_Click"/>
|
<CheckBox Name="checkBoxCrewNotificationPAX" IsThreeState="False" VerticalAlignment="Center" Margin="10,0,0,0" Click="checkBoxCrewNotificationPAX_Click"/>
|
||||||
<Label Name="labelCrewNotificationPAX" Content="{x:Static p:Resources.textNotificationPAX}" />
|
<Label Name="labelCrewNotificationPAX" Content="{x:Static p:Resources.textNotificationPAX}" />
|
||||||
|
<Button Name="buttonDeleteAllCrewA" Margin="2" Content="{x:Static p:Resources.textDeleteAllEntries}" Background="Transparent" Click="buttonDeleteAllCrewA_Click"/>
|
||||||
<TextBlock Margin="30,0,0,0" FontWeight="Bold" FontSize="16" Text="CREWA" VerticalAlignment="Center" />
|
<TextBlock Margin="30,0,0,0" FontWeight="Bold" FontSize="16" Text="CREWA" VerticalAlignment="Center" />
|
||||||
-->
|
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<enictrl:ENIDataGrid Grid.Row="1" Grid.Column="0" x:Name="dataGridCrewList" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
<enictrl:ENIDataGrid Grid.Row="1" Grid.Column="0" x:Name="dataGridCrewList" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
||||||
AutoGenerateColumns="False" Margin="0,5,0,0">
|
AutoGenerateColumns="False" Margin="0,5,0,0">
|
||||||
@ -78,7 +79,7 @@
|
|||||||
<DataGridTextColumn Header="{x:Static p:Resources.textCrewFunctionOnBoard}" Binding="{Binding CrewMemberDuty, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textCrewFunctionOnBoard}" Binding="{Binding CrewMemberDuty, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textNationality}" Binding="{Binding CrewMemberNationality, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textNationality}" Binding="{Binding CrewMemberNationality, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textPlaceOfBirth}" Binding="{Binding CrewMemberPlaceOfBirth, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textPlaceOfBirth}" Binding="{Binding CrewMemberPlaceOfBirth, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||||
<!--<DataGridTextColumn Header="{x:Static p:Resources.textCountryOfBirth}" Binding="{Binding CrewMemberCountryOfBirth, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />--> <!-- XXX: TODO -->
|
<DataGridTextColumn Header="{x:Static p:Resources.textCountryOfBirth}" Binding="{Binding CrewMemberCountryOfBirth, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textDateOfBirth}" Binding="{Binding CrewMemberDateOfBirth, Mode=TwoWay, StringFormat=\{0:dd.MM.yyyy\}}" IsReadOnly="True" Width="0.1*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textDateOfBirth}" Binding="{Binding CrewMemberDateOfBirth, Mode=TwoWay, StringFormat=\{0:dd.MM.yyyy\}}" IsReadOnly="True" Width="0.1*" />
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textIdDocType}" Binding="{Binding CrewMemberIdentityDocumentTypeDisplay}" IsReadOnly="True" Width="0.1*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textIdDocType}" Binding="{Binding CrewMemberIdentityDocumentTypeDisplay}" IsReadOnly="True" Width="0.1*" />
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textIdDocNumber}" Binding="{Binding CrewMemberIdentityDocumentId, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textIdDocNumber}" Binding="{Binding CrewMemberIdentityDocumentId, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||||
@ -91,7 +92,7 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<!-- XXX : TODO
|
|
||||||
<TabItem Header="{x:Static p:Resources.textCrewDeparture}" Name="tabCrewDeparture">
|
<TabItem Header="{x:Static p:Resources.textCrewDeparture}" Name="tabCrewDeparture">
|
||||||
<GroupBox Name="groupBoxCrewListDeparture" Header="{x:Static p:Resources.textTabCrewList}">
|
<GroupBox Name="groupBoxCrewListDeparture" Header="{x:Static p:Resources.textTabCrewList}">
|
||||||
<Grid>
|
<Grid>
|
||||||
@ -107,6 +108,7 @@
|
|||||||
<Label Name="labelCrewNotificationSchengenDeparture" Content="{x:Static p:Resources.textNotificationSchengen}" />
|
<Label Name="labelCrewNotificationSchengenDeparture" Content="{x:Static p:Resources.textNotificationSchengen}" />
|
||||||
<CheckBox Name="checkBoxCrewNotificationPAXDeparture" IsThreeState="False" VerticalAlignment="Center" Margin="10,0,0,0" Click="checkBoxCrewNotificationPAXDeparture_Click"/>
|
<CheckBox Name="checkBoxCrewNotificationPAXDeparture" IsThreeState="False" VerticalAlignment="Center" Margin="10,0,0,0" Click="checkBoxCrewNotificationPAXDeparture_Click"/>
|
||||||
<Label Name="labelCrewNotificationPAXDeparture" Content="{x:Static p:Resources.textNotificationPAX}" />
|
<Label Name="labelCrewNotificationPAXDeparture" Content="{x:Static p:Resources.textNotificationPAX}" />
|
||||||
|
<Button Name="buttonDeleteAllCrewD" Margin="2" Content="{x:Static p:Resources.textDeleteAllEntries}" Background="Transparent" Click="buttonDeleteAllCrewD_Click"/>
|
||||||
<TextBlock Margin="30,0,0,0" FontWeight="Bold" FontSize="16" Text="CREWD" VerticalAlignment="Center" />
|
<TextBlock Margin="30,0,0,0" FontWeight="Bold" FontSize="16" Text="CREWD" VerticalAlignment="Center" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<enictrl:ENIDataGrid Grid.Row="1" Grid.Column="0" x:Name="dataGridCrewListDeparture" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
<enictrl:ENIDataGrid Grid.Row="1" Grid.Column="0" x:Name="dataGridCrewListDeparture" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
||||||
@ -131,8 +133,8 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
-->
|
|
||||||
<TabItem Header="{x:Static p:Resources.textPas}" Name="tabPassengerList">
|
<TabItem Header="{x:Static p:Resources.textPasArrival}" Name="tabPassengerList">
|
||||||
<GroupBox Name="groupBoxPassengerList" Header="{x:Static p:Resources.textTabPassengerList}">
|
<GroupBox Name="groupBoxPassengerList" Header="{x:Static p:Resources.textTabPassengerList}">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
@ -143,13 +145,12 @@
|
|||||||
<Button Name="buttonImportExcelPassenger" Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textImportFromExcel}" Margin="2" Width="120" HorizontalAlignment="Left" VerticalAlignment="Center" Background="Transparent" Click="buttonImportExcelPassenger_Click" />
|
<Button Name="buttonImportExcelPassenger" Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textImportFromExcel}" Margin="2" Width="120" HorizontalAlignment="Left" VerticalAlignment="Center" Background="Transparent" Click="buttonImportExcelPassenger_Click" />
|
||||||
<TextBlock Margin="20, 0, 0, 0" Name="textBlockNumPasEntries" FontWeight="Bold" Text="{Binding Elements.Count}" VerticalAlignment="Center"/>
|
<TextBlock Margin="20, 0, 0, 0" Name="textBlockNumPasEntries" FontWeight="Bold" Text="{Binding Elements.Count}" VerticalAlignment="Center"/>
|
||||||
<Label Name="labelPasEntryCount" Content="{x:Static p:Resources.textEntries}" />
|
<Label Name="labelPasEntryCount" Content="{x:Static p:Resources.textEntries}" />
|
||||||
<!--
|
|
||||||
<CheckBox Name="checkBoxPasNotificationSchengen" IsThreeState="False" VerticalAlignment="Center" Margin="10,0,0,0" Click="checkBoxPasNotificationSchengen_Click"/>
|
<CheckBox Name="checkBoxPasNotificationSchengen" IsThreeState="False" VerticalAlignment="Center" Margin="10,0,0,0" Click="checkBoxPasNotificationSchengen_Click"/>
|
||||||
<Label Name="labelPasNotificationSchengen" Content="{x:Static p:Resources.textNotificationSchengen}" />
|
<Label Name="labelPasNotificationSchengen" Content="{x:Static p:Resources.textNotificationSchengen}" />
|
||||||
<CheckBox Name="checkBoxPasNotificationPAX" IsThreeState="False" VerticalAlignment="Center" Margin="10,0,0,0" Click="checkBoxPasNotificationPAX_Click"/>
|
<CheckBox Name="checkBoxPasNotificationPAX" IsThreeState="False" VerticalAlignment="Center" Margin="10,0,0,0" Click="checkBoxPasNotificationPAX_Click"/>
|
||||||
<Label Name="labelPasNotificationPAX" Content="{x:Static p:Resources.textNotificationPAX}" />
|
<Label Name="labelPasNotificationPAX" Content="{x:Static p:Resources.textNotificationPAX}" />
|
||||||
<TextBlock Margin="30,0,0,0" FontWeight="Bold" FontSize="16" Text="PASA" VerticalAlignment="Center" />
|
<Button Name="buttonDeleteAllPasA" Margin="2" Content="{x:Static p:Resources.textDeleteAllEntries}" Background="Transparent" Click="buttonDeleteAllPasA_Click"/>
|
||||||
-->
|
<TextBlock Margin="30,0,0,0" FontWeight="Bold" FontSize="16" Text="PASA" VerticalAlignment="Center" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<enictrl:ENIDataGrid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" x:Name="dataGridPassengerList" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
<enictrl:ENIDataGrid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" x:Name="dataGridPassengerList" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
||||||
AutoGenerateColumns="False" Margin="0,5,0,0">
|
AutoGenerateColumns="False" Margin="0,5,0,0">
|
||||||
@ -163,22 +164,22 @@
|
|||||||
<DataGridCheckBoxColumn Header="{x:Static p:Resources.textTransitPassenger}" Binding="{Binding PassengerInTransit}" IsReadOnly="True" Width="0.1*" />
|
<DataGridCheckBoxColumn Header="{x:Static p:Resources.textTransitPassenger}" Binding="{Binding PassengerInTransit}" IsReadOnly="True" Width="0.1*" />
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textNationality}" Binding="{Binding PassengerNationality}" IsReadOnly="True" Width="0.1*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textNationality}" Binding="{Binding PassengerNationality}" IsReadOnly="True" Width="0.1*" />
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textPlaceOfBirth}" Binding="{Binding PassengerPlaceOfBirth}" IsReadOnly="True" Width="0.1*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textPlaceOfBirth}" Binding="{Binding PassengerPlaceOfBirth}" IsReadOnly="True" Width="0.1*" />
|
||||||
<!--<DataGridTextColumn Header="{x:Static p:Resources.textCountryOfBirth}" Binding="{Binding PassengerCountryOfBirth, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />-->
|
<DataGridTextColumn Header="{x:Static p:Resources.textCountryOfBirth}" Binding="{Binding PassengerCountryOfBirth, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textDateOfBirth}" Binding="{Binding PassengerDateOfBirth, StringFormat=\{0:dd.MM.yyyy\}}" IsReadOnly="True" Width="0.1*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textDateOfBirth}" Binding="{Binding PassengerDateOfBirth, StringFormat=\{0:dd.MM.yyyy\}}" IsReadOnly="True" Width="0.1*" />
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textIdDocType}" Binding="{Binding PassengerIdentityDocumentTypeDisplay}" IsReadOnly="True" Width="0.1*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textIdDocType}" Binding="{Binding PassengerIdentityDocumentTypeDisplay}" IsReadOnly="True" Width="0.1*" />
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textIdDocNumber}" Binding="{Binding PassengerIdentityDocumentId}" IsReadOnly="True" Width="0.1*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textIdDocNumber}" Binding="{Binding PassengerIdentityDocumentId}" IsReadOnly="True" Width="0.1*" />
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textDocumentIssuingState}" Binding="{Binding PassengerIdentityDocumentIssuingState}" IsReadOnly="True" Width="0.1*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textDocumentIssuingState}" Binding="{Binding PassengerIdentityDocumentIssuingState}" IsReadOnly="True" Width="0.1*" />
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textDocumentExpiryDate}" Binding="{Binding PassengerIdentityDocumentExpiryDate, StringFormat=\{0:dd.MM.yyyy\}}" IsReadOnly="True" Width="0.1*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textDocumentExpiryDate}" Binding="{Binding PassengerIdentityDocumentExpiryDate, StringFormat=\{0:dd.MM.yyyy\}}" IsReadOnly="True" Width="0.1*" />
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textVisaNumber}" Binding="{Binding PassengerVisaNumber}" IsReadOnly="True" Width="0.1*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textVisaNumber}" Binding="{Binding PassengerVisaNumber}" IsReadOnly="True" Width="0.1*" />
|
||||||
<!--<DataGridTextColumn Header="{x:Static p:Resources.textEmergencyCare}" Binding="{Binding EmergencyCare, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />--> <!-- XXX : TODO -->
|
<DataGridTextColumn Header="{x:Static p:Resources.textEmergencyCare}" Binding="{Binding EmergencyCare, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||||
<!-- <DataGridTextColumn Header="{x:Static p:Resources.textEmergencyContactNumber}" Binding="{Binding EmergencyContactNumber, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" /> -->
|
<DataGridTextColumn Header="{x:Static p:Resources.textEmergencyContactNumber}" Binding="{Binding EmergencyContactNumber, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||||
|
|
||||||
</DataGrid.Columns>
|
</DataGrid.Columns>
|
||||||
</enictrl:ENIDataGrid>
|
</enictrl:ENIDataGrid>
|
||||||
</Grid>
|
</Grid>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
<!-- XXX : TODO
|
|
||||||
<TabItem Header="{x:Static p:Resources.textPasDeparture}" Name="tabPassengerListDeparture">
|
<TabItem Header="{x:Static p:Resources.textPasDeparture}" Name="tabPassengerListDeparture">
|
||||||
<GroupBox Name="groupBoxPassengerListDeparture" Header="{x:Static p:Resources.textTabPassengerList}">
|
<GroupBox Name="groupBoxPassengerListDeparture" Header="{x:Static p:Resources.textTabPassengerList}">
|
||||||
<Grid>
|
<Grid>
|
||||||
@ -194,6 +195,7 @@
|
|||||||
<Label Name="labelPasNotificationSchengenDeparture" Content="{x:Static p:Resources.textNotificationSchengen}" />
|
<Label Name="labelPasNotificationSchengenDeparture" Content="{x:Static p:Resources.textNotificationSchengen}" />
|
||||||
<CheckBox Name="checkBoxPasNotificationPAXDeparture" IsThreeState="False" VerticalAlignment="Center" Margin="10,0,0,0" Click="checkBoxPasNotificationPAXDeparture_Click"/>
|
<CheckBox Name="checkBoxPasNotificationPAXDeparture" IsThreeState="False" VerticalAlignment="Center" Margin="10,0,0,0" Click="checkBoxPasNotificationPAXDeparture_Click"/>
|
||||||
<Label Name="labelPasNotificationPAXDeparture" Content="{x:Static p:Resources.textNotificationPAX}" />
|
<Label Name="labelPasNotificationPAXDeparture" Content="{x:Static p:Resources.textNotificationPAX}" />
|
||||||
|
<Button Name="buttonDeleteAllPasD" Margin="2" Content="{x:Static p:Resources.textDeleteAllEntries}" Background="Transparent" Click="buttonDeleteAllPasD_Click"/>
|
||||||
<TextBlock Margin="30,0,0,0" FontWeight="Bold" FontSize="16" Text="PASD" VerticalAlignment="Center" />
|
<TextBlock Margin="30,0,0,0" FontWeight="Bold" FontSize="16" Text="PASD" VerticalAlignment="Center" />
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<enictrl:ENIDataGrid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" x:Name="dataGridPassengerListDeparture" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
<enictrl:ENIDataGrid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" x:Name="dataGridPassengerListDeparture" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
||||||
@ -222,7 +224,7 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
-->
|
|
||||||
</TabControl>
|
</TabControl>
|
||||||
|
|
||||||
</src:DetailBaseControl>
|
</src:DetailBaseControl>
|
||||||
|
|||||||
@ -13,6 +13,8 @@ using ENI2.Util;
|
|||||||
using ENI2.Locode;
|
using ENI2.Locode;
|
||||||
using ExcelDataReader;
|
using ExcelDataReader;
|
||||||
using bsmd.database;
|
using bsmd.database;
|
||||||
|
using System.Windows.Media.Imaging;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace ENI2.DetailViewControls
|
namespace ENI2.DetailViewControls
|
||||||
{
|
{
|
||||||
@ -50,8 +52,8 @@ namespace ENI2.DetailViewControls
|
|||||||
foreach (Message aMessage in this.Messages)
|
foreach (Message aMessage in this.Messages)
|
||||||
{
|
{
|
||||||
if (aMessage.MessageNotificationClass == Message.NotificationClass.BPOL) { this._bpolMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
if (aMessage.MessageNotificationClass == Message.NotificationClass.BPOL) { this._bpolMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
||||||
if (aMessage.MessageNotificationClass == Message.NotificationClass.CREW) { this._crewMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
if (aMessage.MessageNotificationClass == Message.NotificationClass.CREWA) { this._crewMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
||||||
if (aMessage.MessageNotificationClass == Message.NotificationClass.PAS) { this._pasMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
if (aMessage.MessageNotificationClass == Message.NotificationClass.PASA) { this._pasMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
||||||
if (aMessage.MessageNotificationClass == Message.NotificationClass.CREWD) { this._crewdMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
if (aMessage.MessageNotificationClass == Message.NotificationClass.CREWD) { this._crewdMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
||||||
if (aMessage.MessageNotificationClass == Message.NotificationClass.PASD) { this._pasdMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
if (aMessage.MessageNotificationClass == Message.NotificationClass.PASD) { this._pasdMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
||||||
|
|
||||||
@ -99,7 +101,7 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
if (this._crewMessage == null)
|
if (this._crewMessage == null)
|
||||||
{
|
{
|
||||||
this._crewMessage = this.Core.CreateMessage(Message.NotificationClass.CREW);
|
this._crewMessage = this.Core.CreateMessage(Message.NotificationClass.CREWA);
|
||||||
this.Messages.Add(this._crewMessage);
|
this.Messages.Add(this._crewMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,19 +114,27 @@ namespace ENI2.DetailViewControls
|
|||||||
this.dataGridCrewList.DeleteRequested += DataGridCrewList_DeleteRequested;
|
this.dataGridCrewList.DeleteRequested += DataGridCrewList_DeleteRequested;
|
||||||
this.dataGridCrewList.CreateRequested += DataGridCrewList_CreateRequested;
|
this.dataGridCrewList.CreateRequested += DataGridCrewList_CreateRequested;
|
||||||
this.dataGridCrewList.RefreshGrid += DataGridCrewList_RefreshGrid;
|
this.dataGridCrewList.RefreshGrid += DataGridCrewList_RefreshGrid;
|
||||||
/* XXX : TODO
|
this.dataGridCrewList.MultiEditRequested += DataGridCrewList_MultiEditRequested;
|
||||||
|
|
||||||
if(this._crewMessage.Elements.Count > 0)
|
if(this._crewMessage.Elements.Count > 0)
|
||||||
{
|
{
|
||||||
this.checkBoxCrewNotificationSchengen.IsChecked = ((CREW)this._crewMessage.Elements[0]).NotificationSchengen;
|
this.checkBoxCrewNotificationSchengen.IsChecked = ((CREW)this._crewMessage.Elements[0]).NotificationSchengen;
|
||||||
this.checkBoxCrewNotificationPAX.IsChecked = ((CREW)this._crewMessage.Elements[0]).NotificationPAX;
|
this.checkBoxCrewNotificationPAX.IsChecked = ((CREW)this._crewMessage.Elements[0]).NotificationPAX;
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
// extra menu copy to CREWD
|
||||||
|
{
|
||||||
|
this.dataGridCrewList.ContextMenu.Items.Add(new Separator());
|
||||||
|
MenuItem copyCREWAItem = new MenuItem();
|
||||||
|
copyCREWAItem.Header = Properties.Resources.textCopyToCREWD;
|
||||||
|
copyCREWAItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
|
||||||
|
copyCREWAItem.Click += CopyCREWAItem_Click;
|
||||||
|
this.dataGridCrewList.ContextMenu.Items.Add(copyCREWAItem);
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region init CREWD
|
#region init CREWD
|
||||||
|
|
||||||
/* XXX : TODO
|
|
||||||
|
|
||||||
if (this._crewdMessage == null)
|
if (this._crewdMessage == null)
|
||||||
{
|
{
|
||||||
@ -141,6 +151,7 @@ namespace ENI2.DetailViewControls
|
|||||||
this.dataGridCrewListDeparture.DeleteRequested += DataGridCrewListDeparture_DeleteRequested;
|
this.dataGridCrewListDeparture.DeleteRequested += DataGridCrewListDeparture_DeleteRequested;
|
||||||
this.dataGridCrewListDeparture.CreateRequested += DataGridCrewListDeparture_CreateRequested;
|
this.dataGridCrewListDeparture.CreateRequested += DataGridCrewListDeparture_CreateRequested;
|
||||||
this.dataGridCrewListDeparture.RefreshGrid += DataGridCrewListDeparture_RefreshGrid;
|
this.dataGridCrewListDeparture.RefreshGrid += DataGridCrewListDeparture_RefreshGrid;
|
||||||
|
this.dataGridCrewListDeparture.MultiEditRequested += DataGridCrewListDeparture_MultiEditRequested;
|
||||||
|
|
||||||
if (this._crewdMessage.Elements.Count > 0)
|
if (this._crewdMessage.Elements.Count > 0)
|
||||||
{
|
{
|
||||||
@ -148,7 +159,15 @@ namespace ENI2.DetailViewControls
|
|||||||
this.checkBoxCrewNotificationPAXDeparture.IsChecked = ((CREWD)this._crewdMessage.Elements[0]).NotificationPAX;
|
this.checkBoxCrewNotificationPAXDeparture.IsChecked = ((CREWD)this._crewdMessage.Elements[0]).NotificationPAX;
|
||||||
}
|
}
|
||||||
|
|
||||||
*/
|
// extra menu copy to CREWA
|
||||||
|
{
|
||||||
|
this.dataGridCrewListDeparture.ContextMenu.Items.Add(new Separator());
|
||||||
|
MenuItem copyCREWDItem = new MenuItem();
|
||||||
|
copyCREWDItem.Header = Properties.Resources.textCopyToCREWA;
|
||||||
|
copyCREWDItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
|
||||||
|
copyCREWDItem.Click += CopyCREWDItem_Click;
|
||||||
|
this.dataGridCrewListDeparture.ContextMenu.Items.Add(copyCREWDItem);
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@ -156,7 +175,7 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
if (this._pasMessage == null)
|
if (this._pasMessage == null)
|
||||||
{
|
{
|
||||||
this._pasMessage = this.Core.CreateMessage(Message.NotificationClass.PAS);
|
this._pasMessage = this.Core.CreateMessage(Message.NotificationClass.PASA);
|
||||||
this.Messages.Add(this._pasMessage);
|
this.Messages.Add(this._pasMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -169,8 +188,7 @@ namespace ENI2.DetailViewControls
|
|||||||
this.dataGridPassengerList.DeleteRequested += DataGridPassengerList_DeleteRequested;
|
this.dataGridPassengerList.DeleteRequested += DataGridPassengerList_DeleteRequested;
|
||||||
this.dataGridPassengerList.CreateRequested += DataGridPassengerList_CreateRequested;
|
this.dataGridPassengerList.CreateRequested += DataGridPassengerList_CreateRequested;
|
||||||
this.dataGridPassengerList.RefreshGrid += DataGridPassengerList_RefreshGrid;
|
this.dataGridPassengerList.RefreshGrid += DataGridPassengerList_RefreshGrid;
|
||||||
|
this.dataGridPassengerList.MultiEditRequested += DataGridPassengerList_MultiEditRequested;
|
||||||
/* XXX : TODO
|
|
||||||
|
|
||||||
if (this._pasMessage.Elements.Count > 0)
|
if (this._pasMessage.Elements.Count > 0)
|
||||||
{
|
{
|
||||||
@ -178,13 +196,19 @@ namespace ENI2.DetailViewControls
|
|||||||
this.checkBoxPasNotificationPAX.IsChecked = ((PAS)this._pasMessage.Elements[0]).NotificationPAX;
|
this.checkBoxPasNotificationPAX.IsChecked = ((PAS)this._pasMessage.Elements[0]).NotificationPAX;
|
||||||
}
|
}
|
||||||
|
|
||||||
*/
|
// extra menu copy to PASD
|
||||||
|
{
|
||||||
|
this.dataGridPassengerList.ContextMenu.Items.Add(new Separator());
|
||||||
|
MenuItem copyPASAItem = new MenuItem();
|
||||||
|
copyPASAItem.Header = Properties.Resources.textCopyToPASD;
|
||||||
|
copyPASAItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
|
||||||
|
copyPASAItem.Click += CopyPASAItem_Click;
|
||||||
|
this.dataGridPassengerList.ContextMenu.Items.Add(copyPASAItem);
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region init PASD
|
#region init PASD
|
||||||
|
|
||||||
/* XXX : TODO
|
|
||||||
|
|
||||||
if (this._pasdMessage == null)
|
if (this._pasdMessage == null)
|
||||||
{
|
{
|
||||||
@ -201,6 +225,7 @@ namespace ENI2.DetailViewControls
|
|||||||
this.dataGridPassengerListDeparture.DeleteRequested += DataGridPassengerListDeparture_DeleteRequested;
|
this.dataGridPassengerListDeparture.DeleteRequested += DataGridPassengerListDeparture_DeleteRequested;
|
||||||
this.dataGridPassengerListDeparture.CreateRequested += DataGridPassengerListDeparture_CreateRequested;
|
this.dataGridPassengerListDeparture.CreateRequested += DataGridPassengerListDeparture_CreateRequested;
|
||||||
this.dataGridPassengerListDeparture.RefreshGrid += DataGridPassengerListDeparture_RefreshGrid;
|
this.dataGridPassengerListDeparture.RefreshGrid += DataGridPassengerListDeparture_RefreshGrid;
|
||||||
|
this.dataGridPassengerListDeparture.MultiEditRequested += DataGridPassengerListDeparture_MultiEditRequested;
|
||||||
|
|
||||||
if (this._pasdMessage.Elements.Count > 0)
|
if (this._pasdMessage.Elements.Count > 0)
|
||||||
{
|
{
|
||||||
@ -208,11 +233,177 @@ namespace ENI2.DetailViewControls
|
|||||||
this.checkBoxPasNotificationPAXDeparture.IsChecked = ((PASD)this._pasdMessage.Elements[0]).NotificationPAX;
|
this.checkBoxPasNotificationPAXDeparture.IsChecked = ((PASD)this._pasdMessage.Elements[0]).NotificationPAX;
|
||||||
}
|
}
|
||||||
|
|
||||||
*/
|
// extra menu copy to PASA
|
||||||
|
{
|
||||||
|
this.dataGridPassengerListDeparture.ContextMenu.Items.Add(new Separator());
|
||||||
|
MenuItem copyPASDItem = new MenuItem();
|
||||||
|
copyPASDItem.Header = Properties.Resources.textCopyToPASA;
|
||||||
|
copyPASDItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
|
||||||
|
copyPASDItem.Click += CopyPASDItem_Click;
|
||||||
|
this.dataGridPassengerListDeparture.ContextMenu.Items.Add(copyPASDItem);
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override int SelectedTabIndex
|
||||||
|
{
|
||||||
|
get { return this.mainFrame.SelectedIndex; }
|
||||||
|
set { this.mainFrame.SelectedIndex = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Grid copy handlers
|
||||||
|
|
||||||
|
private void CopyPASDItem_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (this.dataGridPassengerListDeparture.SelectedItems != null)
|
||||||
|
{
|
||||||
|
foreach (PASD pasd in this.dataGridPassengerListDeparture.SelectedItems)
|
||||||
|
{
|
||||||
|
PAS pasa = new PAS();
|
||||||
|
pasa.MessageHeader = this._pasMessage;
|
||||||
|
pasa.CopyFromPAS(pasd);
|
||||||
|
pasa.IsDeparture = false;
|
||||||
|
pasa.Identifier = DatabaseEntity.GetNewIdentifier(this._pasMessage.Elements);
|
||||||
|
this._pasMessage.Elements.Add(pasa);
|
||||||
|
this.SublistElementChanged(Message.NotificationClass.PASA);
|
||||||
|
}
|
||||||
|
this.CheckPASA();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CopyPASAItem_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (this.dataGridPassengerList.SelectedItems != null)
|
||||||
|
{
|
||||||
|
foreach (PAS pasa in this.dataGridPassengerList.SelectedItems)
|
||||||
|
{
|
||||||
|
PASD pasd = new PASD();
|
||||||
|
pasd.MessageHeader = this._pasdMessage;
|
||||||
|
pasd.CopyFromPAS(pasa);
|
||||||
|
pasd.IsDeparture = true;
|
||||||
|
pasd.Identifier = DatabaseEntity.GetNewIdentifier(this._pasdMessage.Elements);
|
||||||
|
this._pasdMessage.Elements.Add(pasd);
|
||||||
|
this.SublistElementChanged(Message.NotificationClass.PASD);
|
||||||
|
}
|
||||||
|
this.CheckPASD();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CopyCREWDItem_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (this.dataGridCrewListDeparture.SelectedItems != null)
|
||||||
|
{
|
||||||
|
foreach (CREWD crewd in this.dataGridCrewListDeparture.SelectedItems)
|
||||||
|
{
|
||||||
|
CREW crewa = new CREW();
|
||||||
|
crewa.MessageHeader = this._crewMessage;
|
||||||
|
crewa.CopyFromCREW(crewd);
|
||||||
|
crewa.IsDeparture = false;
|
||||||
|
crewa.Identifier = DatabaseEntity.GetNewIdentifier(this._crewMessage.Elements);
|
||||||
|
this._crewMessage.Elements.Add(crewa);
|
||||||
|
this.SublistElementChanged(Message.NotificationClass.CREWA);
|
||||||
|
}
|
||||||
|
this.CheckCREWA();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CopyCREWAItem_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if(this.dataGridCrewList.SelectedItems != null)
|
||||||
|
{
|
||||||
|
foreach(CREW crewa in this.dataGridCrewList.SelectedItems)
|
||||||
|
{
|
||||||
|
CREWD crewd = new CREWD();
|
||||||
|
crewd.MessageHeader = this._crewdMessage;
|
||||||
|
crewd.CopyFromCREW(crewa);
|
||||||
|
crewd.IsDeparture = true;
|
||||||
|
crewd.Identifier = DatabaseEntity.GetNewIdentifier(this._crewdMessage.Elements);
|
||||||
|
this._crewdMessage.Elements.Add(crewd);
|
||||||
|
this.SublistElementChanged(Message.NotificationClass.CREWD);
|
||||||
|
}
|
||||||
|
this.CheckCREWD();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Check Schengen / PAX flags and sync
|
||||||
|
|
||||||
|
private void CheckCREWA()
|
||||||
|
{
|
||||||
|
if (this._crewMessage.Elements.Count == 0) return;
|
||||||
|
CREW firstCREW = this._crewMessage.Elements[0] as CREW;
|
||||||
|
if (this._crewMessage.Elements.Count == 1)
|
||||||
|
{
|
||||||
|
firstCREW.NotificationSchengen = true;
|
||||||
|
this.checkBoxCrewNotificationSchengen.IsChecked = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int i = 1; i < this._crewMessage.Elements.Count; i++)
|
||||||
|
{
|
||||||
|
((CREW)this._crewMessage.Elements[i]).NotificationSchengen = firstCREW.NotificationSchengen;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CheckCREWD()
|
||||||
|
{
|
||||||
|
if (this._crewdMessage.Elements.Count == 0) return;
|
||||||
|
CREWD firstCREW = this._crewdMessage.Elements[0] as CREWD;
|
||||||
|
if (this._crewdMessage.Elements.Count == 1)
|
||||||
|
{
|
||||||
|
firstCREW.NotificationSchengen = true;
|
||||||
|
this.checkBoxCrewNotificationSchengenDeparture.IsChecked = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int i = 1; i < this._crewdMessage.Elements.Count; i++)
|
||||||
|
{
|
||||||
|
((CREWD)this._crewdMessage.Elements[i]).NotificationSchengen = firstCREW.NotificationSchengen;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CheckPASA()
|
||||||
|
{
|
||||||
|
if(this._pasMessage.Elements.Count == 0) return;
|
||||||
|
PAS firstPAS = this._pasMessage.Elements[0] as PAS;
|
||||||
|
if(this._pasMessage.Elements.Count == 1)
|
||||||
|
{
|
||||||
|
firstPAS.NotificationSchengen = true;
|
||||||
|
this.checkBoxPasNotificationSchengen.IsChecked = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int i = 1; i < this._pasMessage.Elements.Count; i++)
|
||||||
|
{
|
||||||
|
((PAS)this._pasMessage.Elements[i]).NotificationSchengen = firstPAS.NotificationSchengen;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CheckPASD()
|
||||||
|
{
|
||||||
|
if(this._pasdMessage.Elements.Count == 0) return;
|
||||||
|
PASD firstPAS = this._pasdMessage.Elements[0] as PASD;
|
||||||
|
if (this._pasdMessage.Elements.Count == 1)
|
||||||
|
{
|
||||||
|
firstPAS.NotificationSchengen = true;
|
||||||
|
this.checkBoxPasNotificationSchengenDeparture.IsChecked = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int i = 1; i < this._pasdMessage.Elements.Count; i++)
|
||||||
|
{
|
||||||
|
((PASD)this._pasdMessage.Elements[i]).NotificationSchengen = firstPAS.NotificationSchengen;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region SetEnabled
|
#region SetEnabled
|
||||||
|
|
||||||
public override void SetEnabled(bool enabled)
|
public override void SetEnabled(bool enabled)
|
||||||
@ -364,23 +555,29 @@ namespace ENI2.DetailViewControls
|
|||||||
epd.AddClicked += () =>
|
epd.AddClicked += () =>
|
||||||
{
|
{
|
||||||
epd.CopyValuesToEntity();
|
epd.CopyValuesToEntity();
|
||||||
if(!this._pasMessage.Elements.Contains(epd.PAS))
|
if (!this._pasMessage.Elements.Contains(epd.PAS))
|
||||||
|
{
|
||||||
this._pasMessage.Elements.Add(epd.PAS);
|
this._pasMessage.Elements.Add(epd.PAS);
|
||||||
|
this.CheckPASA();
|
||||||
|
}
|
||||||
this.dataGridPassengerList.Items.Refresh();
|
this.dataGridPassengerList.Items.Refresh();
|
||||||
epd.PAS = new PAS
|
epd.PAS = new PAS
|
||||||
{
|
{
|
||||||
MessageHeader = this._pasMessage,
|
MessageHeader = this._pasMessage,
|
||||||
Identifier = PAS.GetNewIdentifier(_pasMessage.Elements)
|
Identifier = PAS.GetNewIdentifier(_pasMessage.Elements)
|
||||||
};
|
};
|
||||||
this.SublistElementChanged(Message.NotificationClass.PAS);
|
this.SublistElementChanged(Message.NotificationClass.PASA);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (epd.ShowDialog() ?? false)
|
if (epd.ShowDialog() ?? false)
|
||||||
{
|
{
|
||||||
if(!this._pasMessage.Elements.Contains(epd.PAS))
|
if (!this._pasMessage.Elements.Contains(epd.PAS))
|
||||||
|
{
|
||||||
_pasMessage.Elements.Add(epd.PAS);
|
_pasMessage.Elements.Add(epd.PAS);
|
||||||
|
this.CheckPASA();
|
||||||
|
}
|
||||||
this.dataGridPassengerList.Items.Refresh();
|
this.dataGridPassengerList.Items.Refresh();
|
||||||
this.SublistElementChanged(Message.NotificationClass.PAS);
|
this.SublistElementChanged(Message.NotificationClass.PASA);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -397,7 +594,7 @@ namespace ENI2.DetailViewControls
|
|||||||
private void DataGridPassengerList_RefreshGrid()
|
private void DataGridPassengerList_RefreshGrid()
|
||||||
{
|
{
|
||||||
DatabaseEntity.ResetIdentifiers(_pasMessage.Elements);
|
DatabaseEntity.ResetIdentifiers(_pasMessage.Elements);
|
||||||
this.SublistElementChanged(Message.NotificationClass.PAS);
|
this.SublistElementChanged(Message.NotificationClass.PASA);
|
||||||
this.dataGridPassengerList.Items.Refresh();
|
this.dataGridPassengerList.Items.Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -411,24 +608,30 @@ namespace ENI2.DetailViewControls
|
|||||||
epd.AddClicked += () =>
|
epd.AddClicked += () =>
|
||||||
{
|
{
|
||||||
epd.CopyValuesToEntity();
|
epd.CopyValuesToEntity();
|
||||||
if(!_pasMessage.Elements.Contains(epd.PAS))
|
if (!_pasMessage.Elements.Contains(epd.PAS))
|
||||||
|
{
|
||||||
_pasMessage.Elements.Add(epd.PAS);
|
_pasMessage.Elements.Add(epd.PAS);
|
||||||
|
this.CheckPASA();
|
||||||
|
}
|
||||||
this.dataGridPassengerList.Items.Refresh();
|
this.dataGridPassengerList.Items.Refresh();
|
||||||
epd.PAS = new PAS
|
epd.PAS = new PAS
|
||||||
{
|
{
|
||||||
Identifier = PAS.GetNewIdentifier(_pasMessage.Elements),
|
Identifier = PAS.GetNewIdentifier(_pasMessage.Elements),
|
||||||
MessageHeader = _pasMessage
|
MessageHeader = _pasMessage
|
||||||
};
|
};
|
||||||
this.SublistElementChanged(Message.NotificationClass.PAS);
|
this.SublistElementChanged(Message.NotificationClass.PASA);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (epd.ShowDialog() ?? false)
|
if (epd.ShowDialog() ?? false)
|
||||||
{
|
{
|
||||||
if (!_pasMessage.Elements.Contains(epd.PAS))
|
if (!_pasMessage.Elements.Contains(epd.PAS))
|
||||||
|
{
|
||||||
_pasMessage.Elements.Add(epd.PAS);
|
_pasMessage.Elements.Add(epd.PAS);
|
||||||
|
this.CheckPASA();
|
||||||
|
}
|
||||||
epd.PAS.IsDirty = true;
|
epd.PAS.IsDirty = true;
|
||||||
this.dataGridPassengerList.Items.Refresh();
|
this.dataGridPassengerList.Items.Refresh();
|
||||||
this.SublistElementChanged(Message.NotificationClass.PAS);
|
this.SublistElementChanged(Message.NotificationClass.PASA);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -437,9 +640,29 @@ namespace ENI2.DetailViewControls
|
|||||||
this.DataGridPassengerList_CreateRequested();
|
this.DataGridPassengerList_CreateRequested();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
private void DataGridPassengerList_MultiEditRequested(List<DatabaseEntity> databaseEntities)
|
||||||
|
{
|
||||||
|
List<PAS> pasList = new List<PAS>();
|
||||||
|
foreach (PAS apas in databaseEntities.Cast<PAS>())
|
||||||
|
pasList.Add(apas);
|
||||||
|
|
||||||
/* XXX : TODO
|
// write common values of all PAS entities to template entity
|
||||||
|
PAS pas = PAS.CreateCommon(pasList);
|
||||||
|
|
||||||
|
EditPASDialog dialog = new EditPASDialog();
|
||||||
|
dialog.PAS = pas;
|
||||||
|
dialog.AddVisible = false;
|
||||||
|
if (dialog.ShowDialog() ?? false)
|
||||||
|
{
|
||||||
|
// write back changed values from pas to all entities and mark them as changed
|
||||||
|
PAS.WriteTemplateToList(pas, pasList);
|
||||||
|
|
||||||
|
this.SublistElementChanged(Message.NotificationClass.PASA);
|
||||||
|
this.dataGridPassengerList.Items.Refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region passenger grid departure
|
#region passenger grid departure
|
||||||
|
|
||||||
@ -457,8 +680,11 @@ namespace ENI2.DetailViewControls
|
|||||||
{
|
{
|
||||||
epd.CopyValuesToEntity();
|
epd.CopyValuesToEntity();
|
||||||
if (!this._pasdMessage.Elements.Contains(epd.PAS))
|
if (!this._pasdMessage.Elements.Contains(epd.PAS))
|
||||||
|
{
|
||||||
this._pasdMessage.Elements.Add(epd.PAS);
|
this._pasdMessage.Elements.Add(epd.PAS);
|
||||||
this.dataGridPassengerList.Items.Refresh();
|
this.CheckPASD();
|
||||||
|
}
|
||||||
|
this.dataGridPassengerListDeparture.Items.Refresh();
|
||||||
epd.PAS = new PASD
|
epd.PAS = new PASD
|
||||||
{
|
{
|
||||||
IsDeparture = true,
|
IsDeparture = true,
|
||||||
@ -471,7 +697,10 @@ namespace ENI2.DetailViewControls
|
|||||||
if (epd.ShowDialog() ?? false)
|
if (epd.ShowDialog() ?? false)
|
||||||
{
|
{
|
||||||
if (!this._pasdMessage.Elements.Contains(epd.PAS))
|
if (!this._pasdMessage.Elements.Contains(epd.PAS))
|
||||||
|
{
|
||||||
_pasdMessage.Elements.Add(epd.PAS);
|
_pasdMessage.Elements.Add(epd.PAS);
|
||||||
|
this.CheckPASD();
|
||||||
|
}
|
||||||
this.dataGridPassengerListDeparture.Items.Refresh();
|
this.dataGridPassengerListDeparture.Items.Refresh();
|
||||||
this.SublistElementChanged(Message.NotificationClass.PASD);
|
this.SublistElementChanged(Message.NotificationClass.PASD);
|
||||||
}
|
}
|
||||||
@ -505,8 +734,11 @@ namespace ENI2.DetailViewControls
|
|||||||
{
|
{
|
||||||
epd.CopyValuesToEntity();
|
epd.CopyValuesToEntity();
|
||||||
if (!_pasMessage.Elements.Contains(epd.PAS))
|
if (!_pasMessage.Elements.Contains(epd.PAS))
|
||||||
|
{
|
||||||
_pasMessage.Elements.Add(epd.PAS);
|
_pasMessage.Elements.Add(epd.PAS);
|
||||||
this.dataGridPassengerList.Items.Refresh();
|
this.CheckPASD();
|
||||||
|
}
|
||||||
|
this.dataGridPassengerListDeparture.Items.Refresh();
|
||||||
epd.PAS = new PASD
|
epd.PAS = new PASD
|
||||||
{
|
{
|
||||||
IsDeparture = true,
|
IsDeparture = true,
|
||||||
@ -519,7 +751,10 @@ namespace ENI2.DetailViewControls
|
|||||||
if (epd.ShowDialog() ?? false)
|
if (epd.ShowDialog() ?? false)
|
||||||
{
|
{
|
||||||
if (!_pasdMessage.Elements.Contains(epd.PAS))
|
if (!_pasdMessage.Elements.Contains(epd.PAS))
|
||||||
|
{
|
||||||
_pasdMessage.Elements.Add(epd.PAS);
|
_pasdMessage.Elements.Add(epd.PAS);
|
||||||
|
this.CheckPASD();
|
||||||
|
}
|
||||||
epd.PAS.IsDirty = true;
|
epd.PAS.IsDirty = true;
|
||||||
this.dataGridPassengerListDeparture.Items.Refresh();
|
this.dataGridPassengerListDeparture.Items.Refresh();
|
||||||
this.SublistElementChanged(Message.NotificationClass.PASD);
|
this.SublistElementChanged(Message.NotificationClass.PASD);
|
||||||
@ -531,9 +766,29 @@ namespace ENI2.DetailViewControls
|
|||||||
this.DataGridPassengerListDeparture_CreateRequested();
|
this.DataGridPassengerListDeparture_CreateRequested();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
private void DataGridPassengerListDeparture_MultiEditRequested(List<DatabaseEntity> databaseEntities)
|
||||||
|
{
|
||||||
|
List<PAS> pasList = new List<PAS>();
|
||||||
|
foreach (PAS apas in databaseEntities.Cast<PAS>())
|
||||||
|
pasList.Add(apas);
|
||||||
|
|
||||||
*/
|
// write common values of all PAS entities to template entity
|
||||||
|
PAS pas = PAS.CreateCommon(pasList);
|
||||||
|
|
||||||
|
EditPASDialog dialog = new EditPASDialog();
|
||||||
|
dialog.PAS = pas;
|
||||||
|
dialog.AddVisible = false;
|
||||||
|
if (dialog.ShowDialog() ?? false)
|
||||||
|
{
|
||||||
|
// write back changed values from pas to all entities and mark them as changed
|
||||||
|
PAS.WriteTemplateToList(pas, pasList);
|
||||||
|
|
||||||
|
this.SublistElementChanged(Message.NotificationClass.PASD);
|
||||||
|
this.dataGridPassengerListDeparture.Items.Refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region crew grid arrival
|
#region crew grid arrival
|
||||||
|
|
||||||
@ -549,23 +804,29 @@ namespace ENI2.DetailViewControls
|
|||||||
ecd.AddClicked += () =>
|
ecd.AddClicked += () =>
|
||||||
{
|
{
|
||||||
ecd.CopyValuesToEntity();
|
ecd.CopyValuesToEntity();
|
||||||
if(!this._crewMessage.Elements.Contains(ecd.CREW))
|
if (!this._crewMessage.Elements.Contains(ecd.CREW))
|
||||||
|
{
|
||||||
this._crewMessage.Elements.Add(ecd.CREW);
|
this._crewMessage.Elements.Add(ecd.CREW);
|
||||||
this.dataGridCrewList.Items.Refresh();
|
this.CheckCREWA();
|
||||||
|
}
|
||||||
|
this.dataGridCrewList.Items.Refresh();
|
||||||
ecd.CREW = new CREW
|
ecd.CREW = new CREW
|
||||||
{
|
{
|
||||||
MessageHeader = this._crewMessage,
|
MessageHeader = this._crewMessage,
|
||||||
Identifier = CREW.GetNewIdentifier(_crewMessage.Elements)
|
Identifier = CREW.GetNewIdentifier(_crewMessage.Elements)
|
||||||
};
|
};
|
||||||
this.SublistElementChanged(Message.NotificationClass.CREW);
|
this.SublistElementChanged(Message.NotificationClass.CREWA);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (ecd.ShowDialog() ?? false)
|
if (ecd.ShowDialog() ?? false)
|
||||||
{
|
{
|
||||||
if(!this._crewMessage.Elements.Contains(ecd.CREW))
|
if (!this._crewMessage.Elements.Contains(ecd.CREW))
|
||||||
_crewMessage.Elements.Add(ecd.CREW);
|
{
|
||||||
|
_crewMessage.Elements.Add(ecd.CREW);
|
||||||
|
this.CheckCREWA();
|
||||||
|
}
|
||||||
this.dataGridCrewList.Items.Refresh();
|
this.dataGridCrewList.Items.Refresh();
|
||||||
this.SublistElementChanged(Message.NotificationClass.CREW);
|
this.SublistElementChanged(Message.NotificationClass.CREWA);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -582,7 +843,7 @@ namespace ENI2.DetailViewControls
|
|||||||
private void DataGridCrewList_RefreshGrid()
|
private void DataGridCrewList_RefreshGrid()
|
||||||
{
|
{
|
||||||
DatabaseEntity.ResetIdentifiers(_crewMessage.Elements);
|
DatabaseEntity.ResetIdentifiers(_crewMessage.Elements);
|
||||||
this.SublistElementChanged(Message.NotificationClass.CREW);
|
this.SublistElementChanged(Message.NotificationClass.CREWA);
|
||||||
this.dataGridCrewList.Items.Refresh();
|
this.dataGridCrewList.Items.Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -596,24 +857,30 @@ namespace ENI2.DetailViewControls
|
|||||||
ecd.AddClicked += () =>
|
ecd.AddClicked += () =>
|
||||||
{
|
{
|
||||||
ecd.CopyValuesToEntity();
|
ecd.CopyValuesToEntity();
|
||||||
if(!_crewMessage.Elements.Contains(ecd.CREW))
|
if (!_crewMessage.Elements.Contains(ecd.CREW))
|
||||||
|
{
|
||||||
_crewMessage.Elements.Add(ecd.CREW);
|
_crewMessage.Elements.Add(ecd.CREW);
|
||||||
|
this.CheckCREWA();
|
||||||
|
}
|
||||||
this.dataGridCrewList.Items.Refresh();
|
this.dataGridCrewList.Items.Refresh();
|
||||||
ecd.CREW = new CREW
|
ecd.CREW = new CREW
|
||||||
{
|
{
|
||||||
Identifier = CREW.GetNewIdentifier(_crewMessage.Elements),
|
Identifier = CREW.GetNewIdentifier(_crewMessage.Elements),
|
||||||
MessageHeader = _crewMessage
|
MessageHeader = _crewMessage
|
||||||
};
|
};
|
||||||
this.SublistElementChanged(Message.NotificationClass.CREW);
|
this.SublistElementChanged(Message.NotificationClass.CREWA);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (ecd.ShowDialog() ?? false)
|
if (ecd.ShowDialog() ?? false)
|
||||||
{
|
{
|
||||||
if (!_crewMessage.Elements.Contains(ecd.CREW))
|
if (!_crewMessage.Elements.Contains(ecd.CREW))
|
||||||
|
{
|
||||||
_crewMessage.Elements.Add(ecd.CREW);
|
_crewMessage.Elements.Add(ecd.CREW);
|
||||||
|
this.CheckCREWA();
|
||||||
|
}
|
||||||
ecd.CREW.IsDirty = true;
|
ecd.CREW.IsDirty = true;
|
||||||
this.dataGridCrewList.Items.Refresh();
|
this.dataGridCrewList.Items.Refresh();
|
||||||
this.SublistElementChanged(Message.NotificationClass.CREW);
|
this.SublistElementChanged(Message.NotificationClass.CREWA);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -622,9 +889,29 @@ namespace ENI2.DetailViewControls
|
|||||||
this.DataGridCrewList_CreateRequested();
|
this.DataGridCrewList_CreateRequested();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
private void DataGridCrewList_MultiEditRequested(List<DatabaseEntity> databaseEntities)
|
||||||
|
{
|
||||||
|
List<CREW> crewList = new List<CREW>();
|
||||||
|
foreach (CREW acrew in databaseEntities.Cast<CREW>())
|
||||||
|
crewList.Add(acrew);
|
||||||
|
|
||||||
/* XXX : TODO
|
// write common values of all CREW entities to template entity
|
||||||
|
CREW crew = CREW.CreateCommon(crewList);
|
||||||
|
|
||||||
|
EditCREWDialog dialog = new EditCREWDialog();
|
||||||
|
dialog.CREW = crew;
|
||||||
|
dialog.AddVisible = false;
|
||||||
|
if(dialog.ShowDialog() ?? false)
|
||||||
|
{
|
||||||
|
// write back changed values from crew to all entities and mark them as changed
|
||||||
|
CREW.WriteTemplateToList(crew, crewList);
|
||||||
|
|
||||||
|
this.SublistElementChanged(Message.NotificationClass.CREWA);
|
||||||
|
this.dataGridCrewList.Items.Refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region crew grid departure
|
#region crew grid departure
|
||||||
|
|
||||||
@ -642,7 +929,10 @@ namespace ENI2.DetailViewControls
|
|||||||
{
|
{
|
||||||
ecd.CopyValuesToEntity();
|
ecd.CopyValuesToEntity();
|
||||||
if (!this._crewdMessage.Elements.Contains(ecd.CREW))
|
if (!this._crewdMessage.Elements.Contains(ecd.CREW))
|
||||||
|
{
|
||||||
this._crewdMessage.Elements.Add(ecd.CREW);
|
this._crewdMessage.Elements.Add(ecd.CREW);
|
||||||
|
this.CheckCREWD();
|
||||||
|
}
|
||||||
this.dataGridCrewListDeparture.Items.Refresh();
|
this.dataGridCrewListDeparture.Items.Refresh();
|
||||||
ecd.CREW = new CREWD
|
ecd.CREW = new CREWD
|
||||||
{
|
{
|
||||||
@ -656,7 +946,10 @@ namespace ENI2.DetailViewControls
|
|||||||
if (ecd.ShowDialog() ?? false)
|
if (ecd.ShowDialog() ?? false)
|
||||||
{
|
{
|
||||||
if (!this._crewdMessage.Elements.Contains(ecd.CREW))
|
if (!this._crewdMessage.Elements.Contains(ecd.CREW))
|
||||||
|
{
|
||||||
_crewdMessage.Elements.Add(ecd.CREW);
|
_crewdMessage.Elements.Add(ecd.CREW);
|
||||||
|
this.CheckCREWD();
|
||||||
|
}
|
||||||
this.dataGridCrewListDeparture.Items.Refresh();
|
this.dataGridCrewListDeparture.Items.Refresh();
|
||||||
this.SublistElementChanged(Message.NotificationClass.CREWD);
|
this.SublistElementChanged(Message.NotificationClass.CREWD);
|
||||||
}
|
}
|
||||||
@ -667,7 +960,7 @@ namespace ENI2.DetailViewControls
|
|||||||
if (obj is CREWD crewd)
|
if (obj is CREWD crewd)
|
||||||
{
|
{
|
||||||
// are you sure dialog is in base class
|
// are you sure dialog is in base class
|
||||||
_crewMessage.Elements.Remove(crewd);
|
_crewdMessage.Elements.Remove(crewd);
|
||||||
DBManager.Instance.Delete(crewd);
|
DBManager.Instance.Delete(crewd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -690,7 +983,10 @@ namespace ENI2.DetailViewControls
|
|||||||
{
|
{
|
||||||
ecd.CopyValuesToEntity();
|
ecd.CopyValuesToEntity();
|
||||||
if (!_crewdMessage.Elements.Contains(ecd.CREW))
|
if (!_crewdMessage.Elements.Contains(ecd.CREW))
|
||||||
|
{
|
||||||
_crewdMessage.Elements.Add(ecd.CREW);
|
_crewdMessage.Elements.Add(ecd.CREW);
|
||||||
|
this.CheckCREWD();
|
||||||
|
}
|
||||||
this.dataGridCrewListDeparture.Items.Refresh();
|
this.dataGridCrewListDeparture.Items.Refresh();
|
||||||
ecd.CREW = new CREWD
|
ecd.CREW = new CREWD
|
||||||
{
|
{
|
||||||
@ -704,7 +1000,10 @@ namespace ENI2.DetailViewControls
|
|||||||
if (ecd.ShowDialog() ?? false)
|
if (ecd.ShowDialog() ?? false)
|
||||||
{
|
{
|
||||||
if (!_crewdMessage.Elements.Contains(ecd.CREW))
|
if (!_crewdMessage.Elements.Contains(ecd.CREW))
|
||||||
|
{
|
||||||
_crewdMessage.Elements.Add(ecd.CREW);
|
_crewdMessage.Elements.Add(ecd.CREW);
|
||||||
|
this.CheckCREWD();
|
||||||
|
}
|
||||||
ecd.CREW.IsDirty = true;
|
ecd.CREW.IsDirty = true;
|
||||||
this.dataGridCrewListDeparture.Items.Refresh();
|
this.dataGridCrewListDeparture.Items.Refresh();
|
||||||
this.SublistElementChanged(Message.NotificationClass.CREWD);
|
this.SublistElementChanged(Message.NotificationClass.CREWD);
|
||||||
@ -716,23 +1015,32 @@ namespace ENI2.DetailViewControls
|
|||||||
this.DataGridCrewListDeparture_CreateRequested();
|
this.DataGridCrewListDeparture_CreateRequested();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
private void DataGridCrewListDeparture_MultiEditRequested(List<DatabaseEntity> databaseEntities)
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
#region Excel import
|
|
||||||
|
|
||||||
private string getValueAsString(IExcelDataReader reader, int index)
|
|
||||||
{
|
{
|
||||||
Type fieldType = reader.GetFieldType(index);
|
List<CREW> crewList = new List<CREW>();
|
||||||
if (fieldType == null) return null;
|
foreach (CREW acrew in databaseEntities.Cast<CREW>())
|
||||||
if (fieldType == typeof(double))
|
crewList.Add(acrew);
|
||||||
return reader.GetDouble(index).ToString();
|
|
||||||
if (fieldType == typeof(int))
|
// write common values of all CREW entities to template entity
|
||||||
return reader.GetInt32(index).ToString();
|
CREW crew = CREW.CreateCommon(crewList);
|
||||||
return reader.GetString(index);
|
|
||||||
|
EditCREWDialog dialog = new EditCREWDialog();
|
||||||
|
dialog.CREW = crew;
|
||||||
|
dialog.AddVisible = false;
|
||||||
|
if (dialog.ShowDialog() ?? false)
|
||||||
|
{
|
||||||
|
// write back changed values from crew to all entities and mark them as changed
|
||||||
|
CREW.WriteTemplateToList(crew, crewList);
|
||||||
|
|
||||||
|
this.SublistElementChanged(Message.NotificationClass.CREWD);
|
||||||
|
this.dataGridCrewListDeparture.Items.Refresh();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Excel import
|
||||||
|
|
||||||
private void buttonImportExcelCrew_Click(object sender, RoutedEventArgs e)
|
private void buttonImportExcelCrew_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
OpenFileDialog ofd = new OpenFileDialog
|
OpenFileDialog ofd = new OpenFileDialog
|
||||||
@ -778,10 +1086,10 @@ namespace ENI2.DetailViewControls
|
|||||||
if (!reader.IsDBNull(6)) crew.CrewMemberCountryOfBirth = reader.GetString(6).Substring(0, 2).ToUpper();
|
if (!reader.IsDBNull(6)) crew.CrewMemberCountryOfBirth = reader.GetString(6).Substring(0, 2).ToUpper();
|
||||||
if (!reader.IsDBNull(7)) crew.CrewMemberDateOfBirth = reader.GetDateTime(7);
|
if (!reader.IsDBNull(7)) crew.CrewMemberDateOfBirth = reader.GetDateTime(7);
|
||||||
if (!reader.IsDBNull(8)) crew.CrewMemberIdentityDocumentType = GlobalStructures.ReadIdentityDocumentType(reader.GetString(8));
|
if (!reader.IsDBNull(8)) crew.CrewMemberIdentityDocumentType = GlobalStructures.ReadIdentityDocumentType(reader.GetString(8));
|
||||||
if (!reader.IsDBNull(9)) crew.CrewMemberIdentityDocumentId = this.getValueAsString(reader, 9).Clean();
|
if (!reader.IsDBNull(9)) crew.CrewMemberIdentityDocumentId = reader.ReadAsString(9).Clean();
|
||||||
if (!reader.IsDBNull(10)) crew.CrewMemberIdentityDocumentIssuingState = reader.GetString(10).Substring(0, 2).ToUpper();
|
if (!reader.IsDBNull(10)) crew.CrewMemberIdentityDocumentIssuingState = reader.GetString(10).Substring(0, 2).ToUpper();
|
||||||
if (!reader.IsDBNull(11)) crew.CrewMemberIdentityDocumentExpiryDate = reader.GetDateTime(11);
|
if (!reader.IsDBNull(11)) crew.CrewMemberIdentityDocumentExpiryDate = reader.GetDateTime(11);
|
||||||
if (!reader.IsDBNull(12)) crew.CrewMemberVisaNumber = this.getValueAsString(reader, 12).Clean();
|
if (!reader.IsDBNull(12)) crew.CrewMemberVisaNumber = reader.ReadAsString(12).Clean();
|
||||||
|
|
||||||
crew.MessageHeader = this._crewMessage;
|
crew.MessageHeader = this._crewMessage;
|
||||||
crew.IsDirty = true;
|
crew.IsDirty = true;
|
||||||
@ -798,17 +1106,15 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
if (importCrew.Count > 0)
|
if (importCrew.Count > 0)
|
||||||
{
|
{
|
||||||
this.dataGridCrewList.Items.Refresh();
|
this.dataGridCrewList.Items.Refresh();
|
||||||
this.SublistElementChanged(Message.NotificationClass.CREW);
|
this.SublistElementChanged(Message.NotificationClass.CREWA);
|
||||||
MessageBox.Show(String.Format(Properties.Resources.textCrewImported, importCrew.Count), Properties.Resources.textCaptionInformation, MessageBoxButton.OK, MessageBoxImage.Information);
|
MessageBox.Show(String.Format(Properties.Resources.textCrewImported, importCrew.Count), Properties.Resources.textCaptionInformation, MessageBoxButton.OK, MessageBoxImage.Information);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stream.Close();
|
stream.Close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* XXX : TODO
|
|
||||||
|
|
||||||
private void buttonImportExcelCrewDeparture_Click(object sender, RoutedEventArgs e)
|
private void buttonImportExcelCrewDeparture_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
@ -851,18 +1157,18 @@ namespace ENI2.DetailViewControls
|
|||||||
if (crew.CrewMemberLastName.Equals("Family Name") || (crew.CrewMemberLastName.Trim().Length == 0)) continue;
|
if (crew.CrewMemberLastName.Equals("Family Name") || (crew.CrewMemberLastName.Trim().Length == 0)) continue;
|
||||||
if (!reader.IsDBNull(1)) crew.CrewMemberFirstName = reader.GetString(1);
|
if (!reader.IsDBNull(1)) crew.CrewMemberFirstName = reader.GetString(1);
|
||||||
if (!reader.IsDBNull(2)) crew.CrewMemberGender = GlobalStructures.ParseGender(reader.GetString(2));
|
if (!reader.IsDBNull(2)) crew.CrewMemberGender = GlobalStructures.ParseGender(reader.GetString(2));
|
||||||
if (!reader.IsDBNull(3)) crew.CrewMemberDuty = reader.GetString(3);
|
if (!reader.IsDBNull(3)) crew.CrewMemberDuty = reader.GetString(3).Clean();
|
||||||
if (!reader.IsDBNull(4)) crew.CrewMemberNationality = reader.GetString(4).Substring(0, 2).ToUpper();
|
if (!reader.IsDBNull(4)) crew.CrewMemberNationality = reader.GetString(4).Substring(0, 2).ToUpper();
|
||||||
if (!reader.IsDBNull(5)) crew.CrewMemberPlaceOfBirth = reader.GetString(5);
|
if (!reader.IsDBNull(5)) crew.CrewMemberPlaceOfBirth = reader.GetString(5);
|
||||||
if (!reader.IsDBNull(6)) crew.CrewMemberCountryOfBirth = reader.GetString(6).Substring(0, 2).ToUpper();
|
if (!reader.IsDBNull(6)) crew.CrewMemberCountryOfBirth = reader.GetString(6).Substring(0, 2).ToUpper();
|
||||||
if (!reader.IsDBNull(7)) crew.CrewMemberDateOfBirth = reader.GetDateTime(7);
|
if (!reader.IsDBNull(7)) crew.CrewMemberDateOfBirth = reader.GetDateTime(7);
|
||||||
if (!reader.IsDBNull(8)) crew.CrewMemberIdentityDocumentType = GlobalStructures.ReadIdentityDocumentType(reader.GetString(8));
|
if (!reader.IsDBNull(8)) crew.CrewMemberIdentityDocumentType = GlobalStructures.ReadIdentityDocumentType(reader.GetString(8));
|
||||||
if (!reader.IsDBNull(9)) crew.CrewMemberIdentityDocumentId = this.getValueAsString(reader, 9);
|
if (!reader.IsDBNull(9)) crew.CrewMemberIdentityDocumentId = reader.ReadAsString(9);
|
||||||
if (!reader.IsDBNull(10)) crew.CrewMemberIdentityDocumentIssuingState = reader.GetString(10).Substring(0, 2).ToUpper();
|
if (!reader.IsDBNull(10)) crew.CrewMemberIdentityDocumentIssuingState = reader.GetString(10).Substring(0, 2).ToUpper();
|
||||||
if (!reader.IsDBNull(11)) crew.CrewMemberIdentityDocumentExpiryDate = reader.GetDateTime(11);
|
if (!reader.IsDBNull(11)) crew.CrewMemberIdentityDocumentExpiryDate = reader.GetDateTime(11);
|
||||||
if (!reader.IsDBNull(12)) crew.CrewMemberVisaNumber = this.getValueAsString(reader, 12);
|
if (!reader.IsDBNull(12)) crew.CrewMemberVisaNumber = reader.ReadAsString(12);
|
||||||
|
|
||||||
crew.MessageHeader = this._crewMessage;
|
crew.MessageHeader = this._crewdMessage;
|
||||||
crew.IsDirty = true;
|
crew.IsDirty = true;
|
||||||
crew.Identifier = CREWD.GetNewIdentifier(this._crewdMessage.Elements);
|
crew.Identifier = CREWD.GetNewIdentifier(this._crewdMessage.Elements);
|
||||||
this._crewdMessage.Elements.Add(crew);
|
this._crewdMessage.Elements.Add(crew);
|
||||||
@ -885,9 +1191,7 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
stream.Close();
|
stream.Close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
private void buttonImportExcelPassenger_Click(object sender, RoutedEventArgs e)
|
private void buttonImportExcelPassenger_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
@ -941,12 +1245,12 @@ namespace ENI2.DetailViewControls
|
|||||||
if (!reader.IsDBNull(8)) pas.PassengerCountryOfBirth = reader.GetString(8).Substring(0, 2).ToUpper().Clean();
|
if (!reader.IsDBNull(8)) pas.PassengerCountryOfBirth = reader.GetString(8).Substring(0, 2).ToUpper().Clean();
|
||||||
if (!reader.IsDBNull(9)) pas.PassengerDateOfBirth = reader.GetDateTime(9);
|
if (!reader.IsDBNull(9)) pas.PassengerDateOfBirth = reader.GetDateTime(9);
|
||||||
if (!reader.IsDBNull(10)) pas.PassengerIdentityDocumentType = GlobalStructures.ReadIdentityDocumentType(reader.GetString(10));
|
if (!reader.IsDBNull(10)) pas.PassengerIdentityDocumentType = GlobalStructures.ReadIdentityDocumentType(reader.GetString(10));
|
||||||
if (!reader.IsDBNull(11)) pas.PassengerIdentityDocumentId = this.getValueAsString(reader, 11).Clean();
|
if (!reader.IsDBNull(11)) pas.PassengerIdentityDocumentId = reader.ReadAsString(11).Clean();
|
||||||
if (!reader.IsDBNull(12)) pas.PassengerIdentityDocumentIssuingState = reader.GetString(12).Substring(0, 2).ToUpper();
|
if (!reader.IsDBNull(12)) pas.PassengerIdentityDocumentIssuingState = reader.GetString(12).Substring(0, 2).ToUpper();
|
||||||
if (!reader.IsDBNull(13)) pas.PassengerIdentityDocumentExpiryDate = reader.GetDateTime(13);
|
if (!reader.IsDBNull(13)) pas.PassengerIdentityDocumentExpiryDate = reader.GetDateTime(13);
|
||||||
if (!reader.IsDBNull(14)) pas.PassengerVisaNumber = this.getValueAsString(reader, 14).Clean();
|
if (!reader.IsDBNull(14)) pas.PassengerVisaNumber = reader.ReadAsString(14).Clean();
|
||||||
if (!reader.IsDBNull(15)) pas.EmergencyCare = reader.GetString(15).Clean();
|
if (!reader.IsDBNull(15)) pas.EmergencyCare = reader.GetString(15).Clean();
|
||||||
if (!reader.IsDBNull(16)) pas.EmergencyContactNumber = this.getValueAsString(reader, 16).Clean();
|
if (!reader.IsDBNull(16)) pas.EmergencyContactNumber = reader.ReadAsString(16).Clean();
|
||||||
|
|
||||||
pas.MessageHeader = this._pasMessage;
|
pas.MessageHeader = this._pasMessage;
|
||||||
pas.IsDirty = true;
|
pas.IsDirty = true;
|
||||||
@ -964,15 +1268,13 @@ namespace ENI2.DetailViewControls
|
|||||||
if (importPassenger.Count > 0)
|
if (importPassenger.Count > 0)
|
||||||
{
|
{
|
||||||
this.dataGridPassengerList.Items.Refresh();
|
this.dataGridPassengerList.Items.Refresh();
|
||||||
this.SublistElementChanged(Message.NotificationClass.PAS);
|
this.SublistElementChanged(Message.NotificationClass.PASA);
|
||||||
MessageBox.Show(String.Format(Properties.Resources.textPassengerImported, importPassenger.Count), Properties.Resources.textCaptionInformation, MessageBoxButton.OK, MessageBoxImage.Information);
|
MessageBox.Show(String.Format(Properties.Resources.textPassengerImported, importPassenger.Count), Properties.Resources.textCaptionInformation, MessageBoxButton.OK, MessageBoxImage.Information);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stream.Close();
|
stream.Close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
private void buttonImportExcelPassengerDeparture_Click(object sender, RoutedEventArgs e)
|
private void buttonImportExcelPassengerDeparture_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
@ -1026,12 +1328,12 @@ namespace ENI2.DetailViewControls
|
|||||||
if (!reader.IsDBNull(8)) pas.PassengerCountryOfBirth = reader.GetString(8).Substring(0, 2).ToUpper();
|
if (!reader.IsDBNull(8)) pas.PassengerCountryOfBirth = reader.GetString(8).Substring(0, 2).ToUpper();
|
||||||
if (!reader.IsDBNull(9)) pas.PassengerDateOfBirth = reader.GetDateTime(9);
|
if (!reader.IsDBNull(9)) pas.PassengerDateOfBirth = reader.GetDateTime(9);
|
||||||
if (!reader.IsDBNull(10)) pas.PassengerIdentityDocumentType = GlobalStructures.ReadIdentityDocumentType(reader.GetString(10));
|
if (!reader.IsDBNull(10)) pas.PassengerIdentityDocumentType = GlobalStructures.ReadIdentityDocumentType(reader.GetString(10));
|
||||||
if (!reader.IsDBNull(11)) pas.PassengerIdentityDocumentId = this.getValueAsString(reader, 11);
|
if (!reader.IsDBNull(11)) pas.PassengerIdentityDocumentId = reader.ReadAsString(11);
|
||||||
if (!reader.IsDBNull(12)) pas.PassengerIdentityDocumentIssuingState = reader.GetString(12).Substring(0, 2).ToUpper();
|
if (!reader.IsDBNull(12)) pas.PassengerIdentityDocumentIssuingState = reader.GetString(12).Substring(0, 2).ToUpper();
|
||||||
if (!reader.IsDBNull(13)) pas.PassengerIdentityDocumentExpiryDate = reader.GetDateTime(13);
|
if (!reader.IsDBNull(13)) pas.PassengerIdentityDocumentExpiryDate = reader.GetDateTime(13);
|
||||||
if (!reader.IsDBNull(14)) pas.PassengerVisaNumber = this.getValueAsString(reader, 14);
|
if (!reader.IsDBNull(14)) pas.PassengerVisaNumber = reader.ReadAsString(14);
|
||||||
if (!reader.IsDBNull(15)) pas.EmergencyCare = reader.GetString(15);
|
if (!reader.IsDBNull(15)) pas.EmergencyCare = reader.GetString(15);
|
||||||
if (!reader.IsDBNull(16)) pas.EmergencyContactNumber = this.getValueAsString(reader, 16);
|
if (!reader.IsDBNull(16)) pas.EmergencyContactNumber = reader.ReadAsString(16);
|
||||||
|
|
||||||
pas.MessageHeader = this._pasMessage;
|
pas.MessageHeader = this._pasMessage;
|
||||||
pas.IsDirty = true;
|
pas.IsDirty = true;
|
||||||
@ -1055,9 +1357,7 @@ namespace ENI2.DetailViewControls
|
|||||||
}
|
}
|
||||||
stream.Close();
|
stream.Close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@ -1083,45 +1383,32 @@ namespace ENI2.DetailViewControls
|
|||||||
HighlightService.HighlightControl(this.groupBoxPassengerList, HighlightService.HighlightStyle.VIOLATION, this._pasMessage);
|
HighlightService.HighlightControl(this.groupBoxPassengerList, HighlightService.HighlightStyle.VIOLATION, this._pasMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region mouse wheel
|
#region Schengen/PAX checkboxes changed event handler
|
||||||
|
|
||||||
private void ScrollViewer_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
|
|
||||||
{
|
|
||||||
ScrollViewer scv = (ScrollViewer)sender;
|
|
||||||
scv.ScrollToVerticalOffset(scv.VerticalOffset - e.Delta);
|
|
||||||
e.Handled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Schengen/PAX checkboxes changed event handler
|
|
||||||
|
|
||||||
/* XXX : TODO
|
|
||||||
|
|
||||||
private void checkBoxCrewNotificationSchengen_Click(object sender, RoutedEventArgs e)
|
private void checkBoxCrewNotificationSchengen_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
foreach(CREW crew in _crewMessage.Elements)
|
foreach(CREW crew in _crewMessage.Elements.Cast<CREW>())
|
||||||
{
|
{
|
||||||
crew.NotificationSchengen = checkBoxCrewNotificationSchengen.IsChecked;
|
crew.NotificationSchengen = checkBoxCrewNotificationSchengen.IsChecked;
|
||||||
}
|
}
|
||||||
this.SublistElementChanged(Message.NotificationClass.CREW);
|
this.SublistElementChanged(Message.NotificationClass.CREWA);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkBoxCrewNotificationPAX_Click(object sender, RoutedEventArgs e)
|
private void checkBoxCrewNotificationPAX_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
|
|
||||||
foreach (CREW crew in _crewMessage.Elements)
|
foreach (CREW crew in _crewMessage.Elements.Cast<CREW>())
|
||||||
{
|
{
|
||||||
crew.NotificationPAX = checkBoxCrewNotificationPAX.IsChecked;
|
crew.NotificationPAX = checkBoxCrewNotificationPAX.IsChecked;
|
||||||
}
|
}
|
||||||
this.SublistElementChanged(Message.NotificationClass.CREW);
|
this.SublistElementChanged(Message.NotificationClass.CREWA);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkBoxCrewNotificationSchengenDeparture_Click(object sender, RoutedEventArgs e)
|
private void checkBoxCrewNotificationSchengenDeparture_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
foreach(CREWD crewd in _crewdMessage.Elements)
|
foreach(CREWD crewd in _crewdMessage.Elements.Cast<CREWD>())
|
||||||
{
|
{
|
||||||
crewd.NotificationSchengen = checkBoxCrewNotificationSchengenDeparture.IsChecked;
|
crewd.NotificationSchengen = checkBoxCrewNotificationSchengenDeparture.IsChecked;
|
||||||
}
|
}
|
||||||
@ -1130,7 +1417,7 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
private void checkBoxCrewNotificationPAXDeparture_Click(object sender, RoutedEventArgs e)
|
private void checkBoxCrewNotificationPAXDeparture_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
foreach (CREWD crewd in _crewdMessage.Elements)
|
foreach (CREWD crewd in _crewdMessage.Elements.Cast<CREWD>())
|
||||||
{
|
{
|
||||||
crewd.NotificationPAX = checkBoxCrewNotificationPAXDeparture.IsChecked;
|
crewd.NotificationPAX = checkBoxCrewNotificationPAXDeparture.IsChecked;
|
||||||
}
|
}
|
||||||
@ -1139,25 +1426,25 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
private void checkBoxPasNotificationSchengen_Click(object sender, RoutedEventArgs e)
|
private void checkBoxPasNotificationSchengen_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
foreach(PAS pas in _pasMessage.Elements)
|
foreach(PAS pas in _pasMessage.Elements.Cast<PAS>())
|
||||||
{
|
{
|
||||||
pas.NotificationSchengen = checkBoxPasNotificationSchengen.IsChecked;
|
pas.NotificationSchengen = checkBoxPasNotificationSchengen.IsChecked;
|
||||||
}
|
}
|
||||||
this.SublistElementChanged(Message.NotificationClass.PAS);
|
this.SublistElementChanged(Message.NotificationClass.PASA);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkBoxPasNotificationPAX_Click(object sender, RoutedEventArgs e)
|
private void checkBoxPasNotificationPAX_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
foreach(PAS pas in _pasMessage.Elements)
|
foreach(PAS pas in _pasMessage.Elements.Cast<PAS>())
|
||||||
{
|
{
|
||||||
pas.NotificationPAX = checkBoxPasNotificationPAX.IsChecked;
|
pas.NotificationPAX = checkBoxPasNotificationPAX.IsChecked;
|
||||||
}
|
}
|
||||||
this.SublistElementChanged(Message.NotificationClass.PAS);
|
this.SublistElementChanged(Message.NotificationClass.PASA);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkBoxPasNotificationSchengenDeparture_Click(object sender, RoutedEventArgs e)
|
private void checkBoxPasNotificationSchengenDeparture_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
foreach(PASD pasd in _pasdMessage.Elements)
|
foreach(PASD pasd in _pasdMessage.Elements.Cast<PASD>())
|
||||||
{
|
{
|
||||||
pasd.NotificationSchengen = checkBoxPasNotificationSchengenDeparture.IsChecked;
|
pasd.NotificationSchengen = checkBoxPasNotificationSchengenDeparture.IsChecked;
|
||||||
}
|
}
|
||||||
@ -1166,14 +1453,72 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
private void checkBoxPasNotificationPAXDeparture_Click(object sender, RoutedEventArgs e)
|
private void checkBoxPasNotificationPAXDeparture_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
foreach(PASD pasd in _pasdMessage.Elements)
|
foreach(PASD pasd in _pasdMessage.Elements.Cast<PASD>())
|
||||||
{
|
{
|
||||||
pasd.NotificationPAX = checkBoxPasNotificationPAXDeparture.IsChecked;
|
pasd.NotificationPAX = checkBoxPasNotificationPAXDeparture.IsChecked;
|
||||||
}
|
}
|
||||||
this.SublistElementChanged(Message.NotificationClass.PASD);
|
this.SublistElementChanged(Message.NotificationClass.PASD);
|
||||||
}
|
}
|
||||||
|
|
||||||
*/
|
#endregion
|
||||||
|
|
||||||
|
#region Buttons to delete all entries from CREWA CREWD PASA PASD
|
||||||
|
|
||||||
|
private async void buttonDeleteAllCrewA_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if(MessageBox.Show(Properties.Resources.textConfimDeleteAllEntries, Properties.Resources.textConfirmation, MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes)
|
||||||
|
{
|
||||||
|
foreach(CREW crewa in this._crewMessage.Elements.Cast<CREW>())
|
||||||
|
{
|
||||||
|
await DBManagerAsync.DeleteAsync(crewa);
|
||||||
|
}
|
||||||
|
this._crewMessage.Elements.Clear();
|
||||||
|
this.dataGridCrewList.Items.Refresh();
|
||||||
|
this.SublistElementChanged(Message.NotificationClass.CREWA);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void buttonDeleteAllCrewD_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (MessageBox.Show(Properties.Resources.textConfimDeleteAllEntries, Properties.Resources.textConfirmation, MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes)
|
||||||
|
{
|
||||||
|
foreach (CREWD crewd in this._crewdMessage.Elements.Cast<CREWD>())
|
||||||
|
{
|
||||||
|
await DBManagerAsync.DeleteAsync(crewd);
|
||||||
|
}
|
||||||
|
this._crewdMessage.Elements.Clear();
|
||||||
|
this.dataGridCrewListDeparture.Items.Refresh();
|
||||||
|
this.SublistElementChanged(Message.NotificationClass.CREWD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void buttonDeleteAllPasA_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (MessageBox.Show(Properties.Resources.textConfimDeleteAllEntries, Properties.Resources.textConfirmation, MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes)
|
||||||
|
{
|
||||||
|
foreach (PAS pasa in this._pasMessage.Elements.Cast<PAS>())
|
||||||
|
{
|
||||||
|
await DBManagerAsync.DeleteAsync(pasa);
|
||||||
|
}
|
||||||
|
this._pasMessage.Elements.Clear();
|
||||||
|
this.dataGridPassengerList.Items.Refresh();
|
||||||
|
this.SublistElementChanged(Message.NotificationClass.PASA);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void buttonDeleteAllPasD_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (MessageBox.Show(Properties.Resources.textConfimDeleteAllEntries, Properties.Resources.textConfirmation, MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes)
|
||||||
|
{
|
||||||
|
foreach (PASD pasd in this._pasdMessage.Elements.Cast<PASD>())
|
||||||
|
{
|
||||||
|
await DBManagerAsync.DeleteAsync(pasd);
|
||||||
|
}
|
||||||
|
this._pasdMessage.Elements.Clear();
|
||||||
|
this.dataGridPassengerListDeparture.Items.Refresh();
|
||||||
|
this.SublistElementChanged(Message.NotificationClass.PASD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|||||||
@ -197,6 +197,12 @@ namespace ENI2.DetailViewControls
|
|||||||
this._initialized = true;
|
this._initialized = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override int SelectedTabIndex
|
||||||
|
{
|
||||||
|
get { return this.tabControlPositions.SelectedIndex; }
|
||||||
|
set { this.tabControlPositions.SelectedIndex = value; }
|
||||||
|
}
|
||||||
|
|
||||||
#region SetEnabled
|
#region SetEnabled
|
||||||
|
|
||||||
public override void SetEnabled(bool enabled)
|
public override void SetEnabled(bool enabled)
|
||||||
@ -324,24 +330,7 @@ namespace ENI2.DetailViewControls
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Beim Hinzufügen der allerersten Gefahrgutposition sollen die Flags vorbelegt werden
|
|
||||||
/// </summary>
|
|
||||||
void SetHAZGlobalFlags()
|
|
||||||
{
|
|
||||||
HAZ haz = this.IsDeparture ? this.hazd : this.haza;
|
|
||||||
|
|
||||||
int totalCount = haz.MARPOLPositions.Count + haz.IMDGPositions.Count + haz.IGCPositions.Count + haz.IBCPositions.Count + haz.IMSBCPositions.Count;
|
|
||||||
if(totalCount == 1)
|
|
||||||
{
|
|
||||||
if (!(this.checkBoxDangerousGoodsOnBoard.IsChecked ?? false)) this.checkBoxDangerousGoodsOnBoard.IsChecked = true;
|
|
||||||
if (this.checkBoxMoUBaltic.IsChecked ?? true) this.checkBoxMoUBaltic.IsChecked = false;
|
|
||||||
haz.NoDPGOnBoardOnArrival = false;
|
|
||||||
haz.MOUBaltic = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#region MARPOL datagrid handlers
|
#region MARPOL datagrid handlers
|
||||||
|
|
||||||
@ -898,5 +887,26 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region private methods
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Beim Hinzufügen der allerersten Gefahrgutposition sollen die Flags vorbelegt werden
|
||||||
|
/// </summary>
|
||||||
|
void SetHAZGlobalFlags()
|
||||||
|
{
|
||||||
|
HAZ haz = this.IsDeparture ? this.hazd : this.haza;
|
||||||
|
|
||||||
|
int totalCount = haz.MARPOLPositions.Count + haz.IMDGPositions.Count + haz.IGCPositions.Count + haz.IBCPositions.Count + haz.IMSBCPositions.Count;
|
||||||
|
if (totalCount == 1)
|
||||||
|
{
|
||||||
|
if (!(this.checkBoxDangerousGoodsOnBoard.IsChecked ?? false)) this.checkBoxDangerousGoodsOnBoard.IsChecked = true;
|
||||||
|
if (this.checkBoxMoUBaltic.IsChecked ?? true) this.checkBoxMoUBaltic.IsChecked = false;
|
||||||
|
haz.NoDPGOnBoardOnArrival = false;
|
||||||
|
haz.MOUBaltic = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -70,8 +70,24 @@
|
|||||||
AutoGenerateColumns="False" Margin="0,5,0,0">
|
AutoGenerateColumns="False" Margin="0,5,0,0">
|
||||||
<DataGrid.Columns>
|
<DataGrid.Columns>
|
||||||
<DataGridTextColumn Header="" Binding="{Binding Identifier}" IsReadOnly="True" />
|
<DataGridTextColumn Header="" Binding="{Binding Identifier}" IsReadOnly="True" />
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textBunkerType}" Binding="{Binding BunkerFuelType}" IsReadOnly="True" Width="0.2*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textBunkerType}" Width="0.2*">
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textBunkerQuantity}" Binding="{Binding BunkerFuelQuantity_TNE, Mode=TwoWay}" IsReadOnly="True" Width="0.8*" />
|
<DataGridTextColumn.Binding>
|
||||||
|
<Binding Path="BunkerFuelType" Mode="TwoWay">
|
||||||
|
<Binding.ValidationRules>
|
||||||
|
<util:StringValidationRule MaxLength="25" />
|
||||||
|
</Binding.ValidationRules>
|
||||||
|
</Binding>
|
||||||
|
</DataGridTextColumn.Binding>
|
||||||
|
</DataGridTextColumn>
|
||||||
|
<DataGridTextColumn Header="{x:Static p:Resources.textBunkerQuantity}" IsReadOnly="False" Width="0.8*">
|
||||||
|
<DataGridTextColumn.Binding>
|
||||||
|
<Binding Path="BunkerFuelQuantity_TNE" Mode="TwoWay">
|
||||||
|
<Binding.ValidationRules>
|
||||||
|
<util:NumberValidationRule MaxValue="10000" />
|
||||||
|
</Binding.ValidationRules>
|
||||||
|
</Binding>
|
||||||
|
</DataGridTextColumn.Binding>
|
||||||
|
</DataGridTextColumn>
|
||||||
</DataGrid.Columns>
|
</DataGrid.Columns>
|
||||||
</enictrl:ENIDataGrid>
|
</enictrl:ENIDataGrid>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
|
|||||||
@ -40,6 +40,7 @@ namespace ENI2.DetailViewControls
|
|||||||
this.RegisterIntegerUpDownChange(this.integerUpDownPassengersOnBoard, Message.NotificationClass.POBD);
|
this.RegisterIntegerUpDownChange(this.integerUpDownPassengersOnBoard, Message.NotificationClass.POBD);
|
||||||
this.RegisterIntegerUpDownChange(this.integerUpDownPersonsOnBoard, Message.NotificationClass.POBD);
|
this.RegisterIntegerUpDownChange(this.integerUpDownPersonsOnBoard, Message.NotificationClass.POBD);
|
||||||
this.RegisterIntegerUpDownChange(this.integerUpDownStowawaysOnBoard, Message.NotificationClass.POBD);
|
this.RegisterIntegerUpDownChange(this.integerUpDownStowawaysOnBoard, Message.NotificationClass.POBD);
|
||||||
|
this.dataGridBKRD.CellEditEnding += (obj, ev) => { this.SublistElementChanged(Message.NotificationClass.BKRD); };
|
||||||
startupComplete = true;
|
startupComplete = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -167,6 +168,8 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
private void DataGridBKRD_CreateRequested()
|
private void DataGridBKRD_CreateRequested()
|
||||||
{
|
{
|
||||||
|
this.dataGridBKRD.CancelEdit();
|
||||||
|
this.dataGridBKRD.CancelEdit();
|
||||||
EditBKRDialog ebd = new EditBKRDialog();
|
EditBKRDialog ebd = new EditBKRDialog();
|
||||||
ebd.IsDeparture = true;
|
ebd.IsDeparture = true;
|
||||||
ebd.BRKD = new BRKD();
|
ebd.BRKD = new BRKD();
|
||||||
@ -199,6 +202,8 @@ namespace ENI2.DetailViewControls
|
|||||||
{
|
{
|
||||||
if (obj is BRKD brkd)
|
if (obj is BRKD brkd)
|
||||||
{
|
{
|
||||||
|
this.dataGridBKRD.CancelEdit();
|
||||||
|
this.dataGridBKRD.CancelEdit();
|
||||||
// are you sure dialog is in base class
|
// are you sure dialog is in base class
|
||||||
this._bkrdMessage.Elements.Remove(brkd);
|
this._bkrdMessage.Elements.Remove(brkd);
|
||||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(brkd);
|
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(brkd);
|
||||||
@ -210,6 +215,8 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
private void DataGridBKRD_EditRequested(DatabaseEntity obj)
|
private void DataGridBKRD_EditRequested(DatabaseEntity obj)
|
||||||
{
|
{
|
||||||
|
this.dataGridBKRD.CancelEdit(DataGridEditingUnit.Row);
|
||||||
|
this.dataGridBKRD.CommitEdit(DataGridEditingUnit.Row, true);
|
||||||
EditBKRDialog eld = new EditBKRDialog();
|
EditBKRDialog eld = new EditBKRDialog();
|
||||||
eld.IsDeparture = true;
|
eld.IsDeparture = true;
|
||||||
eld.BRKD = obj as BRKD;
|
eld.BRKD = obj as BRKD;
|
||||||
@ -230,7 +237,8 @@ namespace ENI2.DetailViewControls
|
|||||||
{
|
{
|
||||||
if (!_bkrdMessage.Elements.Contains(eld.BRKD))
|
if (!_bkrdMessage.Elements.Contains(eld.BRKD))
|
||||||
_bkrdMessage.Elements.Add(eld.BRKD);
|
_bkrdMessage.Elements.Add(eld.BRKD);
|
||||||
this.dataGridBKRD.Items.Refresh();
|
this.dataGridBKRD.ItemsSource = null;
|
||||||
|
this.dataGridBKRD.ItemsSource = this._bkrdMessage.Elements;
|
||||||
this.SublistElementChanged(Message.NotificationClass.BKRD);
|
this.SublistElementChanged(Message.NotificationClass.BKRD);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -290,18 +298,7 @@ namespace ENI2.DetailViewControls
|
|||||||
HighlightService.HighlightControl(this.bkrdGroupBox, HighlightService.HighlightStyle.VIOLATION, this._bkrdMessage);
|
HighlightService.HighlightControl(this.bkrdGroupBox, HighlightService.HighlightStyle.VIOLATION, this._bkrdMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region mouse wheel
|
|
||||||
|
|
||||||
private void ScrollViewer_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
|
|
||||||
{
|
|
||||||
ScrollViewer scv = (ScrollViewer)sender;
|
|
||||||
scv.ScrollToVerticalOffset(scv.VerticalOffset - e.Delta);
|
|
||||||
e.Handled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region special datetimepicker validation popup (OMG)
|
#region special datetimepicker validation popup (OMG)
|
||||||
|
|
||||||
|
|||||||
@ -130,6 +130,12 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override int SelectedTabIndex
|
||||||
|
{
|
||||||
|
get { return this.mainFrame.SelectedIndex; }
|
||||||
|
set { this.mainFrame.SelectedIndex = value; }
|
||||||
|
}
|
||||||
|
|
||||||
#region SetEnabled
|
#region SetEnabled
|
||||||
|
|
||||||
public override void SetEnabled(bool enabled)
|
public override void SetEnabled(bool enabled)
|
||||||
@ -601,18 +607,7 @@ namespace ENI2.DetailViewControls
|
|||||||
HighlightService.HighlightControl(this.mdhGroupBox, HighlightService.HighlightStyle.VIOLATION, this._mdhMessage);
|
HighlightService.HighlightControl(this.mdhGroupBox, HighlightService.HighlightStyle.VIOLATION, this._mdhMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region mouse wheel
|
|
||||||
|
|
||||||
private void ScrollViewer_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
|
|
||||||
{
|
|
||||||
ScrollViewer scv = (ScrollViewer)sender;
|
|
||||||
scv.ScrollToVerticalOffset(scv.VerticalOffset - e.Delta);
|
|
||||||
e.Handled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,9 +8,10 @@
|
|||||||
xmlns:enictrl="clr-namespace:ENI2.Controls"
|
xmlns:enictrl="clr-namespace:ENI2.Controls"
|
||||||
xmlns:p="clr-namespace:ENI2.Properties"
|
xmlns:p="clr-namespace:ENI2.Properties"
|
||||||
xmlns:util="clr-namespace:ENI2.Util"
|
xmlns:util="clr-namespace:ENI2.Util"
|
||||||
|
xmlns:data="clr-namespace:bsmd.database;assembly=bsmd.database"
|
||||||
xmlns:local="clr-namespace:ENI2.DetailViewControls"
|
xmlns:local="clr-namespace:ENI2.DetailViewControls"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
d:DesignHeight="300" d:DesignWidth="800">
|
d:DesignHeight="768" d:DesignWidth="1024">
|
||||||
<xctk:BusyIndicator Name="busyIndicator">
|
<xctk:BusyIndicator Name="busyIndicator">
|
||||||
<xctk:BusyIndicator.ProgressBarStyle>
|
<xctk:BusyIndicator.ProgressBarStyle>
|
||||||
<Style TargetType="ProgressBar">
|
<Style TargetType="ProgressBar">
|
||||||
@ -25,104 +26,144 @@
|
|||||||
</StackPanel>
|
</StackPanel>
|
||||||
</xctk:BusyIndicator.BusyContent>
|
</xctk:BusyIndicator.BusyContent>
|
||||||
|
|
||||||
<GroupBox Name="visitTransitGroupBox" Header="{x:Static p:Resources.textVisitTransit}">
|
<GroupBox Name="visitTransitGroupBox" Header="{x:Static p:Resources.textOverview}">
|
||||||
<ScrollViewer PreviewMouseWheel="ScrollViewer_PreviewMouseWheel">
|
<ScrollViewer PreviewMouseWheel="ScrollViewer_PreviewMouseWheel">
|
||||||
<Grid>
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition Height="28" />
|
|
||||||
<RowDefinition Height="28" />
|
|
||||||
<RowDefinition Height="28" />
|
|
||||||
<RowDefinition Height="28" />
|
|
||||||
<RowDefinition Height="28" />
|
|
||||||
<RowDefinition Height="4" />
|
|
||||||
<RowDefinition Height="32" />
|
|
||||||
<RowDefinition Height="32" />
|
|
||||||
<RowDefinition Height="4" />
|
|
||||||
<RowDefinition Height="*" />
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="1*" />
|
|
||||||
<ColumnDefinition Width="1*" />
|
|
||||||
<ColumnDefinition Width="1*" />
|
|
||||||
<ColumnDefinition Width="1*" />
|
|
||||||
<ColumnDefinition Width="1*" />
|
|
||||||
<ColumnDefinition Width="1*" />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textPortCall}" Margin="0,0,10,0"/>
|
|
||||||
<enictrl:LocodeControl Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="0" Width="Auto" x:Name="locodePoC" LocodeValue="{Binding PoC, Mode=TwoWay}" IsEnabled="False" />
|
|
||||||
<!--Grid Grid.Column="1" Grid.Row="0" Width="Auto">
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="*" />
|
|
||||||
<ColumnDefinition Width="Auto" />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
<xctk:WatermarkComboBox Grid.Column="0" x:Name="comboBoxPoC" Margin="2" IsEditable="True" Watermark="Type for Locode.." TextBoxBase.TextChanged="ComboBox_TextChanged" ItemsSource="{Binding LocodePoCList, Mode=TwoWay}" SelectedItem="{Binding PoC, Mode=TwoWay}" />
|
|
||||||
<Image Name="imagePoCState" Grid.Column="1" Source="../Resources/bullet_ball_grey.png" />
|
|
||||||
</-->
|
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="3" Content="{x:Static p:Resources.textVisitTransitId}" Margin="0,0,10,0" />
|
|
||||||
<TextBox Name="textBoxDisplayId" Grid.Row="0" Grid.Column="4" Grid.ColumnSpan="2" IsReadOnly="True" Margin="2" VerticalContentAlignment="Center" />
|
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="0" Content="{x:Static p:Resources.textIMO}" Margin="0,0,10,0" />
|
|
||||||
<TextBox Name="textBoxIMO" Grid.Row="1" Grid.ColumnSpan="2" Grid.Column="1" Text="{Binding IMO, Mode=TwoWay, Converter={util:TrimStringConverter}}" Margin="2" IsReadOnly="True" VerticalContentAlignment="Center"/>
|
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="3" Content="{x:Static p:Resources.textENI}" Margin="0,0,10,0" />
|
|
||||||
<TextBox Name="textBoxENI" Grid.Row="1" Grid.Column="4" Grid.ColumnSpan="2" Text="{Binding ENI, Mode=TwoWay, Converter={util:TrimStringConverter}}" Margin="2" IsReadOnly="True" VerticalContentAlignment="Center"/>
|
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="2" Grid.Column="0" Content="{x:Static p:Resources.textETAPortOfCall}" Margin="0,0,10,0" />
|
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="2" Grid.Column="3" Content="{x:Static p:Resources.textETDPortOfCall}" Margin="0,0,10,0" />
|
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="3" Grid.Column="0" Content="{x:Static p:Resources.textATAPortOfCall}" Margin="0,0,10,0" />
|
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="3" Grid.Column="3" Content="{x:Static p:Resources.textATDPortOfCall}" Margin="0,0,10,0" />
|
|
||||||
<xctk:DateTimePicker Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="2" Value="{Binding ETAToPortOfCall, Mode=TwoWay, Converter={util:UtcToLocalDateTimeConverter}}" Name="dateTimePickerETA" Format="Custom" FormatString="dd.MM.yyyy HH:mm" ShowButtonSpinner="False" VerticalContentAlignment="Center" Margin="2" AllowTextInput="True" ContextMenu="{DynamicResource ClearContextMenu}" TextAlignment="Left" Minimum="1899.12.31 00:00" Maximum="2100.12.31 00:00" />
|
|
||||||
<xctk:DateTimePicker Grid.Column="4" Grid.ColumnSpan="2" Grid.Row="2" Value="{Binding ETDFromPortOfCall, Mode=TwoWay, Converter={util:UtcToLocalDateTimeConverter}}" Name="dateTimePickerETD" Format="Custom" FormatString="dd.MM.yyyy HH:mm" ShowButtonSpinner="False" VerticalContentAlignment="Center" Margin="2" AllowTextInput="True" ContextMenu="{DynamicResource ClearContextMenu}" TextAlignment="Left" Minimum="1899.12.31 00:00" Maximum="2100.12.31 00:00"/>
|
|
||||||
<xctk:DateTimePicker Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="3" Value="{Binding ATAPortOfCall, Mode=TwoWay, Converter={util:UtcToLocalDateTimeConverter}}" Name="dateTimePickerATA" Format="Custom" FormatString="dd.MM.yyyy HH:mm" ShowButtonSpinner="False" VerticalContentAlignment="Center" Margin="2" AllowTextInput="True" ContextMenu="{DynamicResource ClearContextMenu}" TextAlignment="Left" Minimum="1899.12.31 00:00" Maximum="2100.12.31 00:00"/>
|
|
||||||
<xctk:DateTimePicker Grid.Column="4" Grid.ColumnSpan="2" Grid.Row="3" Value="{Binding ATDPortOfCall, Mode=TwoWay, Converter={util:UtcToLocalDateTimeConverter}}" Name="dateTimePickerATD" Format="Custom" FormatString="dd.MM.yyyy HH:mm" ShowButtonSpinner="False" VerticalContentAlignment="Center" Margin="2" AllowTextInput="True" ContextMenu="{DynamicResource ClearContextMenu}" TextAlignment="Left" Minimum="1899.12.31 00:00" Maximum="2100.12.31 00:00"/>
|
|
||||||
<Label HorizontalAlignment="Right" Grid.Row="4" Grid.Column="0" Content="{x:Static p:Resources.textTicketNo}" Margin="0,0,10,0" />
|
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="4" Grid.Column="3" Content="{x:Static p:Resources.textCreated}" Margin="0,0,10,0" />
|
|
||||||
<Label Name="labelCreated" Grid.Column="4" Grid.Row="4" Margin="2, 0, 0, 0" />
|
|
||||||
<Button Name="buttonFormblattNeu" Grid.Column="4" Grid.Row="7" Margin="2" Click="buttonFormblattNeu_Click" >
|
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
<TextBlock Text="Formblatt neu"></TextBlock>
|
|
||||||
<Image Source="../Resources/excel.png" Margin="10,0,5,0" Height="16"/>
|
|
||||||
</StackPanel>
|
|
||||||
</Button>
|
|
||||||
<TextBox Name="textBoxTicketNo" Grid.Column="1" Grid.Row="4" Grid.ColumnSpan="2" Text="{Binding TicketNo, Mode=TwoWay, Converter={util:TrimStringConverter}}" Margin="2" VerticalContentAlignment="Center" MaxLength="50"/>
|
|
||||||
|
|
||||||
<Label Grid.Column="0" Grid.Row="6" Margin="0,0,10,0" HorizontalContentAlignment="Right" Name="labelBSMDStatusInternal" Content="{Binding BSMDStatusInternal, StringFormat={}{0}}" VerticalContentAlignment="Center" FontWeight="Bold" />
|
<Grid>
|
||||||
<Button IsEnabled="True" Name="buttonStorno" Grid.Column="1" Grid.Row="6" Margin="2" Click="buttonStorno_Click" Content="{x:Static p:Resources.textCancelDeclaration}" Background="Red"/>
|
<Grid.ColumnDefinitions>
|
||||||
<Button IsEnabled="True" Name="buttonCopy" Grid.Column="2" Grid.Row="6" Margin="2" Click="buttonCopy_Click" Content="{x:Static p:Resources.textCopyData}"/>
|
<ColumnDefinition Width="400" />
|
||||||
<Button IsEnabled="True" Name="buttonSendPDF" Grid.Column="3" Grid.Row="6" Margin="2" Click="buttonSendPDF_Click">
|
<ColumnDefinition Width="*" />
|
||||||
<StackPanel Orientation="Horizontal">
|
</Grid.ColumnDefinitions>
|
||||||
<TextBlock Text="{x:Static p:Resources.textCreatePDF}"></TextBlock>
|
|
||||||
<Image Source="../Resources/document_pdf.png" Margin="10,0,5,0" Height="16"/>
|
<Grid>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="2*" />
|
||||||
|
<ColumnDefinition Width="2*" />
|
||||||
|
<ColumnDefinition Width="2*" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
|
||||||
|
<RowDefinition Height="4" />
|
||||||
|
<RowDefinition Height="36" />
|
||||||
|
|
||||||
|
<RowDefinition Height="4" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
|
||||||
|
<RowDefinition Height="4" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
|
||||||
|
<RowDefinition Height="*" />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
|
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textVisitTransitId}" Margin="0,0,10,0" />
|
||||||
|
<TextBox Name="textBoxDisplayId" Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2" IsReadOnly="True" Margin="2" VerticalContentAlignment="Center" />
|
||||||
|
|
||||||
|
<Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="0" Content="{x:Static p:Resources.textPortCall}" Margin="0,0,10,0"/>
|
||||||
|
<enictrl:LocodeControl Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="1" Width="Auto" x:Name="locodePoC" LocodeValue="{Binding PoC, Mode=TwoWay}" IsEnabled="False" />
|
||||||
|
|
||||||
|
<Label HorizontalContentAlignment="Right" Grid.Row="2" Grid.Column="0" Content="{x:Static p:Resources.textIMO}" Margin="0,0,10,0" />
|
||||||
|
<TextBox Name="textBoxIMO" Grid.Row="2" Grid.ColumnSpan="2" Grid.Column="1" Text="{Binding IMO, Mode=TwoWay, Converter={util:TrimStringConverter}}" Margin="2" IsReadOnly="True" VerticalContentAlignment="Center"/>
|
||||||
|
|
||||||
|
<Label HorizontalContentAlignment="Right" Grid.Row="3" Grid.Column="0" Content="{x:Static p:Resources.textENI}" Margin="0,0,10,0" />
|
||||||
|
<TextBox Name="textBoxENI" Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="2" Text="{Binding ENI, Mode=TwoWay, Converter={util:TrimStringConverter}}" Margin="2" IsReadOnly="True" VerticalContentAlignment="Center"/>
|
||||||
|
|
||||||
|
<Label HorizontalContentAlignment="Right" Grid.Row="4" Grid.Column="0" Content="{x:Static p:Resources.textETAPortOfCall}" Margin="0,0,10,0" />
|
||||||
|
<xctk:DateTimePicker Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="4" Value="{Binding ETAToPortOfCall, Mode=TwoWay, Converter={util:UtcToLocalDateTimeConverter}}" Name="dateTimePickerETA" Format="Custom" FormatString="dd.MM.yyyy HH:mm" ShowButtonSpinner="False" VerticalContentAlignment="Center" Margin="2" AllowTextInput="True" ContextMenu="{DynamicResource ClearContextMenu}" TextAlignment="Left" Minimum="1899.12.31 00:00" Maximum="2100.12.31 00:00" />
|
||||||
|
|
||||||
|
<Label HorizontalContentAlignment="Right" Grid.Row="5" Grid.Column="0" Content="{x:Static p:Resources.textETDPortOfCall}" Margin="0,0,10,0" />
|
||||||
|
<xctk:DateTimePicker Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="5" Value="{Binding ETDFromPortOfCall, Mode=TwoWay, Converter={util:UtcToLocalDateTimeConverter}}" Name="dateTimePickerETD" Format="Custom" FormatString="dd.MM.yyyy HH:mm" ShowButtonSpinner="False" VerticalContentAlignment="Center" Margin="2" AllowTextInput="True" ContextMenu="{DynamicResource ClearContextMenu}" TextAlignment="Left" Minimum="1899.12.31 00:00" Maximum="2100.12.31 00:00"/>
|
||||||
|
|
||||||
|
<Label HorizontalContentAlignment="Right" Grid.Row="6" Grid.Column="0" Content="{x:Static p:Resources.textATAPortOfCall}" Margin="0,0,10,0" />
|
||||||
|
<xctk:DateTimePicker Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="6" Value="{Binding ATAPortOfCall, Mode=TwoWay, Converter={util:UtcToLocalDateTimeConverter}}" Name="dateTimePickerATA" Format="Custom" FormatString="dd.MM.yyyy HH:mm" ShowButtonSpinner="False" VerticalContentAlignment="Center" Margin="2" AllowTextInput="True" ContextMenu="{DynamicResource ClearContextMenu}" TextAlignment="Left" Minimum="1899.12.31 00:00" Maximum="2100.12.31 00:00"/>
|
||||||
|
|
||||||
|
<Label HorizontalContentAlignment="Right" Grid.Row="7" Grid.Column="0" Content="{x:Static p:Resources.textATDPortOfCall}" Margin="0,0,10,0" />
|
||||||
|
<xctk:DateTimePicker Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="7" Value="{Binding ATDPortOfCall, Mode=TwoWay, Converter={util:UtcToLocalDateTimeConverter}}" Name="dateTimePickerATD" Format="Custom" FormatString="dd.MM.yyyy HH:mm" ShowButtonSpinner="False" VerticalContentAlignment="Center" Margin="2" AllowTextInput="True" ContextMenu="{DynamicResource ClearContextMenu}" TextAlignment="Left" Minimum="1899.12.31 00:00" Maximum="2100.12.31 00:00"/>
|
||||||
|
|
||||||
|
<Label HorizontalAlignment="Right" Grid.Row="8" Grid.Column="0" Content="{x:Static p:Resources.textRemarks}" Margin="0,0,10,0" />
|
||||||
|
<TextBox Name="textBoxTicketNo" Grid.Column="1" Grid.Row="8" Grid.ColumnSpan="2" Text="{Binding TicketNo, Mode=TwoWay, Converter={util:TrimStringConverter}}" Margin="2" VerticalContentAlignment="Center" MaxLength="50"/>
|
||||||
|
|
||||||
|
<Label HorizontalContentAlignment="Right" Grid.Row="9" Grid.Column="0" Content="{x:Static p:Resources.textCreated}" Margin="0,0,10,0" />
|
||||||
|
<Label Name="labelCreated" Grid.Column="1" Grid.Row="9" Margin="2, 0, 0, 0" />
|
||||||
|
|
||||||
|
<Label Grid.Column="2" Grid.Row="9" Margin="0,0,10,0" HorizontalContentAlignment="Right" Name="labelBSMDStatusInternal" Content="{Binding BSMDStatusInternal, StringFormat={}{0}}" VerticalContentAlignment="Center" FontWeight="Bold" />
|
||||||
|
|
||||||
|
<StackPanel Orientation="Horizontal" Grid.Column="1" Grid.Row="11">
|
||||||
|
<Button Name="buttonRefresh" Margin="2" Click="buttonRefresh_Click" BorderThickness="0" Background="Transparent" ToolTip="{x:Static p:Resources.textTooltipRefresh}">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<Image Source="../Resources/nav_refresh_blue.png" Margin="0,0,5,0" Height="24"/>
|
||||||
|
<!--TextBlock Text="{x:Static p:Resources.textRefresh}" VerticalAlignment="Center"/-->
|
||||||
|
</StackPanel>
|
||||||
|
</Button>
|
||||||
|
<Button Name="buttonInfoCore" Margin="2" Click="buttonInfoCore_Click" BorderThickness="0" Background="Transparent" ToolTip="{x:Static p:Resources.textTooltipDetails}">
|
||||||
|
<Image Source="../Resources/document_view.png" Margin="0,0,5,0" Height="24" />
|
||||||
|
</Button>
|
||||||
|
|
||||||
|
<Button Name="buttonValidate" Margin="2" Click="buttonValidate_Click" BorderThickness="0" Background="Transparent" ToolTip="{x:Static p:Resources.textTooltipValidation}">
|
||||||
|
<Image Source="../Resources/hand_point.png" Margin="0,0,5,0" Height="24" />
|
||||||
|
</Button>
|
||||||
|
<!--
|
||||||
|
<Button Name="buttonWarnings" Margin="2" Click="buttonWarnings_Click" BorderThickness="0" Background="Transparent" Visibility="Hidden">
|
||||||
|
<Image Source="../Resources/sign_warning.png" Margin="0,0,5,0" Height="24" />
|
||||||
|
</Button>
|
||||||
|
-->
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Button>
|
<StackPanel Orientation="Horizontal" Grid.Column="2" Grid.Row="11" Visibility="Hidden" Name="stackPanelLock">
|
||||||
<Button Name="buttonQueryHIS" Grid.Column="4" Grid.Row="6" Margin="2" Click="buttonQueryHIS_Click" Content="{x:Static p:Resources.textQueryHIS}"/>
|
<Image Source="../Resources/lock.png" Margin="0,0,5,0" Height="24" />
|
||||||
<StackPanel Orientation="Horizontal" Grid.Column="5" Grid.Row="6">
|
<TextBlock Name="textBlockLockUserName" VerticalAlignment="Center" />
|
||||||
<Button Name="buttonRefresh" Margin="2" Click="buttonRefresh_Click" BorderThickness="0" Background="Transparent" ToolTip="{x:Static p:Resources.textTooltipRefresh}">
|
</StackPanel>
|
||||||
|
|
||||||
|
<Label Grid.Column="0" Grid.Row="13" Margin="0,0,10,0" HorizontalContentAlignment="Right" Name="labelHIS" VerticalContentAlignment="Center" Content="{x:Static p:Resources.textSendToHIS}" />
|
||||||
|
<ComboBox Grid.Column="1" Grid.Row="13" Margin="2" Name="comboBoxInitialHis" VerticalContentAlignment="Center" SelectedValuePath="Key" DisplayMemberPath="Value" SelectedValue="{Binding Path=InitialHIS}" />
|
||||||
|
|
||||||
|
<Button IsEnabled="True" Name="buttonSendAll" Grid.Column="1" Grid.Row="14" Content="{x:Static p:Resources.textSendAll}" Margin="2" Click="buttonSendAll_Click" />
|
||||||
|
|
||||||
|
<Button Grid.Column="1" Grid.Row="16" Margin="2" Name="buttonExcelImport" Click="buttonExcelImport_Click">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<Image Source="../Resources/nav_refresh_blue.png" Margin="0,0,5,0" Height="24"/>
|
<TextBlock Text="{x:Static p:Resources.textExcelImport}"></TextBlock>
|
||||||
<!--TextBlock Text="{x:Static p:Resources.textRefresh}" VerticalAlignment="Center"/-->
|
<Image Source="../Resources/excel.png" Margin="10,0,5,0" Height="16"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Button>
|
</Button>
|
||||||
<Button Name="buttonInfoCore" Margin="2" Click="buttonInfoCore_Click" BorderThickness="0" Background="Transparent" ToolTip="{x:Static p:Resources.textTooltipDetails}">
|
|
||||||
<Image Source="../Resources/document_view.png" Margin="0,0,5,0" Height="24" />
|
<Button IsEnabled="True" Name="buttonSendPDF" Grid.Column="1" Grid.Row="17" Margin="2" Click="buttonSendPDF_Click">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<TextBlock Text="{x:Static p:Resources.textCreatePDF}"></TextBlock>
|
||||||
|
<Image Source="../Resources/document_pdf.png" Margin="10,0,5,0" Height="16"/>
|
||||||
|
</StackPanel>
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
<Button Name="buttonValidate" Margin="2" Click="buttonValidate_Click" BorderThickness="0" Background="Transparent" ToolTip="{x:Static p:Resources.textTooltipValidation}">
|
<Button Name="buttonQueryHIS" Grid.Column="1" Grid.Row="18" Margin="2" Click="buttonQueryHIS_Click" Content="{x:Static p:Resources.textQueryHIS}"/>
|
||||||
<Image Source="../Resources/hand_point.png" Margin="0,0,5,0" Height="24" />
|
<Button IsEnabled="True" Name="buttonCopy" Grid.Column="1" Grid.Row="19" Margin="2" Click="buttonCopy_Click" Content="{x:Static p:Resources.textCopyData}"/>
|
||||||
|
|
||||||
|
<Button Name="buttonFormblattNeu" Grid.Column="1" Grid.Row="20" Margin="2" Click="buttonFormblattNeu_Click" >
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<TextBlock Text="Formblatt neu"></TextBlock>
|
||||||
|
<Image Source="../Resources/excel.png" Margin="10,0,5,0" Height="16"/>
|
||||||
|
</StackPanel>
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
|
<Button IsEnabled="True" Name="buttonStorno" Grid.Column="1" Grid.Row="22" Margin="2" Click="buttonStorno_Click" Content="{x:Static p:Resources.textCancelDeclaration}" Background="Red"/>
|
||||||
|
<Label Grid.Column="2" Grid.Row="21" Margin="0,0,10,0" HorizontalContentAlignment="Right" Name="labelCancelled" VerticalContentAlignment="Center" FontWeight="Bold" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
<Button Name="buttonWarnings" Margin="2" Click="buttonWarnings_Click" BorderThickness="0" Background="Transparent" Visibility="Hidden">
|
|
||||||
<Image Source="../Resources/sign_warning.png" Margin="0,0,5,0" Height="24" />
|
|
||||||
</Button>
|
|
||||||
-->
|
|
||||||
</StackPanel>
|
|
||||||
<Label Grid.Column="0" Grid.Row="7" Margin="0,0,10,0" HorizontalContentAlignment="Right" Name="labelCancelled" VerticalContentAlignment="Center" FontWeight="Bold" />
|
|
||||||
<Label Grid.Column="1" Grid.Row="7" Margin="0,0,10,0" HorizontalContentAlignment="Right" Name="labelHIS" VerticalContentAlignment="Center" Content="{x:Static p:Resources.textSendToHIS}" />
|
|
||||||
<ComboBox Grid.Column="2" Grid.Row="7" Margin="2" Name="comboBoxInitialHis" VerticalContentAlignment="Center" SelectedValuePath="Key" DisplayMemberPath="Value" SelectedValue="{Binding Path=InitialHIS}" />
|
|
||||||
<Button Grid.Column="3" Grid.Row="7" Margin="2" Name="buttonExcelImport" Click="buttonExcelImport_Click">
|
|
||||||
<StackPanel Orientation="Horizontal">
|
|
||||||
<TextBlock Text="{x:Static p:Resources.textExcelImport}"></TextBlock>
|
|
||||||
<Image Source="../Resources/excel.png" Margin="10,0,5,0" Height="16"/>
|
|
||||||
</StackPanel>
|
|
||||||
</Button>
|
|
||||||
<!--
|
|
||||||
<Button Grid.Column="4" Grid.Row="7" Margin="2" Name="buttonExcelExport" Click="buttonExcelExport_Click">
|
<Button Grid.Column="4" Grid.Row="7" Margin="2" Name="buttonExcelExport" Click="buttonExcelExport_Click">
|
||||||
<StackPanel Orientation="Horizontal">
|
<StackPanel Orientation="Horizontal">
|
||||||
<TextBlock Text="{x:Static p:Resources.textExcelExport}"></TextBlock>
|
<TextBlock Text="{x:Static p:Resources.textExcelExport}"></TextBlock>
|
||||||
@ -130,14 +171,64 @@
|
|||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Button>
|
</Button>
|
||||||
-->
|
-->
|
||||||
<StackPanel Orientation="Horizontal" Grid.Column="5" Grid.Row="4" Visibility="Hidden" Name="stackPanelLock">
|
|
||||||
<Image Source="../Resources/lock.png" Margin="0,0,5,0" Height="24" />
|
|
||||||
<TextBlock Name="textBlockLockUserName" VerticalAlignment="Center" />
|
</Grid>
|
||||||
</StackPanel>
|
|
||||||
|
|
||||||
<!-- Data Grid -->
|
<!-- Data Grid -->
|
||||||
<DataGrid Grid.Row="9" Grid.ColumnSpan="6" Margin="0,8,0,0" x:Name="dataGridMessages" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" CanUserAddRows="False"
|
<DataGrid Grid.Row="0" Grid.ColumnSpan="1" Grid.Column="1" Margin="2" x:Name="dataGridMessages" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" CanUserAddRows="False"
|
||||||
SelectionMode="Extended" AutoGenerateColumns="False" MouseDoubleClick="dataGrid_MouseDoubleClick" PreviewKeyDown="dataGrid_PreviewKeyDown">
|
SelectionMode="Extended" AutoGenerateColumns="False" MouseDoubleClick="dataGrid_MouseDoubleClick" PreviewKeyDown="dataGrid_PreviewKeyDown">
|
||||||
|
<DataGrid.Resources>
|
||||||
|
|
||||||
|
<Style TargetType="{x:Type DataGridColumnHeadersPresenter}">
|
||||||
|
<Setter Property="Template">
|
||||||
|
<Setter.Value>
|
||||||
|
<ControlTemplate TargetType="{x:Type DataGridColumnHeadersPresenter}">
|
||||||
|
<Grid Background="Transparent" Grid.IsSharedSizeScope="True">
|
||||||
|
<!-- 3 header rows: 0 = main title, 1 = group headers, 2 = real column headers -->
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
<RowDefinition Height="Auto"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
|
<!-- One ColumnDefinition per DataGridTextColumn (or shared‐size groups) -->
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="{Binding Columns[0].ActualWidth, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
|
||||||
|
<ColumnDefinition Width="{Binding Columns[1].ActualWidth, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
|
||||||
|
<ColumnDefinition Width="{Binding Columns[2].ActualWidth, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
|
||||||
|
<ColumnDefinition Width="{Binding Columns[3].ActualWidth, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
|
||||||
|
<ColumnDefinition Width="{Binding Columns[4].ActualWidth, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
|
||||||
|
<ColumnDefinition Width="{Binding Columns[5].ActualWidth, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
|
||||||
|
<ColumnDefinition Width="{Binding Columns[6].ActualWidth, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
|
||||||
|
<ColumnDefinition Width="{Binding Columns[7].ActualWidth, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
|
||||||
|
<ColumnDefinition Width="{Binding Columns[8].ActualWidth, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
|
||||||
|
<ColumnDefinition Width="{Binding Columns[9].ActualWidth, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
|
||||||
|
<ColumnDefinition Width="{Binding Columns[10].ActualWidth, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
|
||||||
|
<ColumnDefinition Width="{Binding Columns[11].ActualWidth, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
|
||||||
|
<ColumnDefinition Width="{Binding Columns[12].ActualWidth, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
|
||||||
|
<ColumnDefinition Width="{Binding Columns[13].ActualWidth, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
|
||||||
|
<ColumnDefinition Width="{Binding Columns[14].ActualWidth, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
|
||||||
|
<ColumnDefinition Width="{Binding Columns[15].ActualWidth, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
|
||||||
|
<!-- …add as many as you need… -->
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
|
<!-- Row 0: A single big header across all columns -->
|
||||||
|
<!--TextBlock Grid.Row="0" Grid.ColumnSpan="4" Text="Main Application" HorizontalAlignment="Center" FontWeight="Bold"/ -->
|
||||||
|
|
||||||
|
<!-- Row 1: your “banded” group headers -->
|
||||||
|
<TextBlock Grid.Row="0" Grid.Column="5" Grid.ColumnSpan="2" Text="{x:Static p:Resources.textENIStatus}" HorizontalAlignment="Stretch" TextAlignment="Center" Padding="0,2,0,4" Background="AntiqueWhite" />
|
||||||
|
<TextBlock Grid.Row="0" Grid.Column="7" Grid.ColumnSpan="9" Text="{x:Static p:Resources.textNSWStatus}" HorizontalAlignment="Stretch" TextAlignment="Center" Padding="0,2,0,4" Background="AliceBlue"/>
|
||||||
|
|
||||||
|
<!-- Row 2: the real column headers -->
|
||||||
|
<!-- This invisible filler ensures the layout lines up -->
|
||||||
|
<DataGridColumnHeader x:Name="PART_FillerColumnHeader" Grid.Row="1" Grid.ColumnSpan="14" IsHitTestVisible="False"/>
|
||||||
|
<!-- And here the ItemsPresenter will place each DataGridColumnHeader -->
|
||||||
|
<ItemsPresenter Grid.Row="1" Grid.ColumnSpan="16"/>
|
||||||
|
</Grid>
|
||||||
|
</ControlTemplate>
|
||||||
|
</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
</Style>
|
||||||
|
</DataGrid.Resources>
|
||||||
<DataGrid.RowStyle>
|
<DataGrid.RowStyle>
|
||||||
<Style TargetType="DataGridRow">
|
<Style TargetType="DataGridRow">
|
||||||
<Style.Triggers>
|
<Style.Triggers>
|
||||||
@ -147,25 +238,54 @@
|
|||||||
<Trigger Property="IsMouseOver" Value="True">
|
<Trigger Property="IsMouseOver" Value="True">
|
||||||
<Setter Property="Background" Value="LightYellow" />
|
<Setter Property="Background" Value="LightYellow" />
|
||||||
</Trigger>
|
</Trigger>
|
||||||
|
<MultiDataTrigger>
|
||||||
|
<MultiDataTrigger.Conditions>
|
||||||
|
<Condition Binding="{Binding Path=Elements, Converter={util:CutoffConverter}, ConverterParameter=0}" Value="True" />
|
||||||
|
<Condition Binding="{Binding Path=MessageNotificationClass}" Value="{x:Static data:Message+NotificationClass.PASA}" />
|
||||||
|
</MultiDataTrigger.Conditions>
|
||||||
|
<Setter Property="Background" Value="Yellow" />
|
||||||
|
</MultiDataTrigger>
|
||||||
|
<MultiDataTrigger>
|
||||||
|
<MultiDataTrigger.Conditions>
|
||||||
|
<Condition Binding="{Binding Path=Elements, Converter={util:CutoffConverter}, ConverterParameter=0}" Value="True" />
|
||||||
|
<Condition Binding="{Binding Path=MessageNotificationClass}" Value="{x:Static data:Message+NotificationClass.PASD}" />
|
||||||
|
</MultiDataTrigger.Conditions>
|
||||||
|
<Setter Property="Background" Value="Yellow" />
|
||||||
|
</MultiDataTrigger>
|
||||||
|
<DataTrigger Binding="{Binding SendSuccess}" Value="True">
|
||||||
|
<Setter Property="Background" Value="#92F592"></Setter>
|
||||||
|
</DataTrigger>
|
||||||
|
<DataTrigger Binding="{Binding InternalStatus}" Value="UPDATED">
|
||||||
|
<Setter Property="Background" Value="#DFFDDF"></Setter>
|
||||||
|
</DataTrigger>
|
||||||
|
<DataTrigger Binding="{Binding InternalStatus}" Value="TOSEND">
|
||||||
|
<Setter Property="Background" Value="#BFFDBF"></Setter>
|
||||||
|
</DataTrigger>
|
||||||
|
<DataTrigger Binding="{Binding InternalStatus}" Value="SENT">
|
||||||
|
<Setter Property="Background" Value="#BFFDBF"></Setter>
|
||||||
|
</DataTrigger>
|
||||||
|
<DataTrigger Binding="{Binding HasSystemErrors}" Value="True">
|
||||||
|
<Setter Property="Background" Value="MistyRose"></Setter>
|
||||||
|
</DataTrigger>
|
||||||
|
<!--DataTrigger Binding="{Binding HasErrors}" Value="True">
|
||||||
|
<Setter Property="Background" Value="PaleVioletRed"></Setter>
|
||||||
|
</DataTrigger-->
|
||||||
</Style.Triggers>
|
</Style.Triggers>
|
||||||
</Style>
|
</Style>
|
||||||
</DataGrid.RowStyle>
|
</DataGrid.RowStyle>
|
||||||
<DataGrid.Columns>
|
<DataGrid.Columns>
|
||||||
|
|
||||||
<DataGridTemplateColumn Header=" " Width="SizeToCells" IsReadOnly="True">
|
<DataGridTemplateColumn Header=" " Width="SizeToCells" IsReadOnly="True">
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<!--Image Source="{Binding src:Util.ImageDict[ENINotificationDetailGroup]}" /-->
|
<!--Image Source="{Binding src:Util.ImageDict[ENINotificationDetailGroup]}" /-->
|
||||||
<!--Image Source="{Binding Source={x:Static src:Util.ImageDict}, Path=[ENINotificationDetailGroup]}"></-->
|
<!--Image Source="{Binding Source={x:Static src:Util.ImageDict}, Path=[ENINotificationDetailGroup]}"></-->
|
||||||
<Image Source="{Binding ENINotificationIconString, Converter={util:NullImageConverter}}" />
|
<Image Source="{Binding ENINotificationIconString, Converter={util:NullImageConverter}}" Height="24" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
|
|
||||||
<!--
|
<DataGridTextColumn Header="{x:Static p:Resources.textNotificationClass}" Binding="{Binding MessageNotificationClassDisplay}" IsReadOnly="True" Width="0.1*" FontWeight="Bold">
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textNotificationGroup}" Binding="{Binding ENINotificationDetailGroup}" IsReadOnly="True" Width="0.25*" />
|
|
||||||
-->
|
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textNotificationClass}" Binding="{Binding MessageNotificationClassDisplay}"
|
|
||||||
IsReadOnly="True" Width="0.075*" FontWeight="Bold">
|
|
||||||
<DataGridTextColumn.ElementStyle>
|
<DataGridTextColumn.ElementStyle>
|
||||||
<Style TargetType="TextBlock">
|
<Style TargetType="TextBlock">
|
||||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||||
@ -173,6 +293,75 @@
|
|||||||
</Style>
|
</Style>
|
||||||
</DataGridTextColumn.ElementStyle>
|
</DataGridTextColumn.ElementStyle>
|
||||||
</DataGridTextColumn>
|
</DataGridTextColumn>
|
||||||
|
|
||||||
|
<DataGridTextColumn Header="{x:Static p:Resources.textStatus}" Binding="{Binding BSMDStatusOverviewDisplay}" IsReadOnly="True" Width="0.1*">
|
||||||
|
<DataGridTextColumn.ElementStyle>
|
||||||
|
<Style TargetType="TextBlock">
|
||||||
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||||
|
</Style>
|
||||||
|
</DataGridTextColumn.ElementStyle>
|
||||||
|
</DataGridTextColumn>
|
||||||
|
|
||||||
|
<DataGridTextColumn Header="{x:Static p:Resources.textChangedBy}" Binding="{Binding ChangedBy}" IsReadOnly="True" Width="0.2*">
|
||||||
|
<DataGridTextColumn.ElementStyle>
|
||||||
|
<Style TargetType="TextBlock">
|
||||||
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||||
|
</Style>
|
||||||
|
</DataGridTextColumn.ElementStyle>
|
||||||
|
</DataGridTextColumn>
|
||||||
|
|
||||||
|
<DataGridTextColumn Header="{x:Static p:Resources.textChanged}" Binding="{Binding Changed}" IsReadOnly="True" Width="0.15*">
|
||||||
|
<DataGridTextColumn.ElementStyle>
|
||||||
|
<Style TargetType="TextBlock">
|
||||||
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||||
|
</Style>
|
||||||
|
</DataGridTextColumn.ElementStyle>
|
||||||
|
</DataGridTextColumn>
|
||||||
|
|
||||||
|
<DataGridTextColumn Header="{x:Static p:Resources.textErrors}" IsReadOnly="True" Width="0.06*" Binding="{Binding ErrorCount}">
|
||||||
|
<DataGridTextColumn.ElementStyle>
|
||||||
|
<Style TargetType="TextBlock">
|
||||||
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||||
|
<Setter Property="HorizontalAlignment" Value="Center" />
|
||||||
|
<Setter Property="FontWeight" Value="DemiBold" />
|
||||||
|
</Style>
|
||||||
|
</DataGridTextColumn.ElementStyle>
|
||||||
|
</DataGridTextColumn>
|
||||||
|
|
||||||
|
<DataGridTextColumn Header="{x:Static p:Resources.textViolations}" IsReadOnly="True" Width="0.06*" Binding="{Binding ViolationCount}">
|
||||||
|
<DataGridTextColumn.ElementStyle>
|
||||||
|
<Style TargetType="TextBlock">
|
||||||
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||||
|
<Setter Property="HorizontalAlignment" Value="Center" />
|
||||||
|
<Setter Property="FontWeight" Value="DemiBold" />
|
||||||
|
</Style>
|
||||||
|
</DataGridTextColumn.ElementStyle>
|
||||||
|
</DataGridTextColumn>
|
||||||
|
|
||||||
|
<DataGridTextColumn Header="HIS" Binding="{Binding HISOverviewDisplay}" IsReadOnly="True" Width="0.06*">
|
||||||
|
<DataGridTextColumn.ElementStyle>
|
||||||
|
<Style TargetType="TextBlock">
|
||||||
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||||
|
</Style>
|
||||||
|
</DataGridTextColumn.ElementStyle>
|
||||||
|
</DataGridTextColumn>
|
||||||
|
|
||||||
|
<DataGridTextColumn Header="{x:Static p:Resources.textReceivedAt}" Binding="{Binding ReceivedAt}" IsReadOnly="True" Width="0.15*">
|
||||||
|
<DataGridTextColumn.ElementStyle>
|
||||||
|
<Style TargetType="TextBlock">
|
||||||
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||||
|
</Style>
|
||||||
|
</DataGridTextColumn.ElementStyle>
|
||||||
|
</DataGridTextColumn>
|
||||||
|
|
||||||
|
<DataGridTextColumn Header="{x:Static p:Resources.textSentBy}" Binding="{Binding SentBy}" IsReadOnly="True" Width="0.1*">
|
||||||
|
<DataGridTextColumn.ElementStyle>
|
||||||
|
<Style TargetType="TextBlock">
|
||||||
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||||
|
</Style>
|
||||||
|
</DataGridTextColumn.ElementStyle>
|
||||||
|
</DataGridTextColumn>
|
||||||
|
|
||||||
<DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly="True">
|
<DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly="True">
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
@ -210,29 +399,29 @@
|
|||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
<!--DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly="True">
|
<!--DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly="True">
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<Image x:Name="imageHasUpdate"/>
|
<Image x:Name="imageHasUpdate"/>
|
||||||
<DataTemplate.Triggers>
|
<DataTemplate.Triggers>
|
||||||
<DataTrigger Binding="{Binding Path=HasUpdates}" Value="True">
|
<DataTrigger Binding="{Binding Path=HasUpdates}" Value="True">
|
||||||
<Setter Property="Source" Value="/Resources/recycle.png" TargetName="imageHasUpdate"/>
|
<Setter Property="Source" Value="/Resources/recycle.png" TargetName="imageHasUpdate"/>
|
||||||
</DataTrigger>
|
</DataTrigger>
|
||||||
</DataTemplate.Triggers>
|
</DataTemplate.Triggers>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</-->
|
</-->
|
||||||
<!--DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly="True">
|
<!--DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly="True">
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<Image x:Name="imageHasReminder"/>
|
<Image x:Name="imageHasReminder"/>
|
||||||
<DataTemplate.Triggers>
|
<DataTemplate.Triggers>
|
||||||
<DataTrigger Binding="{Binding Path=HasReminder}" Value="True">
|
<DataTrigger Binding="{Binding Path=HasReminder}" Value="True">
|
||||||
<Setter Property="Source" Value="/Resources/hand_point.png" TargetName="imageHasReminder"/>
|
<Setter Property="Source" Value="/Resources/hand_point.png" TargetName="imageHasReminder"/>
|
||||||
</DataTrigger>
|
</DataTrigger>
|
||||||
</DataTemplate.Triggers>
|
</DataTemplate.Triggers>
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</-->
|
</-->
|
||||||
<DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly="True">
|
<DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly="True">
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
@ -245,6 +434,7 @@
|
|||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
|
|
||||||
<DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly="True">
|
<DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly="True">
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
@ -257,41 +447,7 @@
|
|||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textChanged}" Binding="{Binding Changed}" IsReadOnly="True" Width="0.15*">
|
|
||||||
<DataGridTextColumn.ElementStyle>
|
|
||||||
<Style TargetType="TextBlock">
|
|
||||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
||||||
</Style>
|
|
||||||
</DataGridTextColumn.ElementStyle>
|
|
||||||
</DataGridTextColumn>
|
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textReceivedAt}" Binding="{Binding ReceivedAt}" IsReadOnly="True" Width="0.15*">
|
|
||||||
<DataGridTextColumn.ElementStyle>
|
|
||||||
<Style TargetType="TextBlock">
|
|
||||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
||||||
</Style>
|
|
||||||
</DataGridTextColumn.ElementStyle>
|
|
||||||
</DataGridTextColumn>
|
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textStatus}" Binding="{Binding InternalStatus}" IsReadOnly="True" Width="0.1*">
|
|
||||||
<DataGridTextColumn.ElementStyle>
|
|
||||||
<Style TargetType="TextBlock">
|
|
||||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
||||||
</Style>
|
|
||||||
</DataGridTextColumn.ElementStyle>
|
|
||||||
</DataGridTextColumn>
|
|
||||||
<DataGridTextColumn Header="HIS" Binding="{Binding HIS}" IsReadOnly="True" Width="0.1*">
|
|
||||||
<DataGridTextColumn.ElementStyle>
|
|
||||||
<Style TargetType="TextBlock">
|
|
||||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
||||||
</Style>
|
|
||||||
</DataGridTextColumn.ElementStyle>
|
|
||||||
</DataGridTextColumn>
|
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textSentBy}" Binding="{Binding SentBy}" IsReadOnly="True" Width="0.1*">
|
|
||||||
<DataGridTextColumn.ElementStyle>
|
|
||||||
<Style TargetType="TextBlock">
|
|
||||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
||||||
</Style>
|
|
||||||
</DataGridTextColumn.ElementStyle>
|
|
||||||
</DataGridTextColumn>
|
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textStatusInfo}" Binding="{Binding StatusInfo}" IsReadOnly="True" Width="0.2*">
|
<DataGridTextColumn Header="{x:Static p:Resources.textStatusInfo}" Binding="{Binding StatusInfo}" IsReadOnly="True" Width="0.2*">
|
||||||
<DataGridTextColumn.ElementStyle>
|
<DataGridTextColumn.ElementStyle>
|
||||||
<Style TargetType="TextBlock">
|
<Style TargetType="TextBlock">
|
||||||
@ -299,13 +455,7 @@
|
|||||||
</Style>
|
</Style>
|
||||||
</DataGridTextColumn.ElementStyle>
|
</DataGridTextColumn.ElementStyle>
|
||||||
</DataGridTextColumn>
|
</DataGridTextColumn>
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textChangedBy}" Binding="{Binding ChangedBy}" IsReadOnly="True" Width="0.2*">
|
|
||||||
<DataGridTextColumn.ElementStyle>
|
|
||||||
<Style TargetType="TextBlock">
|
|
||||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
||||||
</Style>
|
|
||||||
</DataGridTextColumn.ElementStyle>
|
|
||||||
</DataGridTextColumn>
|
|
||||||
</DataGrid.Columns>
|
</DataGrid.Columns>
|
||||||
</DataGrid>
|
</DataGrid>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|||||||
@ -19,6 +19,10 @@ using System.Collections.Generic;
|
|||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using static bsmd.database.Message;
|
||||||
|
using PdfSharp.Fonts;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace ENI2.DetailViewControls
|
namespace ENI2.DetailViewControls
|
||||||
{
|
{
|
||||||
@ -27,6 +31,9 @@ namespace ENI2.DetailViewControls
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class OverViewDetailControl : DetailBaseControl
|
public partial class OverViewDetailControl : DetailBaseControl
|
||||||
{
|
{
|
||||||
|
|
||||||
|
#region Fields
|
||||||
|
|
||||||
private Message _message = null;
|
private Message _message = null;
|
||||||
private Message _ataMessage;
|
private Message _ataMessage;
|
||||||
private Message _atdMessage;
|
private Message _atdMessage;
|
||||||
@ -36,21 +43,29 @@ namespace ENI2.DetailViewControls
|
|||||||
private readonly object _collectionLock = new object();
|
private readonly object _collectionLock = new object();
|
||||||
// private MessageSendStatusDialog mssd = null;
|
// private MessageSendStatusDialog mssd = null;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Construction
|
||||||
|
|
||||||
public OverViewDetailControl()
|
public OverViewDetailControl()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
this.Loaded += OverViewDetailControl_Loaded;
|
this.Loaded += OverViewDetailControl_Loaded;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Initialize
|
||||||
|
|
||||||
private void OverViewDetailControl_Loaded(object sender, RoutedEventArgs e)
|
private void OverViewDetailControl_Loaded(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
// die Controls nach Änderungen monitoren
|
// die Controls nach Änderungen monitoren
|
||||||
// diese Einträge gehen auf core
|
// diese Einträge gehen auf core
|
||||||
this.RegisterTextboxChange(this.textBoxTicketNo, Message.NotificationClass.ATA);
|
this.textBoxTicketNo.TextChanged += CoreTextBox_TextChanged;
|
||||||
this.RegisterTextboxChange(this.textBoxDisplayId, Message.NotificationClass.ATA);
|
this.textBoxDisplayId.TextChanged += CoreTextBox_TextChanged;
|
||||||
this.RegisterTextboxChange(this.textBoxIMO, Message.NotificationClass.ATA);
|
this.textBoxIMO.TextChanged += CoreTextBox_TextChanged;
|
||||||
this.RegisterTextboxChange(this.textBoxENI, Message.NotificationClass.ATA);
|
this.textBoxENI.TextChanged += CoreTextBox_TextChanged;
|
||||||
this.RegisterLocodeChange(this.locodePoC, Message.NotificationClass.ATA);
|
this.locodePoC.PropertyChanged += CoreLocode_LocodeChanged;
|
||||||
|
|
||||||
this.RegisterDateTimePickerChange(this.dateTimePickerATA, Message.NotificationClass.ATA);
|
this.RegisterDateTimePickerChange(this.dateTimePickerATA, Message.NotificationClass.ATA);
|
||||||
this.RegisterDateTimePickerChange(this.dateTimePickerATD, Message.NotificationClass.ATD);
|
this.RegisterDateTimePickerChange(this.dateTimePickerATD, Message.NotificationClass.ATD);
|
||||||
@ -58,8 +73,6 @@ namespace ENI2.DetailViewControls
|
|||||||
this.RegisterDateTimePickerChange(this.dateTimePickerETD, Message.NotificationClass.NOA_NOD);
|
this.RegisterDateTimePickerChange(this.dateTimePickerETD, Message.NotificationClass.NOA_NOD);
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Initialize
|
|
||||||
|
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
bool iAmAdmin = DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].IsAdmin;
|
bool iAmAdmin = DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].IsAdmin;
|
||||||
@ -185,13 +198,7 @@ namespace ENI2.DetailViewControls
|
|||||||
if (aMessage.MessageNotificationClass == Message.NotificationClass.PASD)
|
if (aMessage.MessageNotificationClass == Message.NotificationClass.PASD)
|
||||||
pasdMessage = aMessage;
|
pasdMessage = aMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
// XXX : TODO remove this
|
|
||||||
|
|
||||||
this.Messages.Remove(crewdMessage);
|
|
||||||
this.Messages.Remove(pasdMessage);
|
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region init ATA
|
#region init ATA
|
||||||
@ -310,7 +317,9 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
BindingOperations.EnableCollectionSynchronization(this.Messages, _collectionLock);
|
BindingOperations.EnableCollectionSynchronization(this.Messages, _collectionLock);
|
||||||
this.dataGridMessages.ItemsSource = this.Messages;
|
this.dataGridMessages.ItemsSource = this.Messages;
|
||||||
|
|
||||||
|
this.OnRequestValidate(false);
|
||||||
|
|
||||||
base.Initialize(); // wenn Meldeklassen erst bei der Init. erzeugt werden, fehlen die Handler, die hier erneut festgelegt werden
|
base.Initialize(); // wenn Meldeklassen erst bei der Init. erzeugt werden, fehlen die Handler, die hier erneut festgelegt werden
|
||||||
this._initialized = true;
|
this._initialized = true;
|
||||||
}
|
}
|
||||||
@ -348,6 +357,9 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
this.buttonExcelImport.IsEnabled = !this.Core.DisplayId.IsNullOrEmpty();
|
this.buttonExcelImport.IsEnabled = !this.Core.DisplayId.IsNullOrEmpty();
|
||||||
|
|
||||||
|
this.dataGridMessages.ItemsSource = null;
|
||||||
|
this.dataGridMessages.ItemsSource = this.Messages;
|
||||||
|
|
||||||
//MessageBox.Show(string.Format("Visit/Transit ID updated: {0}", this.Core.DisplayId));
|
//MessageBox.Show(string.Format("Visit/Transit ID updated: {0}", this.Core.DisplayId));
|
||||||
//ShowIdDialog sid = new ShowIdDialog(this.Core)
|
//ShowIdDialog sid = new ShowIdDialog(this.Core)
|
||||||
//{
|
//{
|
||||||
@ -425,44 +437,50 @@ namespace ENI2.DetailViewControls
|
|||||||
MessageBoxResult result = MessageBox.Show(Properties.Resources.textConfirmSend, Properties.Resources.textConfirm, MessageBoxButton.YesNo, MessageBoxImage.Question);
|
MessageBoxResult result = MessageBox.Show(Properties.Resources.textConfirmSend, Properties.Resources.textConfirm, MessageBoxButton.YesNo, MessageBoxImage.Question);
|
||||||
if (result == MessageBoxResult.Yes)
|
if (result == MessageBoxResult.Yes)
|
||||||
{
|
{
|
||||||
bool somethingsNotSaved = false;
|
this.SendMessages(this.dataGridMessages.SelectedItems.Cast<Message>());
|
||||||
foreach (Message selectedMessage in this.dataGridMessages.SelectedItems)
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SendMessages(IEnumerable<Message> messages)
|
||||||
|
{
|
||||||
|
bool somethingsNotSaved = false;
|
||||||
|
|
||||||
|
foreach (Message selectedMessage in messages)
|
||||||
|
{
|
||||||
|
if (selectedMessage.IsDirty) somethingsNotSaved = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (somethingsNotSaved)
|
||||||
|
{
|
||||||
|
if (MessageBox.Show(Properties.Resources.textUnsavedChangesSendAnyWay, Properties.Resources.textConfirmation, MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.No)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Message> watchList = new List<Message>();
|
||||||
|
foreach (Message selectedMessage in messages)
|
||||||
|
{
|
||||||
|
if (selectedMessage.Reset) selectedMessage.Reset = false; // "nochmal" Versenden ist möglich
|
||||||
|
selectedMessage.InternalStatus = Message.BSMDStatus.TOSEND;
|
||||||
|
string userName = "?";
|
||||||
|
if (App.UserId.HasValue && DBManager.Instance.GetReportingPartyDict().ContainsKey(App.UserId.Value))
|
||||||
{
|
{
|
||||||
if (selectedMessage.IsDirty) somethingsNotSaved = true;
|
userName = DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].Logon;
|
||||||
}
|
}
|
||||||
|
selectedMessage.ChangedBy = string.Format("{0} at {1} (Send)", userName, DateTime.Now);
|
||||||
|
selectedMessage.StatusInfo = string.Format(Properties.Resources.textMessageSentAt, DateTime.Now);
|
||||||
|
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(selectedMessage);
|
||||||
|
watchList.Add(selectedMessage);
|
||||||
|
}
|
||||||
|
|
||||||
if(somethingsNotSaved)
|
// komplette Anmeldung auf "zu versenden" stellen
|
||||||
{
|
this.Core.BSMDStatusInternal = MessageCore.BSMDStatus.TOSEND;
|
||||||
if (MessageBox.Show(Properties.Resources.textUnsavedChangesSendAnyWay, Properties.Resources.textConfirmation, MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.No)
|
this.Core.DefaultReportingPartyId = App.UserId;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
List<Message> watchList = new List<Message>();
|
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(this.Core); // löst auch den Watchdog aus
|
||||||
foreach (Message selectedMessage in this.dataGridMessages.SelectedItems)
|
this.OnRequestSendValidation();
|
||||||
{
|
this.dataGridMessages.Items.Refresh();
|
||||||
if (selectedMessage.Reset) selectedMessage.Reset = false; // "nochmal" Versenden ist möglich
|
|
||||||
selectedMessage.InternalStatus = Message.BSMDStatus.TOSEND;
|
|
||||||
string userName = "?";
|
|
||||||
if (App.UserId.HasValue && DBManager.Instance.GetReportingPartyDict().ContainsKey(App.UserId.Value))
|
|
||||||
{
|
|
||||||
userName = DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].Logon;
|
|
||||||
}
|
|
||||||
selectedMessage.ChangedBy = string.Format("{0} at {1} (Send)", userName, DateTime.Now);
|
|
||||||
selectedMessage.StatusInfo = string.Format(Properties.Resources.textMessageSentAt, DateTime.Now);
|
|
||||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(selectedMessage);
|
|
||||||
watchList.Add(selectedMessage);
|
|
||||||
}
|
|
||||||
|
|
||||||
// komplette Anmeldung auf "zu versenden" stellen
|
/*
|
||||||
this.Core.BSMDStatusInternal = MessageCore.BSMDStatus.TOSEND;
|
|
||||||
this.Core.DefaultReportingPartyId = App.UserId;
|
|
||||||
|
|
||||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(this.Core); // löst auch den Watchdog aus
|
|
||||||
this.OnRequestSendValidation();
|
|
||||||
this.dataGridMessages.Items.Refresh();
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
if (this.mssd == null)
|
if (this.mssd == null)
|
||||||
{
|
{
|
||||||
this.mssd = new MessageSendStatusDialog(this.Core);
|
this.mssd = new MessageSendStatusDialog(this.Core);
|
||||||
@ -482,7 +500,6 @@ namespace ENI2.DetailViewControls
|
|||||||
this.mssd.Activate(); // bring to foreground
|
this.mssd.Activate(); // bring to foreground
|
||||||
this.mssd.AddMessages(watchList);
|
this.mssd.AddMessages(watchList);
|
||||||
*/
|
*/
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void contextResetMessage(object sender, RoutedEventArgs e)
|
private void contextResetMessage(object sender, RoutedEventArgs e)
|
||||||
@ -568,7 +585,13 @@ namespace ENI2.DetailViewControls
|
|||||||
if (sfd.ShowDialog() ?? false)
|
if (sfd.ShowDialog() ?? false)
|
||||||
{
|
{
|
||||||
Util.UIHelper.SetBusyState();
|
Util.UIHelper.SetBusyState();
|
||||||
ReportManager rm = new ReportManager();
|
ReportManager rm = new ReportManager();
|
||||||
|
|
||||||
|
// TODO!!
|
||||||
|
// https://docs.pdfsharp.net/PDFsharp/Topics/Fonts/Font-Resolving.html
|
||||||
|
// https://docs.pdfsharp.net/MigraDoc/DOM/Document/MigraDocSettings.html
|
||||||
|
GlobalFontSettings.UseWindowsFontsUnderWindows = true;
|
||||||
|
GlobalFontSettings.UseWindowsFontsUnderWsl2 = true;
|
||||||
|
|
||||||
// create PDF from message classes
|
// create PDF from message classes
|
||||||
if (rm.Create(sfd.FileName, this.Core, sicd.SelectedClasses, out string importResultText))
|
if (rm.Create(sfd.FileName, this.Core, sicd.SelectedClasses, out string importResultText))
|
||||||
@ -610,6 +633,16 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
#region event handler
|
#region event handler
|
||||||
|
|
||||||
|
private void CoreLocode_LocodeChanged(object sender, PropertyChangedEventArgs e)
|
||||||
|
{
|
||||||
|
this.OnNotificationClassChanged(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CoreTextBox_TextChanged(object sender, TextChangedEventArgs e)
|
||||||
|
{
|
||||||
|
this.OnNotificationClassChanged(null);
|
||||||
|
}
|
||||||
|
|
||||||
private void _checkStatusTimer_Elapsed(object sender, ElapsedEventArgs e)
|
private void _checkStatusTimer_Elapsed(object sender, ElapsedEventArgs e)
|
||||||
{
|
{
|
||||||
bool? statusFlag = DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).GetMessageCoreQueryStatusFlag(this.Core.Id.Value);
|
bool? statusFlag = DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).GetMessageCoreQueryStatusFlag(this.Core.Id.Value);
|
||||||
@ -718,7 +751,7 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
private void buttonValidate_Click(object sender, RoutedEventArgs e)
|
private void buttonValidate_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
this.OnRequestValidate();
|
this.OnRequestValidate(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -748,7 +781,7 @@ namespace ENI2.DetailViewControls
|
|||||||
this.OnRequestReload(this.Core.Id.Value);
|
this.OnRequestReload(this.Core.Id.Value);
|
||||||
|
|
||||||
// validate all selected import classes (Finger with "selection")
|
// validate all selected import classes (Finger with "selection")
|
||||||
this.OnRequestValidate();
|
this.OnRequestValidate(true);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -802,18 +835,74 @@ namespace ENI2.DetailViewControls
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
private void buttonSendAll_Click(object sender, RoutedEventArgs e)
|
||||||
|
|
||||||
#region mouse wheel
|
|
||||||
|
|
||||||
private void ScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
|
|
||||||
{
|
{
|
||||||
ScrollViewer scv = (ScrollViewer)sender;
|
SelectImportClassesDialog sicd = new SelectImportClassesDialog();
|
||||||
scv.ScrollToVerticalOffset(scv.VerticalOffset - e.Delta);
|
List<Message.NotificationClass> readyToSendMessages = new List<Message.NotificationClass>();
|
||||||
e.Handled = true;
|
|
||||||
|
// Evaluate a number of criteria for messages that should not be preselected for sending
|
||||||
|
bool addToSend;
|
||||||
|
foreach (Message message in this.Messages)
|
||||||
|
{
|
||||||
|
addToSend = true;
|
||||||
|
|
||||||
|
// if ((message.ErrorCount ?? 0) > 0) continue; // skip selection if there are any errors left
|
||||||
|
|
||||||
|
switch(message.MessageNotificationClass)
|
||||||
|
{
|
||||||
|
case NotificationClass.HAZA:
|
||||||
|
addToSend = XtraSendLogic.ShouldSendMessage(message); break;
|
||||||
|
case NotificationClass.HAZD:
|
||||||
|
addToSend = XtraSendLogic.ShouldSendMessage(message); break;
|
||||||
|
case NotificationClass.BPOL:
|
||||||
|
if (message.Elements.Count > 0)
|
||||||
|
{
|
||||||
|
if (message.Elements[0] is BPOL bpol)
|
||||||
|
{
|
||||||
|
if (bpol.PortOfItineraries.Count == 0) addToSend = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case NotificationClass.WAS_RCPT:
|
||||||
|
addToSend = false;
|
||||||
|
break;
|
||||||
|
case NotificationClass.INFO:
|
||||||
|
if (Core.PoC == "DEHAM") addToSend = false;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if(Message.IsListClass(message.MessageNotificationClass) && (message.Elements.Count == 0)) addToSend = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(addToSend)
|
||||||
|
readyToSendMessages.Add(message.MessageNotificationClass);
|
||||||
|
}
|
||||||
|
|
||||||
|
sicd.Messages = this.Messages;
|
||||||
|
sicd.PreselectedClasses.AddRange(readyToSendMessages);
|
||||||
|
sicd.IsTransit = this.Core.IsTransit;
|
||||||
|
sicd.IsImportMode = false;
|
||||||
|
|
||||||
|
if ((sicd.ShowDialog() ?? false) && (sicd.SelectedClasses.Count > 0))
|
||||||
|
{
|
||||||
|
// now send all selected messages
|
||||||
|
List<Message> toSendMessages = new List<Message>();
|
||||||
|
foreach(NotificationClass notificationClass in sicd.SelectedClasses)
|
||||||
|
{
|
||||||
|
Message selectedMessage = this.Messages.Find(x => x.MessageNotificationClass == notificationClass);
|
||||||
|
if (selectedMessage != null)
|
||||||
|
{
|
||||||
|
toSendMessages.Add(selectedMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (toSendMessages.Count > 0)
|
||||||
|
{
|
||||||
|
this.SendMessages(toSendMessages);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,13 +18,13 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
private Message _pre72hMessage;
|
private Message _pre72hMessage;
|
||||||
|
|
||||||
private static string[] hullConfiguration = {
|
private static readonly string[] hullConfiguration = {
|
||||||
Properties.Resources.textSingleHull,
|
Properties.Resources.textSingleHull,
|
||||||
Properties.Resources.textSingleHullBallast,
|
Properties.Resources.textSingleHullBallast,
|
||||||
Properties.Resources.textDoubleHull
|
Properties.Resources.textDoubleHull
|
||||||
};
|
};
|
||||||
|
|
||||||
private static string[] conditionCargoTanks =
|
private static readonly string[] conditionCargoTanks =
|
||||||
{
|
{
|
||||||
Properties.Resources.textFull,
|
Properties.Resources.textFull,
|
||||||
Properties.Resources.textEmpty,
|
Properties.Resources.textEmpty,
|
||||||
@ -116,18 +116,7 @@ namespace ENI2.DetailViewControls
|
|||||||
HighlightService.HighlightControl(this.groupBoxPre72H, HighlightService.HighlightStyle.VIOLATION, this._pre72hMessage);
|
HighlightService.HighlightControl(this.groupBoxPre72H, HighlightService.HighlightStyle.VIOLATION, this._pre72hMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region mouse wheel
|
|
||||||
|
|
||||||
private void ScrollViewer_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
|
|
||||||
{
|
|
||||||
ScrollViewer scv = (ScrollViewer)sender;
|
|
||||||
scv.ScrollToVerticalOffset(scv.VerticalOffset - e.Delta);
|
|
||||||
e.Handled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -12,7 +12,7 @@
|
|||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
d:DesignHeight="600" d:DesignWidth="800">
|
d:DesignHeight="600" d:DesignWidth="800">
|
||||||
<GroupBox Name="portCallGroupBox" Header="{x:Static p:Resources.textPortCall}">
|
<GroupBox Name="portCallGroupBox" Header="{x:Static p:Resources.textPortCall}">
|
||||||
<ScrollViewer PreviewMouseWheel="ScrollViewer_PreviewMouseWheel">
|
<ScrollViewer>
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="300" />
|
<RowDefinition Height="300" />
|
||||||
@ -92,8 +92,9 @@
|
|||||||
<Label HorizontalContentAlignment="Right" Grid.Row="6" Grid.Column="0" Content="{x:Static p:Resources.textPhone}" Name="label_AgentPhone" Margin="0,0,10,0"/>
|
<Label HorizontalContentAlignment="Right" Grid.Row="6" Grid.Column="0" Content="{x:Static p:Resources.textPhone}" Name="label_AgentPhone" Margin="0,0,10,0"/>
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="7" Grid.Column="0" Content="{x:Static p:Resources.textEMail}" Name="label_AgentEMail" Margin="0,0,10,0" />
|
<Label HorizontalContentAlignment="Right" Grid.Row="7" Grid.Column="0" Content="{x:Static p:Resources.textEMail}" Name="label_AgentEMail" Margin="0,0,10,0" />
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="3" Grid.Column="2" Content="{x:Static p:Resources.textCity}" Name="label_AgentCity" Margin="0,0,10,0" />
|
<Label HorizontalContentAlignment="Right" Grid.Row="3" Grid.Column="2" Content="{x:Static p:Resources.textCity}" Name="label_AgentCity" Margin="0,0,10,0" />
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="6" Grid.Column="2" Content="{x:Static p:Resources.textFirstName}" Name="label_AgentFirstName" Margin="0,0,10,0"/>
|
<Label HorizontalContentAlignment="Right" Grid.Row="5" Grid.Column="2" Content="{x:Static p:Resources.textFirstName}" Name="label_AgentFirstName" Margin="0,0,10,0"/>
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="7" Grid.Column="2" Content="{x:Static p:Resources.textFax}" Name="label_AgentFax" Margin="0,0,10,0"/>
|
<Label HorizontalContentAlignment="Right" Grid.Row="6" Grid.Column="2" Content="{x:Static p:Resources.textFax}" Name="label_AgentFax" Margin="0,0,10,0"/>
|
||||||
|
<Label HorizontalContentAlignment="Right" Grid.Row="7" Grid.Column="2" Content="{x:Static p:Resources.textWasteDisposalServiceProvider}" Margin="0,0,10,0" />
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="3" Grid.Column="0" Content="{x:Static p:Resources.textCountry}" Name="label_AgentCountry" Margin="0,0,10,0"/>
|
<Label HorizontalContentAlignment="Right" Grid.Row="3" Grid.Column="0" Content="{x:Static p:Resources.textCountry}" Name="label_AgentCountry" Margin="0,0,10,0"/>
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="2" Content="{x:Static p:Resources.textAgentTemplate}" Name="labelAgentTemplate" Margin="0,0,10,0"/>
|
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="2" Content="{x:Static p:Resources.textAgentTemplate}" Name="labelAgentTemplate" Margin="0,0,10,0"/>
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="2" Content="{x:Static p:Resources.textTitle}" Name="labelAgentTemplateTitle" Margin="0,0,10,0" Visibility="Hidden" />
|
<Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="2" Content="{x:Static p:Resources.textTitle}" Name="labelAgentTemplateTitle" Margin="0,0,10,0" Visibility="Hidden" />
|
||||||
@ -104,10 +105,11 @@
|
|||||||
<TextBox Grid.Row="3" Grid.Column="3" Name="textBox_AgentCity" MaxLength="99" Margin="2" Text="{Binding AgentCity, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
|
<TextBox Grid.Row="3" Grid.Column="3" Name="textBox_AgentCity" MaxLength="99" Margin="2" Text="{Binding AgentCity, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
|
||||||
<TextBox Grid.Row="3" Grid.Column="1" Name="textBox_AgentCountry" MaxLength="99" Margin="2" Text="{Binding AgentCountry, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center" />
|
<TextBox Grid.Row="3" Grid.Column="1" Name="textBox_AgentCountry" MaxLength="99" Margin="2" Text="{Binding AgentCountry, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center" />
|
||||||
<TextBox Grid.Row="5" Grid.Column="1" Name="textBox_AgentLastName" MaxLength="99" Margin="2" Text="{Binding AgentLastName, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
|
<TextBox Grid.Row="5" Grid.Column="1" Name="textBox_AgentLastName" MaxLength="99" Margin="2" Text="{Binding AgentLastName, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
|
||||||
<TextBox Grid.Row="6" Grid.Column="3" Name="textBox_AgentFirstName" MaxLength="99" Margin="2" Text="{Binding AgentFirstName, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
|
<TextBox Grid.Row="5" Grid.Column="3" Name="textBox_AgentFirstName" MaxLength="99" Margin="2" Text="{Binding AgentFirstName, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
|
||||||
<TextBox Grid.Row="6" Grid.Column="1" Name="textBox_AgentPhone" MaxLength="99" Margin="2" Text="{Binding AgentPhone, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
|
<TextBox Grid.Row="6" Grid.Column="1" Name="textBox_AgentPhone" MaxLength="99" Margin="2" Text="{Binding AgentPhone, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
|
||||||
<TextBox Grid.Row="7" Grid.Column="3" Name="textBox_AgentFax" MaxLength="99" Margin="2" Text="{Binding AgentFax, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
|
<TextBox Grid.Row="6" Grid.Column="3" Name="textBox_AgentFax" MaxLength="99" Margin="2" Text="{Binding AgentFax, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
|
||||||
<TextBox Grid.Row="7" Grid.Column="1" Name="textBox_AgentEMail" MaxLength="99" Margin="2" Text="{Binding AgentEMail, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
|
<TextBox Grid.Row="7" Grid.Column="1" Name="textBox_AgentEMail" MaxLength="99" Margin="2" Text="{Binding AgentEMail, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
|
||||||
|
<TextBox Grid.Row="7" Grid.Column="3" Name="textBox_WasteDisposalServiceProvider" MaxLength="99" Margin="2" Text="{Binding WasteDisposalServiceProviderText, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
|
||||||
|
|
||||||
<ComboBox Grid.Row="0" Grid.Column="3" Name="comboBox_AgentTemplate" Margin="2" SelectedValuePath="Id" DisplayMemberPath="AgentTitle" SelectionChanged="comboBox_AgentTemplate_SelectionChanged" />
|
<ComboBox Grid.Row="0" Grid.Column="3" Name="comboBox_AgentTemplate" Margin="2" SelectedValuePath="Id" DisplayMemberPath="AgentTitle" SelectionChanged="comboBox_AgentTemplate_SelectionChanged" />
|
||||||
<Grid Grid.Column="2" Grid.Row="1" HorizontalAlignment="Right">
|
<Grid Grid.Column="2" Grid.Row="1" HorizontalAlignment="Right">
|
||||||
|
|||||||
@ -25,6 +25,7 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
private NOA_NOD _noa_nod;
|
private NOA_NOD _noa_nod;
|
||||||
private AGNT _agnt;
|
private AGNT _agnt;
|
||||||
|
private WAS _was;
|
||||||
private static List<AGNT_Template> _agntTemplates = null;
|
private static List<AGNT_Template> _agntTemplates = null;
|
||||||
private AGNT_Template _currentTemplate;
|
private AGNT_Template _currentTemplate;
|
||||||
private AGNT_Template _undoTemplate;
|
private AGNT_Template _undoTemplate;
|
||||||
@ -68,11 +69,14 @@ namespace ENI2.DetailViewControls
|
|||||||
this.RegisterTextboxChange(this.textBox_AgentStreetAndNumber, Message.NotificationClass.AGNT);
|
this.RegisterTextboxChange(this.textBox_AgentStreetAndNumber, Message.NotificationClass.AGNT);
|
||||||
this.RegisterTextboxChange(this.textBox_AgentCountry, Message.NotificationClass.AGNT);
|
this.RegisterTextboxChange(this.textBox_AgentCountry, Message.NotificationClass.AGNT);
|
||||||
|
|
||||||
|
// WAS
|
||||||
|
this.RegisterTextboxChange(this.textBox_WasteDisposalServiceProvider, Message.NotificationClass.WAS);
|
||||||
|
|
||||||
this.buttonSaveTemplate.IsEnabled = DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].IsEditor;
|
this.buttonSaveTemplate.IsEnabled = DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].IsEditor;
|
||||||
this.buttonDeleteTemplate.IsEnabled = DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].IsEditor;
|
this.buttonDeleteTemplate.IsEnabled = DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].IsEditor;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Initialize()
|
public async override void Initialize()
|
||||||
{
|
{
|
||||||
base.Initialize();
|
base.Initialize();
|
||||||
|
|
||||||
@ -95,6 +99,16 @@ namespace ENI2.DetailViewControls
|
|||||||
_agnt = new AGNT();
|
_agnt = new AGNT();
|
||||||
this.ControlMessages.Add(aMessage);
|
this.ControlMessages.Add(aMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(aMessage.MessageNotificationClass == Message.NotificationClass.WAS)
|
||||||
|
{
|
||||||
|
if (aMessage.Elements.Count > 0)
|
||||||
|
_was = aMessage.Elements[0] as WAS;
|
||||||
|
else
|
||||||
|
_was = new WAS();
|
||||||
|
this.ControlMessages.Add(aMessage);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.dateTimePicker_ETAToKielCanal.IsEnabled = this.Core.IsTransit;
|
this.dateTimePicker_ETAToKielCanal.IsEnabled = this.Core.IsTransit;
|
||||||
@ -123,11 +137,13 @@ namespace ENI2.DetailViewControls
|
|||||||
this.dateTimePicker_ETDFromLastPort.DataContext = _noa_nod;
|
this.dateTimePicker_ETDFromLastPort.DataContext = _noa_nod;
|
||||||
this.dateTimePicker_ETDFromPortOfCall.DataContext = _noa_nod;
|
this.dateTimePicker_ETDFromPortOfCall.DataContext = _noa_nod;
|
||||||
|
|
||||||
|
this.textBox_WasteDisposalServiceProvider.DataContext = _was;
|
||||||
|
|
||||||
this.checkBox_IsAnchored.IsEnabled = this.Core.IsDK;
|
this.checkBox_IsAnchored.IsEnabled = this.Core.IsDK;
|
||||||
|
|
||||||
if(_agntTemplates == null)
|
if(_agntTemplates == null)
|
||||||
{
|
{
|
||||||
_agntTemplates = DBManager.Instance.GetAGNTTemplates(); // inital full load
|
_agntTemplates = await DBManagerAsync.GetAGNTTemplatesAsync(); // inital full load
|
||||||
_agntTemplates.Sort();
|
_agntTemplates.Sort();
|
||||||
Trace.WriteLine(string.Format("{0} agent templates loaded", _agntTemplates.Count));
|
Trace.WriteLine(string.Format("{0} agent templates loaded", _agntTemplates.Count));
|
||||||
}
|
}
|
||||||
@ -242,17 +258,6 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region mouse wheel
|
|
||||||
|
|
||||||
private void ScrollViewer_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
|
|
||||||
{
|
|
||||||
ScrollViewer scv = (ScrollViewer)sender;
|
|
||||||
scv.ScrollToVerticalOffset(scv.VerticalOffset - e.Delta);
|
|
||||||
e.Handled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region AGNT templates combo
|
#region AGNT templates combo
|
||||||
|
|
||||||
private void comboBox_AgentTemplate_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
private void comboBox_AgentTemplate_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||||
@ -279,7 +284,7 @@ namespace ENI2.DetailViewControls
|
|||||||
DBManager.Instance.Delete(_currentTemplate);
|
DBManager.Instance.Delete(_currentTemplate);
|
||||||
_agntTemplates.Remove(_currentTemplate);
|
_agntTemplates.Remove(_currentTemplate);
|
||||||
this.textBoxTemplateTitle.Text = null;
|
this.textBoxTemplateTitle.Text = null;
|
||||||
this.buttonDeleteTemplate.IsEnabled = false;
|
this.buttonDeleteTemplate.IsEnabled = false;
|
||||||
this.comboBox_AgentTemplate.ItemsSource = _agntTemplates;
|
this.comboBox_AgentTemplate.ItemsSource = _agntTemplates;
|
||||||
this.buttonSetTemplate.IsEnabled = false;
|
this.buttonSetTemplate.IsEnabled = false;
|
||||||
}
|
}
|
||||||
@ -348,6 +353,8 @@ namespace ENI2.DetailViewControls
|
|||||||
this.textBox_AgentPostalCode.GetBindingExpression(TextBox.TextProperty).UpdateSource();
|
this.textBox_AgentPostalCode.GetBindingExpression(TextBox.TextProperty).UpdateSource();
|
||||||
this.textBox_AgentStreetAndNumber.Text = this._undoTemplate.AgentStreetAndNumber;
|
this.textBox_AgentStreetAndNumber.Text = this._undoTemplate.AgentStreetAndNumber;
|
||||||
this.textBox_AgentStreetAndNumber.GetBindingExpression(TextBox.TextProperty).UpdateSource();
|
this.textBox_AgentStreetAndNumber.GetBindingExpression(TextBox.TextProperty).UpdateSource();
|
||||||
|
this.textBox_WasteDisposalServiceProvider.Text = this._undoTemplate.WasteDisposalServiceProviderName;
|
||||||
|
this.textBox_WasteDisposalServiceProvider.GetBindingExpression(TextBox.TextProperty).UpdateSource();
|
||||||
|
|
||||||
this.buttonUndoTemplate.IsEnabled = false; // can't undo after undo
|
this.buttonUndoTemplate.IsEnabled = false; // can't undo after undo
|
||||||
}
|
}
|
||||||
@ -356,6 +363,13 @@ namespace ENI2.DetailViewControls
|
|||||||
{
|
{
|
||||||
if (this._currentTemplate == null) return;
|
if (this._currentTemplate == null) return;
|
||||||
|
|
||||||
|
// confirm overwrite of waste disposal service provider
|
||||||
|
if (this.textBox_WasteDisposalServiceProvider.Text.Length > 0)
|
||||||
|
{
|
||||||
|
string message = string.Format(Properties.Resources.textConfirmWSDPOverwrite, this.textBox_WasteDisposalServiceProvider.Text, this._currentTemplate.WasteDisposalServiceProviderName);
|
||||||
|
if (MessageBox.Show(message, Properties.Resources.textConfirmation, MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.No) { return; }
|
||||||
|
}
|
||||||
|
|
||||||
this._undoTemplate = createFromCurrentText(null, null);
|
this._undoTemplate = createFromCurrentText(null, null);
|
||||||
|
|
||||||
this.textBox_AgentCity.Text = this._currentTemplate.AgentCity;
|
this.textBox_AgentCity.Text = this._currentTemplate.AgentCity;
|
||||||
@ -367,7 +381,7 @@ namespace ENI2.DetailViewControls
|
|||||||
this.textBox_AgentEMail.Text = this._currentTemplate.AgentEMail;
|
this.textBox_AgentEMail.Text = this._currentTemplate.AgentEMail;
|
||||||
this.textBox_AgentEMail.GetBindingExpression(TextBox.TextProperty).UpdateSource();
|
this.textBox_AgentEMail.GetBindingExpression(TextBox.TextProperty).UpdateSource();
|
||||||
this.textBox_AgentFax.Text = this._currentTemplate.AgentFax;
|
this.textBox_AgentFax.Text = this._currentTemplate.AgentFax;
|
||||||
this.textBox_AgentEMail.GetBindingExpression(TextBox.TextProperty).UpdateSource();
|
this.textBox_AgentFax.GetBindingExpression (TextBox.TextProperty).UpdateSource();
|
||||||
this.textBox_AgentFirstName.Text = this._currentTemplate.AgentFirstName;
|
this.textBox_AgentFirstName.Text = this._currentTemplate.AgentFirstName;
|
||||||
this.textBox_AgentFirstName.GetBindingExpression(TextBox.TextProperty).UpdateSource();
|
this.textBox_AgentFirstName.GetBindingExpression(TextBox.TextProperty).UpdateSource();
|
||||||
this.textBox_AgentLastName.Text = this._currentTemplate.AgentLastName;
|
this.textBox_AgentLastName.Text = this._currentTemplate.AgentLastName;
|
||||||
@ -378,6 +392,11 @@ namespace ENI2.DetailViewControls
|
|||||||
this.textBox_AgentPostalCode.GetBindingExpression(TextBox.TextProperty).UpdateSource();
|
this.textBox_AgentPostalCode.GetBindingExpression(TextBox.TextProperty).UpdateSource();
|
||||||
this.textBox_AgentStreetAndNumber.Text = this._currentTemplate.AgentStreetAndNumber;
|
this.textBox_AgentStreetAndNumber.Text = this._currentTemplate.AgentStreetAndNumber;
|
||||||
this.textBox_AgentStreetAndNumber.GetBindingExpression(TextBox.TextProperty).UpdateSource();
|
this.textBox_AgentStreetAndNumber.GetBindingExpression(TextBox.TextProperty).UpdateSource();
|
||||||
|
if ((this._currentTemplate.WasteDisposalServiceProviderName ?? "").Trim() != (this.textBox_WasteDisposalServiceProvider.Text ?? "").Trim())
|
||||||
|
{
|
||||||
|
this.textBox_WasteDisposalServiceProvider.Text = this._currentTemplate.WasteDisposalServiceProviderName;
|
||||||
|
this.textBox_WasteDisposalServiceProvider.GetBindingExpression(TextBox.TextProperty).UpdateSource();
|
||||||
|
}
|
||||||
|
|
||||||
this.buttonUndoTemplate.IsEnabled = true;
|
this.buttonUndoTemplate.IsEnabled = true;
|
||||||
this.buttonSetTemplate.IsEnabled = false;
|
this.buttonSetTemplate.IsEnabled = false;
|
||||||
@ -391,7 +410,7 @@ namespace ENI2.DetailViewControls
|
|||||||
AGNT_Template at = new AGNT_Template();
|
AGNT_Template at = new AGNT_Template();
|
||||||
if (existingTemplate != null)
|
if (existingTemplate != null)
|
||||||
at = existingTemplate;
|
at = existingTemplate;
|
||||||
|
|
||||||
at.AgentTitle = title;
|
at.AgentTitle = title;
|
||||||
at.AgentCity = this.textBox_AgentCity.Text;
|
at.AgentCity = this.textBox_AgentCity.Text;
|
||||||
at.AgentCompanyName = this.textBox_AgentCompanyName.Text;
|
at.AgentCompanyName = this.textBox_AgentCompanyName.Text;
|
||||||
@ -403,6 +422,7 @@ namespace ENI2.DetailViewControls
|
|||||||
at.AgentPhone = this.textBox_AgentPhone.Text;
|
at.AgentPhone = this.textBox_AgentPhone.Text;
|
||||||
at.AgentPostalCode = this.textBox_AgentPostalCode.Text;
|
at.AgentPostalCode = this.textBox_AgentPostalCode.Text;
|
||||||
at.AgentStreetAndNumber = textBox_AgentStreetAndNumber.Text;
|
at.AgentStreetAndNumber = textBox_AgentStreetAndNumber.Text;
|
||||||
|
at.WasteDisposalServiceProviderName = textBox_WasteDisposalServiceProvider.Text;
|
||||||
|
|
||||||
return at;
|
return at;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,14 +19,16 @@
|
|||||||
<col:DictionaryEntry Key="SeaGo BHV" Value="2" />
|
<col:DictionaryEntry Key="SeaGo BHV" Value="2" />
|
||||||
<col:DictionaryEntry Key="SeaGo WHV" Value="4" />
|
<col:DictionaryEntry Key="SeaGo WHV" Value="4" />
|
||||||
<col:DictionaryEntry Key="Hoegh BHV" Value="8" />
|
<col:DictionaryEntry Key="Hoegh BHV" Value="8" />
|
||||||
|
<col:DictionaryEntry Key="Elbe Bulk" Value="16" />
|
||||||
|
<col:DictionaryEntry Key="Fct Junge" Value="32" />
|
||||||
</col:ArrayList>
|
</col:ArrayList>
|
||||||
</UserControl.Resources>
|
</UserControl.Resources>
|
||||||
<GroupBox Name="portNotificationGroupBox" Header="{x:Static p:Resources.textPortNotification}">
|
<GroupBox Name="portNotificationGroupBox" Header="{x:Static p:Resources.textPortNotification}">
|
||||||
<ScrollViewer PreviewMouseWheel="ScrollViewer_PreviewMouseWheel">
|
<ScrollViewer>
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="50" />
|
<RowDefinition Height="50" />
|
||||||
<RowDefinition Height="220" />
|
<RowDefinition Height="194" />
|
||||||
<RowDefinition Height="200" />
|
<RowDefinition Height="200" />
|
||||||
<RowDefinition Height="200" />
|
<RowDefinition Height="200" />
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
@ -34,10 +36,12 @@
|
|||||||
<Grid>
|
<Grid>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="1*" />
|
<ColumnDefinition Width="1*" />
|
||||||
<ColumnDefinition Width="5*" />
|
<ColumnDefinition Width="4*" />
|
||||||
|
<ColumnDefinition Width="1*" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textNameMaster}" Name="label_nameMaster" Margin="0,0,10,0"/>
|
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textNameMaster}" Name="label_nameMaster" Margin="0,0,10,0"/>
|
||||||
<TextBox Grid.Row="0" Grid.Column="1" Name="textBox_NameMaster" MaxLength="100" Margin="2" Text="{Binding NameOfMaster, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center" VerticalAlignment="Center"/>
|
<TextBox Grid.Row="0" Grid.Column="1" Name="textBox_NameMaster" MaxLength="100" Margin="2" Text="{Binding NameOfMaster, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center" VerticalAlignment="Center"/>
|
||||||
|
<Button x:Name="buttonCopyNameFromCREWA" Grid.Row="0" Grid.Column="2" Margin="2" Content="{x:Static p:Resources.textCopyFromCREWA}" Click="buttonCopyNameFromCREWA_Click"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
<GroupBox Name="infoGroupBox" Header="{x:Static p:Resources.textInfo}" Grid.Row="1" Margin="0,5,0,5">
|
<GroupBox Name="infoGroupBox" Header="{x:Static p:Resources.textInfo}" Grid.Row="1" Margin="0,5,0,5">
|
||||||
@ -55,32 +59,84 @@
|
|||||||
<RowDefinition Height="26" />
|
<RowDefinition Height="26" />
|
||||||
<RowDefinition Height="26" />
|
<RowDefinition Height="26" />
|
||||||
<RowDefinition Height="26" />
|
<RowDefinition Height="26" />
|
||||||
<RowDefinition Height="26" />
|
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textShippingArea}" Name="label_INFOShippingArea" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
|
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textShippingArea}" Name="label_INFOShippingArea" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="2" Content="{x:Static p:Resources.textMaerskSeago}" Name="label_MaerskSeaGo" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
|
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="0" Content="{x:Static p:Resources.textPortArea}" Name="label_INFOPortArea" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
|
<Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="0" Content="{x:Static p:Resources.textPortArea}" Name="label_INFOPortArea" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
|
||||||
|
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="2" Grid.Column="0" Content="{x:Static p:Resources.textRequestedPositionInPortOfCall}" Name="label_INFORequestedBerth" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
|
<Label HorizontalContentAlignment="Right" Grid.Row="2" Grid.Column="0" Content="{x:Static p:Resources.textRequestedPositionInPortOfCall}" Name="label_INFORequestedBerth" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="3" Grid.Column="0" Content="{x:Static p:Resources.textBowThrusterPower}" Name="label_INFOBowThrusterPower" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
|
<Label HorizontalContentAlignment="Right" Grid.Row="3" Grid.Column="0" Content="{x:Static p:Resources.textBowThrusterPower}" Name="label_INFOBowThrusterPower" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="4" Grid.Column="0" Content="{x:Static p:Resources.textSternThrusterPower}" Name="label_INFOSternThrusterPower" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
|
<Label HorizontalContentAlignment="Right" Grid.Row="4" Grid.Column="0" Content="{x:Static p:Resources.textSternThrusterPower}" Name="label_INFOSternThrusterPower" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="5" Grid.Column="0" Content="{x:Static p:Resources.textFumigatedBulkCargo}" Name="label_INFOFumigatedBulkCargo" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
|
<Label HorizontalContentAlignment="Right" Grid.Row="5" Grid.Column="0" Content="{x:Static p:Resources.textFumigatedBulkCargo}" Name="label_INFOFumigatedBulkCargo" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="6" Grid.Column="0" Content="{x:Static p:Resources.textDeplacementSummerDraught}" Name="label_INFODeplacementSummerDraught" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
|
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="2" Content="{x:Static p:Resources.textDeplacementSummerDraught}" Name="label_INFODeplacementSummerDraught" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="2" Grid.Column="2" Content="{x:Static p:Resources.textSpecialRequirementsOfShipAtBerth}" Name="label_INFOSpecialRequirements" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
|
<Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="2" Content="{x:Static p:Resources.textSpecialRequirementsOfShipAtBerth}" Name="label_INFOSpecialRequirements" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
|
||||||
<Label HorizontalContentAlignment="Right" Grid.Row="4" Grid.Column="2" Content="{x:Static p:Resources.textConstructionCharacteristics}" Name="label_INFOConstructionCharacteristics" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
|
<Label HorizontalContentAlignment="Right" Grid.Row="3" Grid.Column="2" Content="{x:Static p:Resources.textConstructionCharacteristics}" Name="label_INFOConstructionCharacteristics" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
|
||||||
<ComboBox Grid.Row="0" Grid.Column="1" x:Name="comboBoxShippingArea" Margin="2" SelectedIndex="{Binding ShippingArea, Converter={util:ByteConverter}}" ContextMenu="{DynamicResource ClearContextMenu}" />
|
<ComboBox Grid.Row="0" Grid.Column="1" x:Name="comboBoxShippingArea" Margin="2" SelectedIndex="{Binding ShippingArea, Converter={util:ByteConverter}}" ContextMenu="{DynamicResource ClearContextMenu}" />
|
||||||
<ComboBox Grid.Row="0" Grid.Column="3" x:Name="comboBoxGroup" Margin="0,2,4,2" ItemsSource="{StaticResource arrList}" DisplayMemberPath="Key" SelectedValuePath="Value" SelectionChanged="comboBoxGroup_SelectionChanged"/>
|
|
||||||
<ComboBox Grid.Row="1" Grid.Column="1" Name="comboBoxPortArea" Margin="2" SelectedValue="{Binding PortArea}" SelectedValuePath="Key" DisplayMemberPath="Value" ContextMenu="{DynamicResource ClearContextMenu}" />
|
<Grid Grid.Row="1" Grid.Column="1">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
<ColumnDefinition Width="110" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<ComboBox Grid.Column="0" Name="comboBoxPortArea" Margin="2" SelectedValue="{Binding PortArea}" SelectedValuePath="Key" DisplayMemberPath="Value" ContextMenu="{DynamicResource ClearContextMenu}" />
|
||||||
|
<Button Grid.Column="1" x:Name="buttonSearchPortArea" Margin="2" Content="Lookup port area" Click="buttonSearchPortArea_Click" />
|
||||||
|
</Grid>
|
||||||
|
|
||||||
<TextBox Grid.Row="2" Grid.Column="1" Name="textRequestedPostionInPortOfCall" Margin="2" Text="{Binding RequestedPositionInPortOfCall, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
|
<TextBox Grid.Row="2" Grid.Column="1" Name="textRequestedPostionInPortOfCall" Margin="2" Text="{Binding RequestedPositionInPortOfCall, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
|
||||||
<TextBox Grid.Row="3" Grid.Column="1" Name="textBowThrusterPower" Margin="2" Text="{Binding BowThrusterPower, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
|
<TextBox Grid.Row="3" Grid.Column="1" Name="textBowThrusterPower" Margin="2" Text="{Binding BowThrusterPower, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
|
||||||
<TextBox Grid.Row="4" Grid.Column="1" Name="textSternThrusterPower" Margin="2" Text="{Binding SternThrusterPower, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
|
<TextBox Grid.Row="4" Grid.Column="1" Name="textSternThrusterPower" Margin="2" Text="{Binding SternThrusterPower, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
|
||||||
<CheckBox Grid.Row="5" Grid.Column="1" Name="checkBoxFumigatedBulkCargo" VerticalContentAlignment="Center" IsChecked="{Binding FumigatedBulkCargoBool, Mode=TwoWay}" Margin="2"/>
|
<CheckBox Grid.Row="5" Grid.Column="1" Name="checkBoxFumigatedBulkCargo" VerticalContentAlignment="Center" IsChecked="{Binding FumigatedBulkCargoBool, Mode=TwoWay}" Margin="2"/>
|
||||||
<xctk:DoubleUpDown Grid.Row="6" Grid.Column="1" Name="doubleUpDownDisplacementSummerDraught" ShowButtonSpinner="False" ParsingNumberStyle="Any" Value="{Binding DeplacementSummerDraught_TNE}" Margin="4,2,0,2" FormatString="N1" TextAlignment="Left"/>
|
<xctk:DoubleUpDown Grid.Row="0" Grid.Column="3" Name="doubleUpDownDisplacementSummerDraught" ShowButtonSpinner="False" ParsingNumberStyle="Any" Value="{Binding DeplacementSummerDraught_TNE}" Margin="4,2,0,2" FormatString="N1" TextAlignment="Left"/>
|
||||||
<TextBox Grid.Row="2" Grid.Column="3" Grid.RowSpan="2" Name="textSpecialRequirements" Margin="2" Text="{Binding SpecialRequirementsOfShipAtBerth, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
|
<TextBox Grid.Row="1" Grid.Column="3" Grid.RowSpan="2" Name="textSpecialRequirements" Margin="2" Text="{Binding SpecialRequirementsOfShipAtBerth, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Top" />
|
||||||
<TextBox Grid.Row="4" Grid.Column="3" Grid.RowSpan="2" Name="textConstructionCharacteristics" Margin="2" Text="{Binding ConstructionCharacteristicsOfShip, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
|
<TextBox Grid.Row="3" Grid.Column="3" Grid.RowSpan="2" Name="textConstructionCharacteristics" Margin="2" Text="{Binding ConstructionCharacteristicsOfShip, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Top"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
<GroupBox Name="servGroupBox" Header="{x:Static p:Resources.textServ}" Grid.Row="2">
|
<GroupBox Name="servGroupBox" Header="{x:Static p:Resources.textServ}" Grid.Row="2">
|
||||||
<enictrl:ENIDataGrid x:Name="dataGridSERV" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="*" />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid Grid.Row="0">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width=".1*" />
|
||||||
|
<ColumnDefinition Width=".2*" />
|
||||||
|
<ColumnDefinition Width="26" />
|
||||||
|
<ColumnDefinition Width="26" />
|
||||||
|
<ColumnDefinition Width="26" />
|
||||||
|
<ColumnDefinition Width="26" />
|
||||||
|
<ColumnDefinition Width="26" />
|
||||||
|
|
||||||
|
<ColumnDefinition Width=".2*" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textSERVTemplate}" Name="label_MaerskSeaGo" VerticalContentAlignment="Center" Margin="0,0,10,0"/>
|
||||||
|
<ComboBox Grid.Row="0" Grid.Column="1" x:Name="comboBoxGroup" Margin="2,2,4,2" DisplayMemberPath="ServiceName"
|
||||||
|
SelectionChanged="comboBoxGroup_SelectionChanged" ContextMenu="{DynamicResource ClearContextMenu}" />
|
||||||
|
<Button Name="buttonSetTemplate" Margin="2" Click="buttonSetTemplate_Click" BorderThickness="0" Background="Transparent" Grid.Column="2"
|
||||||
|
ToolTip="Apply template" HorizontalContentAlignment="Right" IsEnabled="False">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<Image Source="../Resources/check.png" Margin="0,0,0,0" Height="20" Width="20" />
|
||||||
|
</StackPanel>
|
||||||
|
</Button>
|
||||||
|
|
||||||
|
<Button Name="buttonEditTemplate" Grid.Column="4" Grid.Row="0" Margin="2" Click="buttonEditTemplate_Click" BorderThickness="0" Background="Transparent" ToolTip="Edit template">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<Image Source="../Resources/pencil.png" Margin="0,0,0,0" Height="20" Width="20" />
|
||||||
|
</StackPanel>
|
||||||
|
</Button>
|
||||||
|
<Button Name="buttonNewTemplate" Grid.Column="5" Grid.Row="0" Margin="2" Click="buttonNewTemplate_Click" BorderThickness="0" Background="Transparent" ToolTip="New template">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<Image Source="../Resources/document_plain_new.png" Margin="0,0,0,0" Height="20" Width="20" />
|
||||||
|
</StackPanel>
|
||||||
|
</Button>
|
||||||
|
<Button Name="buttonDeleteTemplate" Grid.Column="6" Grid.Row="0" Margin="2" Click="buttonDeleteTemplate_Click" BorderThickness="0" Background="Transparent" ToolTip="Delete template" IsEnabled="False">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<Image Source="../Resources/delete.png" Margin="0,0,0,0" Height="20" Width="20" />
|
||||||
|
</StackPanel>
|
||||||
|
</Button>
|
||||||
|
|
||||||
|
</Grid>
|
||||||
|
<enictrl:ENIDataGrid Grid.Row="1" x:Name="dataGridSERV" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
||||||
AutoGenerateColumns="False" Margin="0,5,0,0">
|
AutoGenerateColumns="False" Margin="0,5,0,0">
|
||||||
<DataGrid.Columns>
|
<DataGrid.Columns>
|
||||||
<DataGridTextColumn Header="" Binding="{Binding Identifier}" IsReadOnly="True" />
|
<DataGridTextColumn Header="" Binding="{Binding Identifier}" IsReadOnly="True" />
|
||||||
@ -89,7 +145,7 @@
|
|||||||
<DataGridTextColumn Header="{x:Static p:Resources.textServiceInvoiceRecipient}" Binding="{Binding ServiceInvoiceRecipient, Mode=TwoWay}" IsReadOnly="True" Width="0.4*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textServiceInvoiceRecipient}" Binding="{Binding ServiceInvoiceRecipient, Mode=TwoWay}" IsReadOnly="True" Width="0.4*" />
|
||||||
</DataGrid.Columns>
|
</DataGrid.Columns>
|
||||||
</enictrl:ENIDataGrid>
|
</enictrl:ENIDataGrid>
|
||||||
|
</Grid>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
<GroupBox Name="ladgGroupBox" Header="{x:Static p:Resources.textLadg}" Grid.Row="3">
|
<GroupBox Name="ladgGroupBox" Header="{x:Static p:Resources.textLadg}" Grid.Row="3">
|
||||||
<enictrl:ENIDataGrid x:Name="dataGridLADG" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
<enictrl:ENIDataGrid x:Name="dataGridLADG" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
||||||
@ -100,8 +156,27 @@
|
|||||||
<DataGridTextColumn Header="{x:Static p:Resources.textLACodes}" Binding="{Binding CargoLACode, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textLACodes}" Binding="{Binding CargoLACode, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textCargoCodeNST}" Binding="{Binding CargoCodeNST, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textCargoCodeNST}" Binding="{Binding CargoCodeNST, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textCargoCodeNST3}" Binding="{Binding CargoCodeNST_3, Mode=TwoWay}" IsReadOnly="True" Width="0.15*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textCargoCodeNST3}" Binding="{Binding CargoCodeNST_3, Mode=TwoWay}" IsReadOnly="True" Width="0.15*" />
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textCargoNumberOfItems}" Binding="{Binding CargoNumberOfItems, Mode=TwoWay}" IsReadOnly="True" Width="0.15*" />
|
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textCargoGrossQuantity}" Binding="{Binding CargoGrossQuantity_TNE, Mode=TwoWay, StringFormat={}{0:N3}}" IsReadOnly="True" Width="0.15*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textCargoNumberOfItems}" IsReadOnly="False" Width="0.15*">
|
||||||
|
<DataGridTextColumn.Binding>
|
||||||
|
<Binding Path="CargoNumberOfItems" Mode="TwoWay">
|
||||||
|
<Binding.ValidationRules>
|
||||||
|
<util:NumberValidationRule MaxValue="9999999" />
|
||||||
|
</Binding.ValidationRules>
|
||||||
|
</Binding>
|
||||||
|
</DataGridTextColumn.Binding>
|
||||||
|
</DataGridTextColumn>
|
||||||
|
|
||||||
|
<DataGridTextColumn Header="{x:Static p:Resources.textCargoGrossQuantity}" IsReadOnly="False" Width="0.15*">
|
||||||
|
<DataGridTextColumn.Binding>
|
||||||
|
<Binding Path="CargoGrossQuantity_TNE" Mode="TwoWay" StringFormat="N3">
|
||||||
|
<Binding.ValidationRules>
|
||||||
|
<util:NumberValidationRule MaxValue="1000000" MinValue="0" />
|
||||||
|
</Binding.ValidationRules>
|
||||||
|
</Binding>
|
||||||
|
</DataGridTextColumn.Binding>
|
||||||
|
</DataGridTextColumn>
|
||||||
|
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textCargoPortOfLoading}" Binding="{Binding PortOfLoading, Mode=TwoWay}" IsReadOnly="True" Width="0.15*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textCargoPortOfLoading}" Binding="{Binding PortOfLoading, Mode=TwoWay}" IsReadOnly="True" Width="0.15*" />
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textCargoPortOfDischarge}" Binding="{Binding PortOfDischarge, Mode=TwoWay}" IsReadOnly="True" Width="0.15*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textCargoPortOfDischarge}" Binding="{Binding PortOfDischarge, Mode=TwoWay}" IsReadOnly="True" Width="0.15*" />
|
||||||
</DataGrid.Columns>
|
</DataGrid.Columns>
|
||||||
|
|||||||
@ -1,4 +1,6 @@
|
|||||||
// Copyright (c) 2017 schick Informatik
|
// Copyright (c) 2017- schick Informatik
|
||||||
|
// Description:
|
||||||
|
//
|
||||||
|
|
||||||
// Description: Detailansicht Gruppe Port Notification
|
// Description: Detailansicht Gruppe Port Notification
|
||||||
//
|
//
|
||||||
@ -6,6 +8,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Controls;
|
using System.Windows.Controls;
|
||||||
|
|
||||||
@ -13,6 +16,8 @@ using ENI2.EditControls;
|
|||||||
using ENI2.Util;
|
using ENI2.Util;
|
||||||
|
|
||||||
using bsmd.database;
|
using bsmd.database;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Diagnostics;
|
||||||
|
|
||||||
namespace ENI2.DetailViewControls
|
namespace ENI2.DetailViewControls
|
||||||
{
|
{
|
||||||
@ -22,10 +27,18 @@ namespace ENI2.DetailViewControls
|
|||||||
public partial class PortNotificationDetailControl : DetailBaseControl
|
public partial class PortNotificationDetailControl : DetailBaseControl
|
||||||
{
|
{
|
||||||
|
|
||||||
|
#region Fields
|
||||||
|
|
||||||
private Message _nameMessage;
|
private Message _nameMessage;
|
||||||
private Message _infoMessage;
|
private Message _infoMessage;
|
||||||
private Message _servMessage;
|
private Message _servMessage;
|
||||||
private Message _ladgMessage;
|
private Message _ladgMessage;
|
||||||
|
private Message _crewaMessage;
|
||||||
|
private Dictionary<string, string> portAreas = null;
|
||||||
|
private static List<SERV_Template> _servTemplates = null;
|
||||||
|
private SERV_Template _currentTemplate;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
private static readonly string[] shippingAreas = {
|
private static readonly string[] shippingAreas = {
|
||||||
Properties.Resources.textShippingAreaNORTHBALTIC,
|
Properties.Resources.textShippingAreaNORTHBALTIC,
|
||||||
@ -52,10 +65,10 @@ namespace ENI2.DetailViewControls
|
|||||||
this.RegisterDoubleUpDownChange(this.doubleUpDownDisplacementSummerDraught, Message.NotificationClass.INFO);
|
this.RegisterDoubleUpDownChange(this.doubleUpDownDisplacementSummerDraught, Message.NotificationClass.INFO);
|
||||||
this.RegisterTextboxChange(this.textSpecialRequirements, Message.NotificationClass.INFO);
|
this.RegisterTextboxChange(this.textSpecialRequirements, Message.NotificationClass.INFO);
|
||||||
this.RegisterTextboxChange(this.textConstructionCharacteristics, Message.NotificationClass.INFO);
|
this.RegisterTextboxChange(this.textConstructionCharacteristics, Message.NotificationClass.INFO);
|
||||||
|
this.dataGridLADG.CellEditEnding += (obj, ev) => { this.OnNotificationClassChanged(Message.NotificationClass.LADG); };
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Initialize()
|
public override async void Initialize()
|
||||||
{
|
{
|
||||||
base.Initialize();
|
base.Initialize();
|
||||||
|
|
||||||
@ -65,6 +78,7 @@ namespace ENI2.DetailViewControls
|
|||||||
if (aMessage.MessageNotificationClass == Message.NotificationClass.INFO) { this._infoMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
if (aMessage.MessageNotificationClass == Message.NotificationClass.INFO) { this._infoMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
||||||
if (aMessage.MessageNotificationClass == Message.NotificationClass.SERV) { this._servMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
if (aMessage.MessageNotificationClass == Message.NotificationClass.SERV) { this._servMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
||||||
if (aMessage.MessageNotificationClass == Message.NotificationClass.LADG) { this._ladgMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
if (aMessage.MessageNotificationClass == Message.NotificationClass.LADG) { this._ladgMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
||||||
|
if(aMessage.MessageNotificationClass == Message.NotificationClass.CREWA) { this._crewaMessage = aMessage;}
|
||||||
}
|
}
|
||||||
|
|
||||||
#region init NAME
|
#region init NAME
|
||||||
@ -109,11 +123,11 @@ namespace ENI2.DetailViewControls
|
|||||||
_infoMessage.Elements.Add(info);
|
_infoMessage.Elements.Add(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
Dictionary<string, string> portAreas = LocalizedLookup.getPortAreasForLocode(this.Core.PoC);
|
portAreas = LocalizedLookup.getPortAreasForLocode(this.Core.PoC);
|
||||||
this.comboBoxPortArea.ItemsSource = portAreas;
|
this.comboBoxPortArea.ItemsSource = portAreas;
|
||||||
|
|
||||||
this.comboBoxShippingArea.ItemsSource = shippingAreas;
|
this.comboBoxShippingArea.ItemsSource = shippingAreas;
|
||||||
this.infoGroupBox.DataContext = info;
|
this.infoGroupBox.DataContext = info;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -151,27 +165,38 @@ namespace ENI2.DetailViewControls
|
|||||||
this.dataGridLADG.DeleteRequested += DataGridLADG_DeleteRequested;
|
this.dataGridLADG.DeleteRequested += DataGridLADG_DeleteRequested;
|
||||||
this.dataGridLADG.CreateRequested += DataGridLADG_CreateRequested;
|
this.dataGridLADG.CreateRequested += DataGridLADG_CreateRequested;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region init helper Maersk / SeaGo Field
|
#region init SERV templates
|
||||||
|
|
||||||
if (this.Core.IsFlagSet(MessageCore.CoreFlags.MAERSK_BHV)) this.comboBoxGroup.SelectedIndex = 1;
|
if(_servTemplates == null)
|
||||||
if (this.Core.IsFlagSet(MessageCore.CoreFlags.SEAGO_BHV)) this.comboBoxGroup.SelectedIndex = 2;
|
{
|
||||||
if (this.Core.IsFlagSet(MessageCore.CoreFlags.SEAGO_WHV)) this.comboBoxGroup.SelectedIndex = 3;
|
_servTemplates = await DBManagerAsync.GetSERVTemplatesAsync(); // initial load
|
||||||
if (this.Core.IsFlagSet(MessageCore.CoreFlags.HOEGH)) this.comboBoxGroup.SelectedIndex = 4;
|
_servTemplates.Sort();
|
||||||
|
Trace.WriteLine($"{_servTemplates.Count} SERV templates loaded");
|
||||||
|
}
|
||||||
|
|
||||||
|
this.comboBoxGroup.ItemsSource = _servTemplates;
|
||||||
|
|
||||||
|
this.buttonDeleteTemplate.Visibility = DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].IsEditor ? Visibility.Visible : Visibility.Hidden;
|
||||||
|
this.buttonEditTemplate.Visibility = DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].IsEditor ? Visibility.Visible : Visibility.Hidden;
|
||||||
|
this.buttonNewTemplate.Visibility = DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].IsEditor ? Visibility.Visible : Visibility.Hidden;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#region datagrid LADG
|
#region datagrid LADG
|
||||||
|
|
||||||
private void DataGridLADG_CreateRequested()
|
private void DataGridLADG_CreateRequested()
|
||||||
{
|
{
|
||||||
|
this.dataGridLADG.CancelEdit();
|
||||||
|
this.dataGridLADG.CancelEdit();
|
||||||
EditLADGDialog eld = new EditLADGDialog();
|
EditLADGDialog eld = new EditLADGDialog();
|
||||||
eld.LADG = new LADG();
|
eld.LADG = new LADG();
|
||||||
eld.LADG.MessageHeader = _ladgMessage;
|
eld.LADG.MessageHeader = _ladgMessage;
|
||||||
eld.LADG.Identifier = LADG.GetNewIdentifier(_ladgMessage.Elements);
|
eld.LADG.Identifier = LADG.GetNewIdentifier(_ladgMessage.Elements);
|
||||||
eld.Core = this.Core;
|
eld.Core = this.Core;
|
||||||
|
|
||||||
eld.AddClicked += () =>
|
eld.AddClicked += () =>
|
||||||
{
|
{
|
||||||
@ -179,7 +204,7 @@ namespace ENI2.DetailViewControls
|
|||||||
if (!this._ladgMessage.Elements.Contains(eld.LADG))
|
if (!this._ladgMessage.Elements.Contains(eld.LADG))
|
||||||
this._ladgMessage.Elements.Add(eld.LADG);
|
this._ladgMessage.Elements.Add(eld.LADG);
|
||||||
this.dataGridLADG.Items.Refresh();
|
this.dataGridLADG.Items.Refresh();
|
||||||
|
|
||||||
eld.LADG = new LADG();
|
eld.LADG = new LADG();
|
||||||
eld.LADG.MessageHeader = _ladgMessage;
|
eld.LADG.MessageHeader = _ladgMessage;
|
||||||
eld.LADG.Identifier = LADG.GetNewIdentifier(_ladgMessage.Elements);
|
eld.LADG.Identifier = LADG.GetNewIdentifier(_ladgMessage.Elements);
|
||||||
@ -188,7 +213,7 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
if (eld.ShowDialog() ?? false)
|
if (eld.ShowDialog() ?? false)
|
||||||
{
|
{
|
||||||
if(!_ladgMessage.Elements.Contains(eld.LADG))
|
if(!_ladgMessage.Elements.Contains(eld.LADG))
|
||||||
_ladgMessage.Elements.Add(eld.LADG);
|
_ladgMessage.Elements.Add(eld.LADG);
|
||||||
this.dataGridLADG.Items.Refresh();
|
this.dataGridLADG.Items.Refresh();
|
||||||
this.SublistElementChanged(Message.NotificationClass.LADG);
|
this.SublistElementChanged(Message.NotificationClass.LADG);
|
||||||
@ -199,6 +224,8 @@ namespace ENI2.DetailViewControls
|
|||||||
{
|
{
|
||||||
if (obj is LADG ladg)
|
if (obj is LADG ladg)
|
||||||
{
|
{
|
||||||
|
this.dataGridLADG.CancelEdit();
|
||||||
|
this.dataGridLADG.CancelEdit();
|
||||||
// are you sure dialog is in base class
|
// are you sure dialog is in base class
|
||||||
this._ladgMessage.Elements.Remove(ladg);
|
this._ladgMessage.Elements.Remove(ladg);
|
||||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(ladg);
|
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(ladg);
|
||||||
@ -210,6 +237,9 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
private void DataGridLADG_EditRequested(DatabaseEntity obj)
|
private void DataGridLADG_EditRequested(DatabaseEntity obj)
|
||||||
{
|
{
|
||||||
|
this.dataGridLADG.CancelEdit();
|
||||||
|
this.dataGridLADG.CancelEdit();
|
||||||
|
|
||||||
LADG ladg = obj as LADG;
|
LADG ladg = obj as LADG;
|
||||||
|
|
||||||
EditLADGDialog eld = new EditLADGDialog();
|
EditLADGDialog eld = new EditLADGDialog();
|
||||||
@ -224,7 +254,7 @@ namespace ENI2.DetailViewControls
|
|||||||
this.dataGridLADG.Items.Refresh();
|
this.dataGridLADG.Items.Refresh();
|
||||||
|
|
||||||
eld.LADG = new LADG();
|
eld.LADG = new LADG();
|
||||||
eld.LADG.Identifier = LADG.GetNewIdentifier(_ladgMessage.Elements);
|
eld.LADG.Identifier = LADG.GetNewIdentifier(_ladgMessage.Elements);
|
||||||
eld.LADG.MessageHeader = _ladgMessage;
|
eld.LADG.MessageHeader = _ladgMessage;
|
||||||
this.SublistElementChanged(Message.NotificationClass.LADG);
|
this.SublistElementChanged(Message.NotificationClass.LADG);
|
||||||
};
|
};
|
||||||
@ -249,7 +279,7 @@ namespace ENI2.DetailViewControls
|
|||||||
#region datagrid SERV
|
#region datagrid SERV
|
||||||
|
|
||||||
private void DataGridSERV_CreateRequested()
|
private void DataGridSERV_CreateRequested()
|
||||||
{
|
{
|
||||||
EditSERVDialog esd = new EditSERVDialog();
|
EditSERVDialog esd = new EditSERVDialog();
|
||||||
esd.SERV = new SERV();
|
esd.SERV = new SERV();
|
||||||
esd.SERV.Identifier = SERV.GetNewIdentifier(_servMessage.Elements);
|
esd.SERV.Identifier = SERV.GetNewIdentifier(_servMessage.Elements);
|
||||||
@ -259,7 +289,7 @@ namespace ENI2.DetailViewControls
|
|||||||
{
|
{
|
||||||
esd.CopyValuesToEntity();
|
esd.CopyValuesToEntity();
|
||||||
if(!_servMessage.Elements.Contains(esd.SERV))
|
if(!_servMessage.Elements.Contains(esd.SERV))
|
||||||
_servMessage.Elements.Add(esd.SERV);
|
_servMessage.Elements.Add(esd.SERV);
|
||||||
this.dataGridSERV.Items.Refresh();
|
this.dataGridSERV.Items.Refresh();
|
||||||
esd.SERV = new SERV();
|
esd.SERV = new SERV();
|
||||||
esd.SERV.MessageHeader = _servMessage;
|
esd.SERV.MessageHeader = _servMessage;
|
||||||
@ -290,7 +320,7 @@ namespace ENI2.DetailViewControls
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void DataGridSERV_EditRequested(DatabaseEntity obj)
|
private void DataGridSERV_EditRequested(DatabaseEntity obj)
|
||||||
{
|
{
|
||||||
EditSERVDialog esd = new EditSERVDialog();
|
EditSERVDialog esd = new EditSERVDialog();
|
||||||
esd.SERV = obj as SERV;
|
esd.SERV = obj as SERV;
|
||||||
|
|
||||||
@ -302,7 +332,7 @@ namespace ENI2.DetailViewControls
|
|||||||
this.dataGridSERV.Items.Refresh();
|
this.dataGridSERV.Items.Refresh();
|
||||||
|
|
||||||
esd.SERV = new SERV();
|
esd.SERV = new SERV();
|
||||||
esd.SERV.Identifier = SERV.GetNewIdentifier(_servMessage.Elements);
|
esd.SERV.Identifier = SERV.GetNewIdentifier(_servMessage.Elements);
|
||||||
esd.SERV.MessageHeader = _servMessage;
|
esd.SERV.MessageHeader = _servMessage;
|
||||||
this.SublistElementChanged(Message.NotificationClass.SERV);
|
this.SublistElementChanged(Message.NotificationClass.SERV);
|
||||||
};
|
};
|
||||||
@ -327,7 +357,7 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
public override void HighlightErrorMessageContainer()
|
public override void HighlightErrorMessageContainer()
|
||||||
{
|
{
|
||||||
if (this._nameMessage.HasErrors)
|
if (this._nameMessage.HasErrors)
|
||||||
HighlightService.HighlightControl(this.nameGroupBox, HighlightService.HighlightStyle.ERROR, this._nameMessage);
|
HighlightService.HighlightControl(this.nameGroupBox, HighlightService.HighlightStyle.ERROR, this._nameMessage);
|
||||||
if (this._infoMessage.HasErrors)
|
if (this._infoMessage.HasErrors)
|
||||||
HighlightService.HighlightControl(this.infoGroupBox, HighlightService.HighlightStyle.ERROR, this._infoMessage);
|
HighlightService.HighlightControl(this.infoGroupBox, HighlightService.HighlightStyle.ERROR, this._infoMessage);
|
||||||
@ -349,114 +379,143 @@ namespace ENI2.DetailViewControls
|
|||||||
HighlightService.HighlightControl(this.ladgGroupBox, HighlightService.HighlightStyle.VIOLATION, this._ladgMessage);
|
HighlightService.HighlightControl(this.ladgGroupBox, HighlightService.HighlightStyle.VIOLATION, this._ladgMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region mouse wheel
|
#region SERV template event handler
|
||||||
|
|
||||||
private void ScrollViewer_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
|
|
||||||
{
|
|
||||||
ScrollViewer scv = (ScrollViewer)sender;
|
|
||||||
scv.ScrollToVerticalOffset(scv.VerticalOffset - e.Delta);
|
|
||||||
e.Handled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Spezialbalkon für die Gruppenauswahl im Core (Maersk BHV / Seago usw.)
|
|
||||||
|
|
||||||
private void comboBoxGroup_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
private void comboBoxGroup_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||||
{
|
{
|
||||||
// clear all
|
if(this.comboBoxGroup.SelectedItem is SERV_Template st)
|
||||||
this.Core.SetFlag(false, MessageCore.CoreFlags.MAERSK_BHV);
|
{
|
||||||
this.Core.SetFlag(false, MessageCore.CoreFlags.SEAGO_BHV);
|
this.buttonDeleteTemplate.IsEnabled = true;
|
||||||
this.Core.SetFlag(false, MessageCore.CoreFlags.SEAGO_WHV);
|
this.buttonSetTemplate.IsEnabled = true;
|
||||||
this.Core.SetFlag(false, MessageCore.CoreFlags.HOEGH);
|
this._currentTemplate = st;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
DictionaryEntry selectedItem = (DictionaryEntry) this.comboBoxGroup.SelectedItem;
|
private void buttonSetTemplate_Click(object sender, RoutedEventArgs e)
|
||||||
if(Int32.TryParse((string)selectedItem.Value, out int selectedValue))
|
{
|
||||||
|
if (this.comboBoxGroup.SelectedItem is SERV_Template st)
|
||||||
{
|
{
|
||||||
if (selectedValue == (int)MessageCore.CoreFlags.MAERSK_BHV) CheckServiceEntryMaerskBHV();
|
bool found = false;
|
||||||
if (selectedValue == (int)MessageCore.CoreFlags.SEAGO_BHV) CheckServiceEntrySeaGoBHV();
|
foreach (SERV serv in _servMessage.Elements.Cast<SERV>())
|
||||||
if (selectedValue == (int)MessageCore.CoreFlags.HOEGH) CheckServiceEntryHoegh();
|
{
|
||||||
this.Core.SetFlag(true, (MessageCore.CoreFlags)selectedValue);
|
if (serv.ServiceName.Equals(st.ServiceName))
|
||||||
DBManager.Instance.Save(this.Core);
|
{
|
||||||
}
|
found = true; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!found)
|
||||||
|
{
|
||||||
|
SERV newServ = new SERV();
|
||||||
|
newServ.ServiceName = st.ServiceName;
|
||||||
|
newServ.ServiceBeneficiary = st.ServiceBeneficiary;
|
||||||
|
newServ.ServiceInvoiceRecipient = st.ServiceInvoiceRecipient;
|
||||||
|
|
||||||
|
newServ.MessageHeader = this._servMessage;
|
||||||
|
newServ.Identifier = SERV.GetNewIdentifier(_servMessage.Elements);
|
||||||
|
this._servMessage.Elements.Add(newServ);
|
||||||
|
this.dataGridSERV.Items.Refresh();
|
||||||
|
this.SublistElementChanged(Message.NotificationClass.SERV);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonNewTemplate_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
SERV_Template newTemplate = new SERV_Template();
|
||||||
|
EditSERVDialog esd = new EditSERVDialog();
|
||||||
|
esd.AddVisible = false;
|
||||||
|
esd.SERV_Template = newTemplate;
|
||||||
|
if(esd.ShowDialog() ?? false)
|
||||||
|
{
|
||||||
|
_ = DBManagerAsync.SaveAsync(esd.SERV_Template);
|
||||||
|
this.comboBoxGroup.ItemsSource = null;
|
||||||
|
_servTemplates.Add(newTemplate);
|
||||||
|
_servTemplates.Sort();
|
||||||
|
this.comboBoxGroup.ItemsSource = _servTemplates;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonEditTemplate_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (this.comboBoxGroup.SelectedItem is SERV_Template st)
|
||||||
|
{
|
||||||
|
EditSERVDialog editSERVDialog = new EditSERVDialog();
|
||||||
|
editSERVDialog.AddVisible = false;
|
||||||
|
editSERVDialog.SERV_Template = st;
|
||||||
|
if (editSERVDialog.ShowDialog() ?? false)
|
||||||
|
{
|
||||||
|
_ = DBManagerAsync.SaveAsync(st);
|
||||||
|
this.comboBoxGroup.ItemsSource = null;
|
||||||
|
_servTemplates.Sort();
|
||||||
|
this.comboBoxGroup.ItemsSource = _servTemplates;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonDeleteTemplate_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (_currentTemplate != null)
|
||||||
|
{
|
||||||
|
if (MessageBox.Show("Delete this template?", "Confirmation", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes)
|
||||||
|
{
|
||||||
|
this.comboBoxGroup.SelectedItem = null;
|
||||||
|
this.comboBoxGroup.ItemsSource = null;
|
||||||
|
_ = DBManagerAsync.DeleteAsync(_currentTemplate);
|
||||||
|
_servTemplates.Remove(_currentTemplate);
|
||||||
|
this.buttonDeleteTemplate.IsEnabled = false;
|
||||||
|
this.comboBoxGroup.ItemsSource = _servTemplates;
|
||||||
|
this.buttonSetTemplate.IsEnabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region special entry ship service check
|
#region other event handler
|
||||||
|
|
||||||
private void CheckServiceEntryMaerskBHV()
|
private void buttonSearchPortArea_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
bool found = false;
|
if (portAreas != null)
|
||||||
foreach(SERV serv in this._servMessage.Elements)
|
|
||||||
{
|
{
|
||||||
if (serv.ServiceBeneficiary.Equals("Maersk A/S, Esplanaden 50, DK-1263 Copenhagen K, VAT-ID: DK53139655"))
|
SelectPortAreaDialog spad = new SelectPortAreaDialog(this.Core.PoC);
|
||||||
found = true;
|
if (spad.ShowDialog() ?? false)
|
||||||
}
|
{
|
||||||
|
if (spad.SelectedArea != null)
|
||||||
if(!found)
|
{
|
||||||
{
|
if (portAreas.ContainsKey(spad.SelectedArea))
|
||||||
SERV newServ = new SERV();
|
{
|
||||||
newServ.ServiceBeneficiary = "Maersk A/S, Esplanaden 50, DK-1263 Copenhagen K, VAT-ID: DK53139655";
|
var pair = portAreas.SingleOrDefault(p => p.Key == spad.SelectedArea);
|
||||||
newServ.ServiceInvoiceRecipient = "Maersk Deutschland A/S & Co.KG, Ericusspitze 2-4, 20457 Hamburg";
|
this.comboBoxPortArea.SelectedItem = pair;
|
||||||
newServ.ServiceName = "Maersk BHV";
|
}
|
||||||
newServ.MessageHeader = this._servMessage;
|
}
|
||||||
newServ.Identifier = SERV.GetNewIdentifier(_servMessage.Elements);
|
}
|
||||||
this._servMessage.Elements.Add(newServ);
|
|
||||||
this.dataGridSERV.Items.Refresh();
|
|
||||||
this.SublistElementChanged(Message.NotificationClass.SERV);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void CheckServiceEntrySeaGoBHV()
|
|
||||||
{
|
|
||||||
bool found = false;
|
|
||||||
foreach (SERV serv in this._servMessage.Elements)
|
|
||||||
{
|
|
||||||
if (serv.ServiceBeneficiary.Equals("Sealand Europe A/S, Dampfaergevej 10, 3.tv, DK- 2100 Copenhagen, VAT-ID: DK53139655"))
|
|
||||||
found = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!found)
|
|
||||||
{
|
|
||||||
SERV newServ = new SERV();
|
|
||||||
newServ.ServiceBeneficiary = "Sealand Europe A/S, Dampfaergevej 10, 3.tv, DK- 2100 Copenhagen, VAT-ID: DK53139655";
|
|
||||||
newServ.ServiceInvoiceRecipient = "Maersk Deutschland A/S & Co. KG on behalf of Sealand Europe A/S, Ericusspitze 2-4, 20457 Hamburg";
|
|
||||||
newServ.ServiceName = "SeaGo BHV";
|
|
||||||
newServ.MessageHeader = this._servMessage;
|
|
||||||
newServ.Identifier = SERV.GetNewIdentifier(_servMessage.Elements);
|
|
||||||
this._servMessage.Elements.Add(newServ);
|
|
||||||
this.dataGridSERV.Items.Refresh();
|
|
||||||
this.SublistElementChanged(Message.NotificationClass.SERV);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CheckServiceEntryHoegh()
|
private void buttonCopyNameFromCREWA_Click(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
bool found = false;
|
CREW crewA = null;
|
||||||
foreach (SERV serv in this._servMessage.Elements)
|
if (this._crewaMessage.Elements.Count > 0)
|
||||||
{
|
{
|
||||||
if (serv.ServiceBeneficiary.Equals("Höegh Autoliners AS, Oslo, Norway"))
|
crewA = this._crewaMessage.Elements[0] as CREW;
|
||||||
found = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!found)
|
SelectCrewMemberDialog scmd = new SelectCrewMemberDialog();
|
||||||
|
scmd.CREW = crewA;
|
||||||
|
scmd.AddVisible = false;
|
||||||
|
|
||||||
|
if (scmd.ShowDialog() ?? false)
|
||||||
{
|
{
|
||||||
SERV newServ = new SERV();
|
this.textBox_NameMaster.Text = $"{crewA.CrewMemberFirstName} {crewA.CrewMemberLastName}";
|
||||||
newServ.ServiceBeneficiary = "Höegh Autoliners AS, Oslo, Norway";
|
this.SublistElementChanged(Message.NotificationClass.NAME);
|
||||||
newServ.ServiceInvoiceRecipient = " PWL Port Services GmbH & Co. KG";
|
var binding = textBox_NameMaster.GetBindingExpression(TextBox.TextProperty);
|
||||||
newServ.ServiceName = "HOEGH BHV";
|
binding?.UpdateSource();
|
||||||
newServ.MessageHeader = this._servMessage;
|
|
||||||
newServ.Identifier = SERV.GetNewIdentifier(_servMessage.Elements);
|
|
||||||
this._servMessage.Elements.Add(newServ);
|
|
||||||
this.dataGridSERV.Items.Refresh();
|
|
||||||
this.SublistElementChanged(Message.NotificationClass.SERV);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -116,6 +116,12 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override int SelectedTabIndex
|
||||||
|
{
|
||||||
|
get { return this.mainFrame.SelectedIndex; }
|
||||||
|
set { this.mainFrame.SelectedIndex = value; }
|
||||||
|
}
|
||||||
|
|
||||||
#region SetEnabled
|
#region SetEnabled
|
||||||
|
|
||||||
public override void SetEnabled(bool enabled)
|
public override void SetEnabled(bool enabled)
|
||||||
@ -502,18 +508,7 @@ namespace ENI2.DetailViewControls
|
|||||||
HighlightService.HighlightControl(this.secGroupBox, HighlightService.HighlightStyle.VIOLATION, this._secMessage);
|
HighlightService.HighlightControl(this.secGroupBox, HighlightService.HighlightStyle.VIOLATION, this._secMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region mouse wheel
|
|
||||||
|
|
||||||
private void ScrollViewer_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
|
|
||||||
{
|
|
||||||
ScrollViewer scv = (ScrollViewer)sender;
|
|
||||||
scv.ScrollToVerticalOffset(scv.VerticalOffset - e.Delta);
|
|
||||||
e.Handled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,7 +12,7 @@
|
|||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
d:DesignHeight="600" d:DesignWidth="800">
|
d:DesignHeight="600" d:DesignWidth="800">
|
||||||
<GroupBox Name="shipDataGroupBox" Header="{x:Static p:Resources.textShipData}" >
|
<GroupBox Name="shipDataGroupBox" Header="{x:Static p:Resources.textShipData}" >
|
||||||
<ScrollViewer PreviewMouseWheel="ScrollViewer_PreviewMouseWheel">
|
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="260" />
|
<RowDefinition Height="260" />
|
||||||
@ -104,6 +104,6 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
</Grid>
|
</Grid>
|
||||||
</ScrollViewer>
|
|
||||||
</GroupBox>
|
</GroupBox>
|
||||||
</src:DetailBaseControl>
|
</src:DetailBaseControl>
|
||||||
|
|||||||
@ -5,10 +5,8 @@
|
|||||||
using System.Windows;
|
using System.Windows;
|
||||||
|
|
||||||
using bsmd.database;
|
using bsmd.database;
|
||||||
using ENI2.EditControls;
|
|
||||||
using System.Windows.Media;
|
|
||||||
using ENI2.Util;
|
using ENI2.Util;
|
||||||
using System.Windows.Controls;
|
|
||||||
|
|
||||||
namespace ENI2.DetailViewControls
|
namespace ENI2.DetailViewControls
|
||||||
{
|
{
|
||||||
@ -104,18 +102,7 @@ namespace ENI2.DetailViewControls
|
|||||||
HighlightService.HighlightControl(this.shipDataGroupBox, HighlightService.HighlightStyle.VIOLATION, this._statMessage);
|
HighlightService.HighlightControl(this.shipDataGroupBox, HighlightService.HighlightStyle.VIOLATION, this._statMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region mouse wheel
|
|
||||||
|
|
||||||
private void ScrollViewer_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
|
|
||||||
{
|
|
||||||
ScrollViewer scv = (ScrollViewer)sender;
|
|
||||||
scv.ScrollToVerticalOffset(scv.VerticalOffset - e.Delta);
|
|
||||||
e.Handled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -71,7 +71,7 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
private void copyItemToTOWA(object sender, RoutedEventArgs e)
|
private void copyItemToTOWA(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
// aus dem aktuell selektierten TOWA Element ein neues TOWD Element machen
|
// aus dem aktuell selektierten TOWD Element ein neues TOWA Element machen
|
||||||
if (this.dataGridTowageOnDeparture.SelectedItems != null)
|
if (this.dataGridTowageOnDeparture.SelectedItems != null)
|
||||||
{
|
{
|
||||||
foreach (TOWD selectedTOWD in this.dataGridTowageOnDeparture.SelectedItems)
|
foreach (TOWD selectedTOWD in this.dataGridTowageOnDeparture.SelectedItems)
|
||||||
@ -166,8 +166,7 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
private void DataGridTowageOnDeparture_DeleteRequested(DatabaseEntity obj)
|
private void DataGridTowageOnDeparture_DeleteRequested(DatabaseEntity obj)
|
||||||
{
|
{
|
||||||
TOWD towd = obj as TOWD;
|
if (obj is TOWD towd)
|
||||||
if (towd != null)
|
|
||||||
{
|
{
|
||||||
// are you sure dialog is in base class
|
// are you sure dialog is in base class
|
||||||
this._towdMessage.Elements.Remove(towd);
|
this._towdMessage.Elements.Remove(towd);
|
||||||
@ -245,8 +244,7 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
private void DataGridTowageOnArrival_DeleteRequested(DatabaseEntity obj)
|
private void DataGridTowageOnArrival_DeleteRequested(DatabaseEntity obj)
|
||||||
{
|
{
|
||||||
TOWA towa = obj as TOWA;
|
if (obj is TOWA towa)
|
||||||
if (towa != null)
|
|
||||||
{
|
{
|
||||||
// are you sure dialog is in base class
|
// are you sure dialog is in base class
|
||||||
this._towaMessage.Elements.Remove(towa);
|
this._towaMessage.Elements.Remove(towa);
|
||||||
@ -310,18 +308,7 @@ namespace ENI2.DetailViewControls
|
|||||||
HighlightService.HighlightControl(this.groupBoxTowageOnDeparture, HighlightService.HighlightStyle.VIOLATION, this._towdMessage);
|
HighlightService.HighlightControl(this.groupBoxTowageOnDeparture, HighlightService.HighlightStyle.VIOLATION, this._towdMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region mouse wheel
|
|
||||||
|
|
||||||
private void ScrollViewer_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
|
|
||||||
{
|
|
||||||
ScrollViewer scv = (ScrollViewer)sender;
|
|
||||||
scv.ScrollToVerticalOffset(scv.VerticalOffset - e.Delta);
|
|
||||||
e.Handled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -45,7 +45,7 @@
|
|||||||
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="2" Content="{x:Static p:Resources.textValidExemption}" Name="label_ValidExemption" Margin="0,0,10,0"/>
|
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="2" Content="{x:Static p:Resources.textValidExemption}" Name="label_ValidExemption" Margin="0,0,10,0"/>
|
||||||
<CheckBox Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" Name="checkBoxAccurateCorrectDetails" IsChecked="{Binding ConfirmationOfCorrectness, Mode=TwoWay}" />
|
<CheckBox Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" Name="checkBoxAccurateCorrectDetails" IsChecked="{Binding ConfirmationOfCorrectness, Mode=TwoWay}" />
|
||||||
<CheckBox Grid.Row="0" Grid.Column="3" VerticalAlignment="Center" Name="checkBoxValidExemption" IsChecked="{Binding WasteDisposalValidExemption, Mode=TwoWay}" />
|
<CheckBox Grid.Row="0" Grid.Column="3" VerticalAlignment="Center" Name="checkBoxValidExemption" IsChecked="{Binding WasteDisposalValidExemption, Mode=TwoWay}" />
|
||||||
<enictrl:LocodeControl Grid.Row="3" Grid.Column="1" x:Name="locodeCtrlNextWastePort" LocodeValue="{Binding NextWasteDisposalPort, Mode=TwoWay}" LocodeSource="SSN" />
|
|
||||||
<DatePicker Grid.Row="1" Grid.Column="1" Name="datePickerDateLastDisposal" Margin="2" SelectedDate="{Binding LastWasteDisposalDate, Mode=TwoWay}" DisplayDateStart="1/1/1800" DisplayDateEnd="12/31/2199" PreviewKeyUp="DateTimePicker_PreviewKeyUpDate">
|
<DatePicker Grid.Row="1" Grid.Column="1" Name="datePickerDateLastDisposal" Margin="2" SelectedDate="{Binding LastWasteDisposalDate, Mode=TwoWay}" DisplayDateStart="1/1/1800" DisplayDateEnd="12/31/2199" PreviewKeyUp="DateTimePicker_PreviewKeyUpDate">
|
||||||
<DatePicker.BlackoutDates>
|
<DatePicker.BlackoutDates>
|
||||||
<CalendarDateRange Start="1/1/0001" End="12/31/1799"/>
|
<CalendarDateRange Start="1/1/0001" End="12/31/1799"/>
|
||||||
@ -53,7 +53,9 @@
|
|||||||
</DatePicker.BlackoutDates>
|
</DatePicker.BlackoutDates>
|
||||||
</DatePicker>
|
</DatePicker>
|
||||||
<enictrl:LocodeControl Grid.Row="2" Grid.Column="1" x:Name="locodeCtrlLastWastePort" LocodeValue="{Binding LastWasteDisposalPort, Mode=TwoWay}" LocodeSource="SSN" />
|
<enictrl:LocodeControl Grid.Row="2" Grid.Column="1" x:Name="locodeCtrlLastWastePort" LocodeValue="{Binding LastWasteDisposalPort, Mode=TwoWay}" LocodeSource="SSN" />
|
||||||
|
<enictrl:LocodeControl Grid.Row="3" Grid.Column="1" x:Name="locodeCtrlNextWastePort" LocodeValue="{Binding NextWasteDisposalPort, Mode=TwoWay}" LocodeSource="SSN" />
|
||||||
<TextBox Grid.Row="4" Grid.Column="1" Grid.ColumnSpan="3" Grid.RowSpan="2" Name="textBoxWasteDisposalServiceProviders" Text="{Binding WasteDisposalServiceProviderText, Converter={util:TrimStringConverter}}" Margin="2" />
|
<TextBox Grid.Row="4" Grid.Column="1" Grid.ColumnSpan="3" Grid.RowSpan="2" Name="textBoxWasteDisposalServiceProviders" Text="{Binding WasteDisposalServiceProviderText, Converter={util:TrimStringConverter}}" Margin="2" />
|
||||||
|
|
||||||
<Button Grid.Row="6" Grid.Column="1" Grid.ColumnSpan="1" Name="buttonAddMissingEntries" Content="{x:Static p:Resources.textAddMissingEntries}" Margin="2" Click="buttonAddMissingEntries_Click"/>
|
<Button Grid.Row="6" Grid.Column="1" Grid.ColumnSpan="1" Name="buttonAddMissingEntries" Content="{x:Static p:Resources.textAddMissingEntries}" Margin="2" Click="buttonAddMissingEntries_Click"/>
|
||||||
<Button Grid.Row="6" Grid.Column="2" Grid.ColumnSpan="1" Name="buttonImportFromExcel" Content="{x:Static p:Resources.textImportFromExcel}" Margin="2" Click="buttonImportFromExcel_Click" />
|
<Button Grid.Row="6" Grid.Column="2" Grid.ColumnSpan="1" Name="buttonImportFromExcel" Content="{x:Static p:Resources.textImportFromExcel}" Margin="2" Click="buttonImportFromExcel_Click" />
|
||||||
</Grid>
|
</Grid>
|
||||||
@ -151,10 +153,12 @@
|
|||||||
</enictrl:ENIDataGrid>
|
</enictrl:ENIDataGrid>
|
||||||
<Grid Grid.Row="1">
|
<Grid Grid.Row="1">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="120" />
|
||||||
<ColumnDefinition Width="120" />
|
<ColumnDefinition Width="120" />
|
||||||
<ColumnDefinition Width="*" />
|
<ColumnDefinition Width="*" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<Button Grid.Row="0" Grid.Column="0" Name="buttonWasteReceivedAddMissingEntries" Content="{x:Static p:Resources.textAddMissingEntries}" Margin="2" Click="buttonWasteReceivedAddMissingEntries_Click"/>
|
<Button Grid.Row="0" Grid.Column="0" Name="buttonWasteReceivedAddMissingEntries" Content="{x:Static p:Resources.textAddMissingEntries}" Margin="2" Click="buttonWasteReceivedAddMissingEntries_Click"/>
|
||||||
|
<Button Grid.Row="0" Grid.Column="1" Name="buttonCopyFromWAS" Content="{x:Static p:Resources.textCopyFromWAS}" Margin="2" Click="buttonCopyFromWAS_Click"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
<enictrl:ENIDataGrid x:Name="dataGridWasteReceived" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
<enictrl:ENIDataGrid x:Name="dataGridWasteReceived" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
||||||
AutoGenerateColumns="False" Margin="0,5,0,0" Grid.Row="2" CanUserAddRows="False">
|
AutoGenerateColumns="False" Margin="0,5,0,0" Grid.Row="2" CanUserAddRows="False">
|
||||||
@ -162,7 +166,7 @@
|
|||||||
<DataGridTextColumn Header="" Binding="{Binding Identifier}" IsReadOnly="True" />
|
<DataGridTextColumn Header="" Binding="{Binding Identifier}" IsReadOnly="True" />
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textCode}" Binding="{Binding WasteTypeDisplayGrid}" IsReadOnly="True" Width="0.2*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textCode}" Binding="{Binding WasteTypeDisplayGrid}" IsReadOnly="True" Width="0.2*" />
|
||||||
<DataGridTextColumn Header="{x:Static p:Resources.textDescription}" Binding="{Binding WasteDescription}" IsReadOnly="True" Width="0.3*" />
|
<DataGridTextColumn Header="{x:Static p:Resources.textDescription}" Binding="{Binding WasteDescription}" IsReadOnly="True" Width="0.3*" />
|
||||||
<DataGridTemplateColumn IsReadOnly="True" Width="0.15*">
|
<!--DataGridTemplateColumn IsReadOnly="True" Width="0.15*">
|
||||||
<DataGridTemplateColumn.HeaderTemplate>
|
<DataGridTemplateColumn.HeaderTemplate>
|
||||||
<DataTemplate>
|
<DataTemplate>
|
||||||
<TextBlock TextWrapping="Wrap" Text="{x:Static p:Resources.textAmountWasteReceived_MTQ}" FontSize="10"/>
|
<TextBlock TextWrapping="Wrap" Text="{x:Static p:Resources.textAmountWasteReceived_MTQ}" FontSize="10"/>
|
||||||
@ -173,7 +177,16 @@
|
|||||||
<TextBlock TextAlignment="Center" Text="{Binding AmountWasteReceived_MTQ, StringFormat={}{0:N3}}" />
|
<TextBlock TextAlignment="Center" Text="{Binding AmountWasteReceived_MTQ, StringFormat={}{0:N3}}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn-->
|
||||||
|
<DataGridTextColumn Header="{x:Static p:Resources.textAmountWasteReceived_MTQ}" IsReadOnly="False" Width="0.15*">
|
||||||
|
<DataGridTextColumn.Binding>
|
||||||
|
<Binding Path="AmountWasteReceived_MTQ" Mode="TwoWay" StringFormat="N3" >
|
||||||
|
<Binding.ValidationRules>
|
||||||
|
<util:NumberValidationRule MaxValue="10000" MinValue="0" />
|
||||||
|
</Binding.ValidationRules>
|
||||||
|
</Binding>
|
||||||
|
</DataGridTextColumn.Binding>
|
||||||
|
</DataGridTextColumn>
|
||||||
</DataGrid.Columns>
|
</DataGrid.Columns>
|
||||||
|
|
||||||
</enictrl:ENIDataGrid>
|
</enictrl:ENIDataGrid>
|
||||||
|
|||||||
@ -22,17 +22,14 @@ namespace ENI2.DetailViewControls
|
|||||||
public partial class WasteDetailControl : DetailBaseControl
|
public partial class WasteDetailControl : DetailBaseControl
|
||||||
{
|
{
|
||||||
|
|
||||||
|
#region Fields
|
||||||
|
|
||||||
private Message _wasMessage;
|
private Message _wasMessage;
|
||||||
private WAS _was;
|
private WAS _was;
|
||||||
private Message _wasRcptMessage;
|
private Message _wasRcptMessage;
|
||||||
private WAS_RCPT _selectedWAS_RCPT;
|
private WAS_RCPT _selectedWAS_RCPT;
|
||||||
|
|
||||||
private static readonly string[] _wasteDeliveryList =
|
#endregion
|
||||||
{
|
|
||||||
"ALL",
|
|
||||||
"SOME",
|
|
||||||
"NONE"
|
|
||||||
};
|
|
||||||
|
|
||||||
public WasteDetailControl()
|
public WasteDetailControl()
|
||||||
{
|
{
|
||||||
@ -47,9 +44,9 @@ namespace ENI2.DetailViewControls
|
|||||||
this.RegisterLocodeChange(this.locodeCtrlNextWastePort, Message.NotificationClass.WAS);
|
this.RegisterLocodeChange(this.locodeCtrlNextWastePort, Message.NotificationClass.WAS);
|
||||||
this.RegisterCheckboxChange(this.checkBoxAccurateCorrectDetails, Message.NotificationClass.WAS);
|
this.RegisterCheckboxChange(this.checkBoxAccurateCorrectDetails, Message.NotificationClass.WAS);
|
||||||
this.RegisterCheckboxChange(this.checkBoxValidExemption, Message.NotificationClass.WAS);
|
this.RegisterCheckboxChange(this.checkBoxValidExemption, Message.NotificationClass.WAS);
|
||||||
this.RegisterDatePickerChange(this.datePickerDateLastDisposal, Message.NotificationClass.WAS);
|
this.RegisterDatePickerChange(this.datePickerDateLastDisposal, Message.NotificationClass.WAS);
|
||||||
this.RegisterTextboxChange(this.textBoxWasteDisposalServiceProviders, Message.NotificationClass.WAS);
|
this.RegisterTextboxChange(this.textBoxWasteDisposalServiceProviders, Message.NotificationClass.WAS);
|
||||||
|
this.dataGridWasteReceived.CellEditEnding += (obj, ev) => { this.SublistElementChanged(Message.NotificationClass.WAS_RCPT); };
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CheckBoxValidExemption_Checked(object sender, RoutedEventArgs e)
|
private void CheckBoxValidExemption_Checked(object sender, RoutedEventArgs e)
|
||||||
@ -78,7 +75,7 @@ namespace ENI2.DetailViewControls
|
|||||||
WasteCapacity_MTQ = 0,
|
WasteCapacity_MTQ = 0,
|
||||||
WasteDescription = "",
|
WasteDescription = "",
|
||||||
WasteDisposalAmount_MTQ = 0,
|
WasteDisposalAmount_MTQ = 0,
|
||||||
WasteDisposalPort = "ZZUKN"
|
WasteDisposalPort = "ZZUKN"
|
||||||
};
|
};
|
||||||
this._was.Waste.Add(newWaste);
|
this._was.Waste.Add(newWaste);
|
||||||
}
|
}
|
||||||
@ -124,7 +121,7 @@ namespace ENI2.DetailViewControls
|
|||||||
was.MessageCore = this.Core;
|
was.MessageCore = this.Core;
|
||||||
was.MessageHeader = this._wasMessage;
|
was.MessageHeader = this._wasMessage;
|
||||||
_wasMessage.Elements.Add(was);
|
_wasMessage.Elements.Add(was);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// remove "old" Waste Entries from display (not deleted in the DB!)
|
// remove "old" Waste Entries from display (not deleted in the DB!)
|
||||||
@ -132,14 +129,14 @@ namespace ENI2.DetailViewControls
|
|||||||
{
|
{
|
||||||
if (was.Waste[i].WasteType > 999)
|
if (was.Waste[i].WasteType > 999)
|
||||||
was.Waste.RemoveAt(i);
|
was.Waste.RemoveAt(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.wasGroupBox.DataContext = was;
|
this.wasGroupBox.DataContext = was;
|
||||||
this._was = was;
|
this._was = was;
|
||||||
|
|
||||||
this.dataGridWaste.Initialize();
|
this.dataGridWaste.Initialize();
|
||||||
this.dataGridWaste.ItemsSource = was.Waste;
|
this.dataGridWaste.ItemsSource = was.Waste;
|
||||||
this.dataGridWaste.AddingNewItem += DataGridWaste_AddingNewItem;
|
this.dataGridWaste.AddingNewItem += DataGridWaste_AddingNewItem;
|
||||||
this.dataGridWaste.EditRequested += DataGridWaste_EditRequested;
|
this.dataGridWaste.EditRequested += DataGridWaste_EditRequested;
|
||||||
this.dataGridWaste.DeleteRequested += DataGridWaste_DeleteRequested;
|
this.dataGridWaste.DeleteRequested += DataGridWaste_DeleteRequested;
|
||||||
@ -180,6 +177,12 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override int SelectedTabIndex
|
||||||
|
{
|
||||||
|
get { return this.mainFrame.SelectedIndex; }
|
||||||
|
set { this.mainFrame.SelectedIndex = value; }
|
||||||
|
}
|
||||||
|
|
||||||
#region Waste receipt grid event handler
|
#region Waste receipt grid event handler
|
||||||
|
|
||||||
private void DataGridWasteReceipt_CreateRequested()
|
private void DataGridWasteReceipt_CreateRequested()
|
||||||
@ -210,9 +213,11 @@ namespace ENI2.DetailViewControls
|
|||||||
this.dataGridWasteReceipt.Items.Refresh();
|
this.dataGridWasteReceipt.Items.Refresh();
|
||||||
this.dataGridWasteReceipt.SelectedItem = epd.WAS_RCPT;
|
this.dataGridWasteReceipt.SelectedItem = epd.WAS_RCPT;
|
||||||
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
||||||
this.dataGridWasteReceived.ItemsSource = null;
|
this.dataGridWasteReceived.ItemsSource = null;
|
||||||
dataGridWasteReceipt_SelectionChanged(this, null);
|
dataGridWasteReceipt_SelectionChanged(this, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DataGridWasteReceipt_DeleteRequested(DatabaseEntity obj)
|
private void DataGridWasteReceipt_DeleteRequested(DatabaseEntity obj)
|
||||||
@ -254,10 +259,11 @@ namespace ENI2.DetailViewControls
|
|||||||
if (!_wasRcptMessage.Elements.Contains(epd.WAS_RCPT))
|
if (!_wasRcptMessage.Elements.Contains(epd.WAS_RCPT))
|
||||||
_wasRcptMessage.Elements.Add(epd.WAS_RCPT);
|
_wasRcptMessage.Elements.Add(epd.WAS_RCPT);
|
||||||
}
|
}
|
||||||
this.dataGridWasteReceipt.SelectedItem = epd.WAS_RCPT;
|
this.dataGridWasteReceipt.SelectedItem = epd.WAS_RCPT;
|
||||||
this.dataGridWasteReceipt.Items.Refresh();
|
this.dataGridWasteReceipt.Items.Refresh();
|
||||||
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
||||||
dataGridWasteReceipt_SelectionChanged(this, null);
|
dataGridWasteReceipt_SelectionChanged(this, null);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DataGridWasteReceipt_AddingNewItem(object sender, AddingNewItemEventArgs e)
|
private void DataGridWasteReceipt_AddingNewItem(object sender, AddingNewItemEventArgs e)
|
||||||
@ -282,7 +288,8 @@ namespace ENI2.DetailViewControls
|
|||||||
{
|
{
|
||||||
if (obj is WasteReceived wasteReceived)
|
if (obj is WasteReceived wasteReceived)
|
||||||
{
|
{
|
||||||
|
this.dataGridWasteReceived.CancelEdit();
|
||||||
|
this.dataGridWasteReceived.CancelEdit();
|
||||||
// are you sure dialog is in base class
|
// are you sure dialog is in base class
|
||||||
_selectedWAS_RCPT.WasteReceived.Remove(wasteReceived);
|
_selectedWAS_RCPT.WasteReceived.Remove(wasteReceived);
|
||||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(wasteReceived);
|
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(wasteReceived);
|
||||||
@ -294,6 +301,9 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
private void DataGridWasteReceived_CreateRequested()
|
private void DataGridWasteReceived_CreateRequested()
|
||||||
{
|
{
|
||||||
|
if (_selectedWAS_RCPT == null) return;
|
||||||
|
this.dataGridWasteReceived.CancelEdit();
|
||||||
|
this.dataGridWasteReceived.CancelEdit();
|
||||||
EditWasteReceivedDialog ewrd = new EditWasteReceivedDialog();
|
EditWasteReceivedDialog ewrd = new EditWasteReceivedDialog();
|
||||||
ewrd.WasteReceived = new WasteReceived();
|
ewrd.WasteReceived = new WasteReceived();
|
||||||
ewrd.WasteReceived.WAS_RCPT = _selectedWAS_RCPT;
|
ewrd.WasteReceived.WAS_RCPT = _selectedWAS_RCPT;
|
||||||
@ -302,7 +312,7 @@ namespace ENI2.DetailViewControls
|
|||||||
ewrd.AddClicked += () =>
|
ewrd.AddClicked += () =>
|
||||||
{
|
{
|
||||||
ewrd.CopyValuesToEntity();
|
ewrd.CopyValuesToEntity();
|
||||||
if (!this._selectedWAS_RCPT.WasteReceived.Any(wr => wr.WasteCode == ewrd.WasteReceived.WasteCode))
|
if ((ewrd.WasteReceived.WasteCode != null) && !this._selectedWAS_RCPT.WasteReceived.Any(wr => wr.WasteCode == ewrd.WasteReceived.WasteCode))
|
||||||
{
|
{
|
||||||
this._selectedWAS_RCPT.WasteReceived.Add(ewrd.WasteReceived);
|
this._selectedWAS_RCPT.WasteReceived.Add(ewrd.WasteReceived);
|
||||||
this.dataGridWasteReceived.Items.Refresh();
|
this.dataGridWasteReceived.Items.Refresh();
|
||||||
@ -315,7 +325,7 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
if (ewrd.ShowDialog() ?? false)
|
if (ewrd.ShowDialog() ?? false)
|
||||||
{
|
{
|
||||||
if (!this._selectedWAS_RCPT.WasteReceived.Any(wr => wr.WasteCode == ewrd.WasteReceived.WasteCode))
|
if ((ewrd.WasteReceived.WasteCode != null) && !this._selectedWAS_RCPT.WasteReceived.Any(wr => wr.WasteCode == ewrd.WasteReceived.WasteCode))
|
||||||
{
|
{
|
||||||
this._selectedWAS_RCPT.WasteReceived.Add(ewrd.WasteReceived);
|
this._selectedWAS_RCPT.WasteReceived.Add(ewrd.WasteReceived);
|
||||||
this.dataGridWasteReceived.Items.Refresh();
|
this.dataGridWasteReceived.Items.Refresh();
|
||||||
@ -327,13 +337,16 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
private void DataGridWasteReceived_EditRequested(DatabaseEntity obj)
|
private void DataGridWasteReceived_EditRequested(DatabaseEntity obj)
|
||||||
{
|
{
|
||||||
|
this.dataGridWasteReceived.CancelEdit();
|
||||||
|
this.dataGridWasteReceived.CancelEdit();
|
||||||
|
|
||||||
EditWasteReceivedDialog ewrd = new EditWasteReceivedDialog();
|
EditWasteReceivedDialog ewrd = new EditWasteReceivedDialog();
|
||||||
ewrd.WasteReceived = obj as WasteReceived;
|
ewrd.WasteReceived = obj as WasteReceived;
|
||||||
|
|
||||||
ewrd.AddClicked += () =>
|
ewrd.AddClicked += () =>
|
||||||
{
|
{
|
||||||
ewrd.CopyValuesToEntity();
|
ewrd.CopyValuesToEntity();
|
||||||
if (!this._selectedWAS_RCPT.WasteReceived.Any(wr => wr.WasteCode == ewrd.WasteReceived.WasteCode))
|
if ((ewrd.WasteReceived.WasteCode != null) && !this._selectedWAS_RCPT.WasteReceived.Any(wr => wr.WasteCode == ewrd.WasteReceived.WasteCode))
|
||||||
{
|
{
|
||||||
_selectedWAS_RCPT.WasteReceived.Add(ewrd.WasteReceived);
|
_selectedWAS_RCPT.WasteReceived.Add(ewrd.WasteReceived);
|
||||||
this.dataGridWasteReceived.Items.Refresh();
|
this.dataGridWasteReceived.Items.Refresh();
|
||||||
@ -346,9 +359,9 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
if (ewrd.ShowDialog() ?? false)
|
if (ewrd.ShowDialog() ?? false)
|
||||||
{
|
{
|
||||||
if (!_selectedWAS_RCPT.WasteReceived.Any(wr => wr.WasteCode == ewrd.WasteReceived.WasteCode))
|
if ((ewrd.WasteReceived.WasteCode != null) && !_selectedWAS_RCPT.WasteReceived.Any(wr => wr.WasteCode == ewrd.WasteReceived.WasteCode))
|
||||||
{
|
{
|
||||||
_selectedWAS_RCPT.WasteReceived.Add(ewrd.WasteReceived);
|
_selectedWAS_RCPT.WasteReceived.Add(ewrd.WasteReceived);
|
||||||
}
|
}
|
||||||
this.dataGridWasteReceived.Items.Refresh();
|
this.dataGridWasteReceived.Items.Refresh();
|
||||||
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
||||||
@ -402,7 +415,7 @@ namespace ENI2.DetailViewControls
|
|||||||
{
|
{
|
||||||
// are you sure dialog is in base class
|
// are you sure dialog is in base class
|
||||||
_was.Waste.Remove(waste);
|
_was.Waste.Remove(waste);
|
||||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(waste);
|
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(waste);
|
||||||
DatabaseEntity.ResetIdentifiers(new List<DatabaseEntity>(_was.Waste));
|
DatabaseEntity.ResetIdentifiers(new List<DatabaseEntity>(_was.Waste));
|
||||||
this.SublistElementChanged(Message.NotificationClass.WAS);
|
this.SublistElementChanged(Message.NotificationClass.WAS);
|
||||||
this.dataGridWaste.Items.Refresh();
|
this.dataGridWaste.Items.Refresh();
|
||||||
@ -462,17 +475,6 @@ namespace ENI2.DetailViewControls
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region mouse wheel
|
|
||||||
|
|
||||||
private void ScrollViewer_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e)
|
|
||||||
{
|
|
||||||
ScrollViewer scv = (ScrollViewer)sender;
|
|
||||||
scv.ScrollToVerticalOffset(scv.VerticalOffset - e.Delta);
|
|
||||||
e.Handled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Excel file import
|
#region Excel file import
|
||||||
|
|
||||||
private void buttonImportFromExcel_Click(object sender, RoutedEventArgs e)
|
private void buttonImportFromExcel_Click(object sender, RoutedEventArgs e)
|
||||||
@ -488,7 +490,7 @@ namespace ENI2.DetailViewControls
|
|||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
|
MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -515,7 +517,7 @@ namespace ENI2.DetailViewControls
|
|||||||
if (reader.FieldCount < 9)
|
if (reader.FieldCount < 9)
|
||||||
{
|
{
|
||||||
throw new InvalidDataException("Sheet must have 9 Columns of data");
|
throw new InvalidDataException("Sheet must have 9 Columns of data");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!reader.IsDBNull(1)) o = reader.GetValue(1); else o = null;
|
if (!reader.IsDBNull(1)) o = reader.GetValue(1); else o = null;
|
||||||
if ((o != null) && Int32.TryParse(o.ToString(), out int wasteType))
|
if ((o != null) && Int32.TryParse(o.ToString(), out int wasteType))
|
||||||
@ -578,8 +580,38 @@ namespace ENI2.DetailViewControls
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Copy WAS to WAS_RCPT handler
|
||||||
|
|
||||||
|
private void buttonCopyFromWAS_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (_selectedWAS_RCPT == null) return;
|
||||||
|
|
||||||
|
if(MessageBox.Show(Properties.Resources.textCopyToWASConfirmation, Properties.Resources.textConfirmation,
|
||||||
|
MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes)
|
||||||
|
{
|
||||||
|
foreach(Waste waste in _was.Waste)
|
||||||
|
{
|
||||||
|
if(waste.WasteDisposalAmount_MTQ.HasValue && waste.WasteDisposalAmount_MTQ > 0)
|
||||||
|
{
|
||||||
|
// find matching WAS_RCPT entry
|
||||||
|
foreach(WasteReceived wasteReceived in _selectedWAS_RCPT.WasteReceived)
|
||||||
|
{
|
||||||
|
if(wasteReceived.WasteCode.Equals(waste.WasteType.ToString()))
|
||||||
|
{
|
||||||
|
wasteReceived.AmountWasteReceived_MTQ = waste.WasteDisposalAmount_MTQ;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.dataGridWasteReceived.Items.Refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
299
ENI2/ENI2.csproj
299
ENI2/ENI2.csproj
@ -8,7 +8,7 @@
|
|||||||
<OutputType>WinExe</OutputType>
|
<OutputType>WinExe</OutputType>
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>ENI2</RootNamespace>
|
<RootNamespace>ENI2</RootNamespace>
|
||||||
<AssemblyName>ENI2</AssemblyName>
|
<AssemblyName>ENI2Test</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||||
@ -36,8 +36,8 @@
|
|||||||
<MinimumRequiredVersion>5.4.0.0</MinimumRequiredVersion>
|
<MinimumRequiredVersion>5.4.0.0</MinimumRequiredVersion>
|
||||||
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
|
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
|
||||||
<WebPage>publish.html</WebPage>
|
<WebPage>publish.html</WebPage>
|
||||||
<ApplicationRevision>8</ApplicationRevision>
|
<ApplicationRevision>7</ApplicationRevision>
|
||||||
<ApplicationVersion>7.10.0.%2a</ApplicationVersion>
|
<ApplicationVersion>7.2.12.7</ApplicationVersion>
|
||||||
<UseApplicationTrust>false</UseApplicationTrust>
|
<UseApplicationTrust>false</UseApplicationTrust>
|
||||||
<CreateDesktopShortcut>true</CreateDesktopShortcut>
|
<CreateDesktopShortcut>true</CreateDesktopShortcut>
|
||||||
<PublishWizardCompleted>true</PublishWizardCompleted>
|
<PublishWizardCompleted>true</PublishWizardCompleted>
|
||||||
@ -62,7 +62,8 @@
|
|||||||
<OutputPath>bin\Release\</OutputPath>
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>0</WarningLevel>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<StartupObject>ENI2.App</StartupObject>
|
<StartupObject>ENI2.App</StartupObject>
|
||||||
@ -84,14 +85,13 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup />
|
<PropertyGroup />
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ManifestCertificateThumbprint>F2C2D0164244EC89955EF50201EE24C2A300FF0B</ManifestCertificateThumbprint>
|
<ManifestCertificateThumbprint>C5FD306818D481FBECE3B2E74D7A912F515191E0</ManifestCertificateThumbprint>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<SignManifests>true</SignManifests>
|
<SignManifests>true</SignManifests>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ManifestKeyFile>
|
<ManifestKeyFile>ENI2_7_TemporaryKey.pfx</ManifestKeyFile>
|
||||||
</ManifestKeyFile>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug 64|AnyCPU'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug 64|AnyCPU'">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
@ -134,43 +134,115 @@
|
|||||||
<CodeAnalysisRuleSet>..\code.ruleset</CodeAnalysisRuleSet>
|
<CodeAnalysisRuleSet>..\code.ruleset</CodeAnalysisRuleSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="ExcelDataReader, Version=3.6.0.0, Culture=neutral, PublicKeyToken=93517dbe6a4012fa, processorArchitecture=MSIL">
|
<Reference Include="ExcelDataReader, Version=3.8.0.0, Culture=neutral, PublicKeyToken=93517dbe6a4012fa, processorArchitecture=MSIL">
|
||||||
<HintPath>packages\ExcelDataReader.3.6.0\lib\net45\ExcelDataReader.dll</HintPath>
|
<HintPath>packages\ExcelDataReader.3.8.0\lib\net462\ExcelDataReader.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="log4net, Version=2.0.15.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
|
<Reference Include="log4net, Version=3.2.0.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
|
||||||
<HintPath>packages\log4net.2.0.15\lib\net45\log4net.dll</HintPath>
|
<HintPath>packages\log4net.3.2.0\lib\net462\log4net.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=9.0.0.9, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\Microsoft.Bcl.AsyncInterfaces.9.0.9\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Bcl.Cryptography, Version=9.0.0.9, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\Microsoft.Bcl.Cryptography.9.0.9\lib\net462\Microsoft.Bcl.Cryptography.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Extensions.DependencyInjection, Version=9.0.0.9, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\Microsoft.Extensions.DependencyInjection.9.0.9\lib\net462\Microsoft.Extensions.DependencyInjection.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=9.0.0.9, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\Microsoft.Extensions.DependencyInjection.Abstractions.9.0.9\lib\net462\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Extensions.Logging, Version=9.0.0.9, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\Microsoft.Extensions.Logging.9.0.9\lib\net462\Microsoft.Extensions.Logging.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=9.0.0.9, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\Microsoft.Extensions.Logging.Abstractions.9.0.9\lib\net462\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Extensions.Options, Version=9.0.0.9, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\Microsoft.Extensions.Options.9.0.9\lib\net462\Microsoft.Extensions.Options.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Extensions.Primitives, Version=9.0.0.9, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\Microsoft.Extensions.Primitives.9.0.9\lib\net462\Microsoft.Extensions.Primitives.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Office.Interop.Excel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Office.Interop.Excel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL">
|
||||||
<HintPath>packages\Microsoft.Office.Interop.Excel.15.0.4795.1001\lib\net20\Microsoft.Office.Interop.Excel.dll</HintPath>
|
<HintPath>packages\Microsoft.Office.Interop.Excel.15.0.4795.1001\lib\net20\Microsoft.Office.Interop.Excel.dll</HintPath>
|
||||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="MigraDoc.DocumentObjectModel-gdi, Version=1.50.5147.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL">
|
<Reference Include="MigraDoc.DocumentObjectModel, Version=6.2.2.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL">
|
||||||
<HintPath>packages\PDFsharp-MigraDoc-gdi.1.50.5147\lib\net20\MigraDoc.DocumentObjectModel-gdi.dll</HintPath>
|
<HintPath>packages\PDFsharp-MigraDoc.6.2.2\lib\netstandard2.0\MigraDoc.DocumentObjectModel.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="MigraDoc.Rendering-gdi, Version=1.50.5147.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL">
|
<Reference Include="MigraDoc.Rendering, Version=6.2.2.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL">
|
||||||
<HintPath>packages\PDFsharp-MigraDoc-gdi.1.50.5147\lib\net20\MigraDoc.Rendering-gdi.dll</HintPath>
|
<HintPath>packages\PDFsharp-MigraDoc.6.2.2\lib\netstandard2.0\MigraDoc.Rendering.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="MigraDoc.RtfRendering-gdi, Version=1.50.5147.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL">
|
<Reference Include="MigraDoc.RtfRendering, Version=6.2.2.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL">
|
||||||
<HintPath>packages\PDFsharp-MigraDoc-gdi.1.50.5147\lib\net20\MigraDoc.RtfRendering-gdi.dll</HintPath>
|
<HintPath>packages\PDFsharp-MigraDoc.6.2.2\lib\netstandard2.0\MigraDoc.RtfRendering.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="PdfSharp-gdi, Version=1.50.5147.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL">
|
<Reference Include="PdfSharp, Version=6.2.2.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL">
|
||||||
<HintPath>packages\PDFsharp-MigraDoc-gdi.1.50.5147\lib\net20\PdfSharp-gdi.dll</HintPath>
|
<HintPath>packages\PDFsharp.6.2.2\lib\netstandard2.0\PdfSharp.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="PdfSharp.Charting-gdi, Version=1.50.5147.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL">
|
<Reference Include="PdfSharp.BarCodes, Version=6.2.2.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL">
|
||||||
<HintPath>packages\PDFsharp-MigraDoc-gdi.1.50.5147\lib\net20\PdfSharp.Charting-gdi.dll</HintPath>
|
<HintPath>packages\PDFsharp.6.2.2\lib\netstandard2.0\PdfSharp.BarCodes.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="PdfSharp.Charting, Version=6.2.2.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\PDFsharp.6.2.2\lib\netstandard2.0\PdfSharp.Charting.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="PdfSharp.Cryptography, Version=6.2.2.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\PDFsharp.6.2.2\lib\netstandard2.0\PdfSharp.Cryptography.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="PdfSharp.Quality, Version=6.2.2.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\PDFsharp.6.2.2\lib\netstandard2.0\PdfSharp.Quality.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="PdfSharp.Shared, Version=6.2.2.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\PDFsharp.6.2.2\lib\netstandard2.0\PdfSharp.Shared.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="PdfSharp.Snippets, Version=6.2.2.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\PDFsharp.6.2.2\lib\netstandard2.0\PdfSharp.Snippets.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="PdfSharp.System, Version=6.2.2.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\PDFsharp.6.2.2\lib\netstandard2.0\PdfSharp.System.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="PdfSharp.WPFonts, Version=6.2.2.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\PDFsharp.6.2.2\lib\netstandard2.0\PdfSharp.WPFonts.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Buffers, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\System.Buffers.4.6.1\lib\net462\System.Buffers.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||||
<Reference Include="System.Configuration" />
|
<Reference Include="System.Configuration" />
|
||||||
<Reference Include="System.Data" />
|
<Reference Include="System.Data" />
|
||||||
<Reference Include="System.Data.SQLite, Version=1.0.117.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
|
<Reference Include="System.Data.SQLite, Version=1.0.119.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
|
||||||
<HintPath>packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.117.0\lib\net46\System.Data.SQLite.dll</HintPath>
|
<HintPath>packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\lib\net46\System.Data.SQLite.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Diagnostics.DiagnosticSource, Version=9.0.0.9, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\System.Diagnostics.DiagnosticSource.9.0.9\lib\net462\System.Diagnostics.DiagnosticSource.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Drawing" />
|
<Reference Include="System.Drawing" />
|
||||||
|
<Reference Include="System.Formats.Asn1, Version=9.0.0.9, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\System.Formats.Asn1.9.0.9\lib\net462\System.Formats.Asn1.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System.IO.Compression" />
|
<Reference Include="System.IO.Compression" />
|
||||||
|
<Reference Include="System.Memory, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\System.Memory.4.6.3\lib\net462\System.Memory.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Numerics" />
|
||||||
|
<Reference Include="System.Numerics.Vectors, Version=4.1.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\System.Numerics.Vectors.4.6.1\lib\net462\System.Numerics.Vectors.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\System.Runtime.CompilerServices.Unsafe.6.1.2\lib\net462\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System.Runtime.Serialization" />
|
<Reference Include="System.Runtime.Serialization" />
|
||||||
|
<Reference Include="System.Security" />
|
||||||
|
<Reference Include="System.Security.Cryptography.Pkcs, Version=9.0.0.9, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\System.Security.Cryptography.Pkcs.9.0.9\lib\net462\System.Security.Cryptography.Pkcs.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System.ServiceModel" />
|
<Reference Include="System.ServiceModel" />
|
||||||
<Reference Include="System.ServiceModel.Web" />
|
<Reference Include="System.ServiceModel.Web" />
|
||||||
<Reference Include="System.ServiceProcess" />
|
<Reference Include="System.ServiceProcess" />
|
||||||
|
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>packages\System.Threading.Tasks.Extensions.4.6.3\lib\net462\System.Threading.Tasks.Extensions.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System.Web" />
|
<Reference Include="System.Web" />
|
||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
<Reference Include="Microsoft.CSharp" />
|
<Reference Include="Microsoft.CSharp" />
|
||||||
@ -185,20 +257,20 @@
|
|||||||
<Reference Include="WindowsBase" />
|
<Reference Include="WindowsBase" />
|
||||||
<Reference Include="PresentationCore" />
|
<Reference Include="PresentationCore" />
|
||||||
<Reference Include="PresentationFramework" />
|
<Reference Include="PresentationFramework" />
|
||||||
<Reference Include="Xceed.Wpf.AvalonDock, Version=4.3.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
|
<Reference Include="Xceed.Wpf.AvalonDock, Version=5.0.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
|
||||||
<HintPath>packages\Extended.Wpf.Toolkit.4.3.0\lib\net40\Xceed.Wpf.AvalonDock.dll</HintPath>
|
<HintPath>packages\Extended.Wpf.Toolkit.5.0.0\lib\net40\Xceed.Wpf.AvalonDock.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Xceed.Wpf.AvalonDock.Themes.Aero, Version=4.3.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
|
<Reference Include="Xceed.Wpf.AvalonDock.Themes.Aero, Version=5.0.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
|
||||||
<HintPath>packages\Extended.Wpf.Toolkit.4.3.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.Aero.dll</HintPath>
|
<HintPath>packages\Extended.Wpf.Toolkit.5.0.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.Aero.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Xceed.Wpf.AvalonDock.Themes.Metro, Version=4.3.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
|
<Reference Include="Xceed.Wpf.AvalonDock.Themes.Metro, Version=5.0.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
|
||||||
<HintPath>packages\Extended.Wpf.Toolkit.4.3.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.Metro.dll</HintPath>
|
<HintPath>packages\Extended.Wpf.Toolkit.5.0.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.Metro.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Xceed.Wpf.AvalonDock.Themes.VS2010, Version=4.3.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
|
<Reference Include="Xceed.Wpf.AvalonDock.Themes.VS2010, Version=5.0.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
|
||||||
<HintPath>packages\Extended.Wpf.Toolkit.4.3.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.VS2010.dll</HintPath>
|
<HintPath>packages\Extended.Wpf.Toolkit.5.0.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.VS2010.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Xceed.Wpf.Toolkit, Version=4.3.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
|
<Reference Include="Xceed.Wpf.Toolkit, Version=5.0.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
|
||||||
<HintPath>packages\Extended.Wpf.Toolkit.4.3.0\lib\net40\Xceed.Wpf.Toolkit.dll</HintPath>
|
<HintPath>packages\Extended.Wpf.Toolkit.5.0.0\lib\net40\Xceed.Wpf.Toolkit.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@ -225,6 +297,9 @@
|
|||||||
<Compile Include="Controls\ConditionGroupControl.xaml.cs">
|
<Compile Include="Controls\ConditionGroupControl.xaml.cs">
|
||||||
<DependentUpon>ConditionGroupControl.xaml</DependentUpon>
|
<DependentUpon>ConditionGroupControl.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Controls\EasyPeasyControl.xaml.cs">
|
||||||
|
<DependentUpon>EasyPeasyControl.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="Controls\EditWindowBase.cs" />
|
<Compile Include="Controls\EditWindowBase.cs" />
|
||||||
<Compile Include="Controls\ENIDataGrid.cs" />
|
<Compile Include="Controls\ENIDataGrid.cs" />
|
||||||
<Compile Include="Controls\IHighlightControlContainer.cs" />
|
<Compile Include="Controls\IHighlightControlContainer.cs" />
|
||||||
@ -234,6 +309,12 @@
|
|||||||
<Compile Include="Controls\MaerskOverviewControl.xaml.cs">
|
<Compile Include="Controls\MaerskOverviewControl.xaml.cs">
|
||||||
<DependentUpon>MaerskOverviewControl.xaml</DependentUpon>
|
<DependentUpon>MaerskOverviewControl.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Controls\ValueMappingsControl.xaml.cs">
|
||||||
|
<DependentUpon>ValueMappingsControl.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="EditControls\ChangePasswordDialog.xaml.cs">
|
||||||
|
<DependentUpon>ChangePasswordDialog.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="EditControls\CompareExcelDialog.xaml.cs">
|
<Compile Include="EditControls\CompareExcelDialog.xaml.cs">
|
||||||
<DependentUpon>CompareExcelDialog.xaml</DependentUpon>
|
<DependentUpon>CompareExcelDialog.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
@ -249,6 +330,12 @@
|
|||||||
<Compile Include="EditControls\NewDGItemDialog.xaml.cs">
|
<Compile Include="EditControls\NewDGItemDialog.xaml.cs">
|
||||||
<DependentUpon>NewDGItemDialog.xaml</DependentUpon>
|
<DependentUpon>NewDGItemDialog.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="EditControls\SelectCrewMemberDialog.xaml.cs">
|
||||||
|
<DependentUpon>SelectCrewMemberDialog.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="EditControls\SelectPortAreaDialog.xaml.cs">
|
||||||
|
<DependentUpon>SelectPortAreaDialog.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="Excel\DakosyUtil.cs" />
|
<Compile Include="Excel\DakosyUtil.cs" />
|
||||||
<Compile Include="Excel\ExcelBase.cs" />
|
<Compile Include="Excel\ExcelBase.cs" />
|
||||||
<Compile Include="Excel\ExcelComparer.cs" />
|
<Compile Include="Excel\ExcelComparer.cs" />
|
||||||
@ -428,6 +515,42 @@
|
|||||||
<DesignTime>True</DesignTime>
|
<DesignTime>True</DesignTime>
|
||||||
<DependentUpon>Reference.svcmap</DependentUpon>
|
<DependentUpon>Reference.svcmap</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="SheetDisplayControls\ATAControl.xaml.cs">
|
||||||
|
<DependentUpon>ATAControl.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="SheetDisplayControls\CrewDepartureControl.xaml.cs">
|
||||||
|
<DependentUpon>CrewDepartureControl.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="SheetDisplayControls\CrewPreArrivalControl.xaml.cs">
|
||||||
|
<DependentUpon>CrewPreArrivalControl.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="SheetDisplayControls\DangerousCargoControl.xaml.cs">
|
||||||
|
<DependentUpon>DangerousCargoControl.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="SheetDisplayControls\PassengerDepartureControl.xaml.cs">
|
||||||
|
<DependentUpon>PassengerDepartureControl.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="SheetDisplayControls\PassengerPreArrivalControl.xaml.cs">
|
||||||
|
<DependentUpon>PassengerPreArrivalControl.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="SheetDisplayControls\PortControl.xaml.cs">
|
||||||
|
<DependentUpon>PortControl.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="SheetDisplayControls\PreArrivalControl.xaml.cs">
|
||||||
|
<DependentUpon>PreArrivalControl.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="SheetDisplayControls\PreDepartureControl.xaml.cs">
|
||||||
|
<DependentUpon>PreDepartureControl.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="SheetDisplayControls\ShipDataControl.xaml.cs">
|
||||||
|
<DependentUpon>ShipDataControl.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="SheetDisplayControls\VoyageControl.xaml.cs">
|
||||||
|
<DependentUpon>VoyageControl.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="SheetDisplayControls\WasteReceiptsControl.xaml.cs">
|
||||||
|
<DependentUpon>WasteReceiptsControl.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="SplashScreenWindow.xaml.cs">
|
<Compile Include="SplashScreenWindow.xaml.cs">
|
||||||
<DependentUpon>SplashScreenWindow.xaml</DependentUpon>
|
<DependentUpon>SplashScreenWindow.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
@ -436,22 +559,25 @@
|
|||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="Util\BoolToVisibilityConverter.cs" />
|
<Compile Include="Util\BoolToVisibilityConverter.cs" />
|
||||||
<Compile Include="Util\ByteConverter.cs" />
|
<Compile Include="Util\ByteConverter.cs" />
|
||||||
|
<Compile Include="Util\CutoffConverter.cs" />
|
||||||
<Compile Include="Util\DatabaseEntityWatchdog.cs" />
|
<Compile Include="Util\DatabaseEntityWatchdog.cs" />
|
||||||
|
<Compile Include="Util\EasyPeasyState.cs" />
|
||||||
<Compile Include="Util\EnumHelper.cs" />
|
<Compile Include="Util\EnumHelper.cs" />
|
||||||
<Compile Include="Util\EnumToBooleanConverter.cs" />
|
<Compile Include="Util\EnumToBooleanConverter.cs" />
|
||||||
<Compile Include="Util\EnumToCollectionConverter.cs" />
|
<Compile Include="Util\EnumToCollectionConverter.cs" />
|
||||||
<Compile Include="Util\ExpandableListConverter.cs" />
|
<Compile Include="Util\ExpandableListConverter.cs" />
|
||||||
|
<Compile Include="Util\Extensions.cs" />
|
||||||
<Compile Include="Util\GlobalStructures.cs" />
|
<Compile Include="Util\GlobalStructures.cs" />
|
||||||
<Compile Include="Util\HighlightService.cs" />
|
<Compile Include="Util\HighlightService.cs" />
|
||||||
<Compile Include="Util\InverseBooleanConverter.cs" />
|
<Compile Include="Util\InverseBooleanConverter.cs" />
|
||||||
<Compile Include="Util\NullImageConverter.cs" />
|
<Compile Include="Util\NullImageConverter.cs" />
|
||||||
|
<Compile Include="Util\NumberValidationRule.cs" />
|
||||||
|
<Compile Include="Util\SettingBindingExtension.cs" />
|
||||||
|
<Compile Include="Util\StringValidationRule.cs" />
|
||||||
<Compile Include="Util\TrimStringConverter.cs" />
|
<Compile Include="Util\TrimStringConverter.cs" />
|
||||||
<Compile Include="Util\UIHelper.cs" />
|
<Compile Include="Util\UIHelper.cs" />
|
||||||
<Compile Include="Util\UtcToLocalDateTimeConverter.cs" />
|
<Compile Include="Util\UtcToLocalDateTimeConverter.cs" />
|
||||||
<Compile Include="Util\ValidationContext.cs" />
|
<Compile Include="Util\ValidationContext.cs" />
|
||||||
<Compile Include="VorgaengeControl.xaml.cs">
|
|
||||||
<DependentUpon>VorgaengeControl.xaml</DependentUpon>
|
|
||||||
</Compile>
|
|
||||||
<Compile Include="WindowPlacement.cs" />
|
<Compile Include="WindowPlacement.cs" />
|
||||||
<Page Include="AnmeldungenControl.xaml">
|
<Page Include="AnmeldungenControl.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
@ -465,6 +591,10 @@
|
|||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
|
<Page Include="Controls\EasyPeasyControl.xaml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</Page>
|
||||||
<Page Include="Controls\LocodeControl.xaml">
|
<Page Include="Controls\LocodeControl.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
@ -493,6 +623,10 @@
|
|||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
|
<Page Include="Controls\ValueMappingsControl.xaml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</Page>
|
||||||
<Page Include="ControlTemplates.xaml">
|
<Page Include="ControlTemplates.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
@ -557,6 +691,10 @@
|
|||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
|
<Page Include="EditControls\ChangePasswordDialog.xaml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</Page>
|
||||||
<Page Include="EditControls\CompareExcelDialog.xaml">
|
<Page Include="EditControls\CompareExcelDialog.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
@ -685,10 +823,18 @@
|
|||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
|
<Page Include="EditControls\SelectCrewMemberDialog.xaml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</Page>
|
||||||
<Page Include="EditControls\SelectImportClassesDialog.xaml">
|
<Page Include="EditControls\SelectImportClassesDialog.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
|
<Page Include="EditControls\SelectPortAreaDialog.xaml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</Page>
|
||||||
<Page Include="EditControls\ShowIdDialog.xaml">
|
<Page Include="EditControls\ShowIdDialog.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
@ -724,6 +870,54 @@
|
|||||||
<DependentUpon>MainWindow.xaml</DependentUpon>
|
<DependentUpon>MainWindow.xaml</DependentUpon>
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Page Include="SheetDisplayControls\ATAControl.xaml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</Page>
|
||||||
|
<Page Include="SheetDisplayControls\CrewDepartureControl.xaml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</Page>
|
||||||
|
<Page Include="SheetDisplayControls\CrewPreArrivalControl.xaml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</Page>
|
||||||
|
<Page Include="SheetDisplayControls\DangerousCargoControl.xaml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</Page>
|
||||||
|
<Page Include="SheetDisplayControls\PassengerDepartureControl.xaml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</Page>
|
||||||
|
<Page Include="SheetDisplayControls\PassengerPreArrivalControl.xaml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</Page>
|
||||||
|
<Page Include="SheetDisplayControls\PortControl.xaml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</Page>
|
||||||
|
<Page Include="SheetDisplayControls\PreArrivalControl.xaml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</Page>
|
||||||
|
<Page Include="SheetDisplayControls\PreDepartureControl.xaml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</Page>
|
||||||
|
<Page Include="SheetDisplayControls\ShipDataControl.xaml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</Page>
|
||||||
|
<Page Include="SheetDisplayControls\VoyageControl.xaml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</Page>
|
||||||
|
<Page Include="SheetDisplayControls\WasteReceiptsControl.xaml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
</Page>
|
||||||
<Page Include="SplashScreenWindow.xaml">
|
<Page Include="SplashScreenWindow.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
@ -736,10 +930,6 @@
|
|||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</Page>
|
</Page>
|
||||||
<Page Include="VorgaengeControl.xaml">
|
|
||||||
<SubType>Designer</SubType>
|
|
||||||
<Generator>MSBuild:Compile</Generator>
|
|
||||||
</Page>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Properties\AssemblyInfo.cs">
|
<Compile Include="Properties\AssemblyInfo.cs">
|
||||||
@ -755,10 +945,6 @@
|
|||||||
<DependentUpon>Settings.settings</DependentUpon>
|
<DependentUpon>Settings.settings</DependentUpon>
|
||||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Content Include="..\misc\Logo.gif">
|
|
||||||
<Link>Report\Logo.gif</Link>
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="..\misc\report.db">
|
<Content Include="..\misc\report.db">
|
||||||
<Link>report.db</Link>
|
<Link>report.db</Link>
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
@ -776,6 +962,9 @@
|
|||||||
<None Include="ENI2_3_TemporaryKey.pfx" />
|
<None Include="ENI2_3_TemporaryKey.pfx" />
|
||||||
<None Include="ENI2_4_TemporaryKey.pfx" />
|
<None Include="ENI2_4_TemporaryKey.pfx" />
|
||||||
<None Include="ENI2_5_TemporaryKey.pfx" />
|
<None Include="ENI2_5_TemporaryKey.pfx" />
|
||||||
|
<None Include="ENI2_6_TemporaryKey.pfx" />
|
||||||
|
<None Include="ENI2_7_TemporaryKey.pfx" />
|
||||||
|
<None Include="packages.config" />
|
||||||
<None Include="Service References\LockingServiceReference\ENI2.LockingServiceReference.CoreLock.datasource">
|
<None Include="Service References\LockingServiceReference\ENI2.LockingServiceReference.CoreLock.datasource">
|
||||||
<DependentUpon>Reference.svcmap</DependentUpon>
|
<DependentUpon>Reference.svcmap</DependentUpon>
|
||||||
</None>
|
</None>
|
||||||
@ -858,6 +1047,15 @@
|
|||||||
<Resource Include="Resources\document_plain_new.png" />
|
<Resource Include="Resources\document_plain_new.png" />
|
||||||
<Resource Include="Resources\exit.png" />
|
<Resource Include="Resources\exit.png" />
|
||||||
<Resource Include="Resources\document_exchange.png" />
|
<Resource Include="Resources\document_exchange.png" />
|
||||||
|
<Resource Include="Resources\arrival_user.png" />
|
||||||
|
<Resource Include="Resources\arrival_worker.png" />
|
||||||
|
<Resource Include="Resources\departure_user.png" />
|
||||||
|
<Resource Include="Resources\departure_worker.png" />
|
||||||
|
<Resource Include="Resources\clock.png" />
|
||||||
|
<Content Include="Report\Logo.png">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Resource Include="Resources\pencil.png" />
|
||||||
<Content Include="x64\SQLite.Interop.dll">
|
<Content Include="x64\SQLite.Interop.dll">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
@ -884,7 +1082,6 @@
|
|||||||
</Content>
|
</Content>
|
||||||
<None Include="bsmdKey.snk" />
|
<None Include="bsmdKey.snk" />
|
||||||
<None Include="ENI2.licenseheader" />
|
<None Include="ENI2.licenseheader" />
|
||||||
<None Include="packages.config" />
|
|
||||||
<None Include="Properties\app.manifest" />
|
<None Include="Properties\app.manifest" />
|
||||||
<None Include="Properties\Settings.settings">
|
<None Include="Properties\Settings.settings">
|
||||||
<Generator>SettingsSingleFileGenerator</Generator>
|
<Generator>SettingsSingleFileGenerator</Generator>
|
||||||
@ -907,9 +1104,9 @@
|
|||||||
<Resource Include="Resources\containership.ico" />
|
<Resource Include="Resources\containership.ico" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<BootstrapperPackage Include=".NETFramework,Version=v4.5.2">
|
<BootstrapperPackage Include=".NETFramework,Version=v4.8">
|
||||||
<Visible>False</Visible>
|
<Visible>False</Visible>
|
||||||
<ProductName>Microsoft .NET Framework 4.5.2 %28x86 and x64%29</ProductName>
|
<ProductName>Microsoft .NET Framework 4.8 %28x86 and x64%29</ProductName>
|
||||||
<Install>true</Install>
|
<Install>true</Install>
|
||||||
</BootstrapperPackage>
|
</BootstrapperPackage>
|
||||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||||
@ -1007,15 +1204,17 @@
|
|||||||
<SignToolPath Condition="'$(SignToolPath)' == '' And '$(SignToolPathBase)' != ''">$(SignToolPathBase)$(Platform)\</SignToolPath>
|
<SignToolPath Condition="'$(SignToolPath)' == '' And '$(SignToolPathBase)' != ''">$(SignToolPathBase)$(Platform)\</SignToolPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<PostBuildEvent>"$(SignToolPath)signtool.exe" sign /f $(ProjectDir)\..\misc\codesigning.pfx /p t5bj2dk9ifdIWBPhPra4U $(TargetPath)</PostBuildEvent>
|
<PostBuildEvent>"$(SignToolPath)signtool.exe" sign /f $(ProjectDir)\ENI2_7_TemporaryKey.pfx /p FgrMFUWsTVGQeb6L6i0e /fd SHA256 $(TargetPath)</PostBuildEvent>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.117.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets" Condition="Exists('packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.117.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets')" />
|
<Import Project="packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets" Condition="Exists('packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets')" />
|
||||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Error Condition="!Exists('packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.117.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.117.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets'))" />
|
<Error Condition="!Exists('packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.119.0\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets'))" />
|
||||||
|
<Error Condition="!Exists('packages\System.ValueTuple.4.6.1\build\net471\System.ValueTuple.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\System.ValueTuple.4.6.1\build\net471\System.ValueTuple.targets'))" />
|
||||||
</Target>
|
</Target>
|
||||||
|
<Import Project="packages\System.ValueTuple.4.6.1\build\net471\System.ValueTuple.targets" Condition="Exists('packages\System.ValueTuple.4.6.1\build\net471\System.ValueTuple.targets')" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
<Target Name="BeforeBuild">
|
<Target Name="BeforeBuild">
|
||||||
|
|||||||
BIN
ENI2/ENI2_6_TemporaryKey.pfx
Normal file
BIN
ENI2/ENI2_6_TemporaryKey.pfx
Normal file
Binary file not shown.
BIN
ENI2/ENI2_7_TemporaryKey.pfx
Normal file
BIN
ENI2/ENI2_7_TemporaryKey.pfx
Normal file
Binary file not shown.
37
ENI2/EditControls/ChangePasswordDialog.xaml
Normal file
37
ENI2/EditControls/ChangePasswordDialog.xaml
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
<enictrl:EditWindowBase x:Class="ENI2.EditControls.ChangePasswordDialog"
|
||||||
|
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:enictrl="clr-namespace:ENI2.Controls"
|
||||||
|
xmlns:p="clr-namespace:ENI2.Properties"
|
||||||
|
mc:Ignorable="d"
|
||||||
|
Title="Change password" Height="243" Width="400" Loaded="EditWindowBase_Loaded" Background="AliceBlue">
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width=".4*" />
|
||||||
|
<ColumnDefinition Width=".6*" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
|
||||||
|
<Label Grid.Row="0" Grid.Column="0" Content="Name" />
|
||||||
|
<Label Grid.Row="1" Grid.Column="0" Content="{x:Static p:Resources.textOldPassword}" />
|
||||||
|
<Label Grid.Row="2" Grid.Column="0" Content="{x:Static p:Resources.textNewPassword}" />
|
||||||
|
<Label Grid.Row="3" Grid.Column="0" Content="{x:Static p:Resources.textRepeatNewPassword}" />
|
||||||
|
<TextBlock Grid.Row="0" Grid.Column="1" x:Name="textBlockName" VerticalAlignment="Center" FontWeight="DemiBold"/>
|
||||||
|
<PasswordBox Grid.Row="1" Grid.Column="1" x:Name="textBoxOldPassword" Margin="2" VerticalContentAlignment="Center" />
|
||||||
|
<PasswordBox Grid.Row="2" Grid.Column="1" x:Name="textBoxNew1Password" Margin="2" VerticalContentAlignment="Center" />
|
||||||
|
<PasswordBox Grid.Row="3" Grid.Column="1" x:Name="textBoxNew2Password" Margin="2" VerticalContentAlignment="Center" />
|
||||||
|
<Label Grid.Row="4" Grid.Column="0" Content="{x:Static p:Resources.textDefaultDisplay}" />
|
||||||
|
<ComboBox x:Name="comboBoxDefaultDisplay" Grid.Column="1" Grid.Row="4" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="False" />
|
||||||
|
<Button Grid.Row="5" Grid.Column="1" Content="Change" Name="buttonChangePassword" Margin="2" Width="80" HorizontalAlignment="Left" Click="buttonChangePassword_Click"/>
|
||||||
|
|
||||||
|
</Grid>
|
||||||
|
</enictrl:EditWindowBase>
|
||||||
98
ENI2/EditControls/ChangePasswordDialog.xaml.cs
Normal file
98
ENI2/EditControls/ChangePasswordDialog.xaml.cs
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
// Copyright (c) 2017- schick Informatik
|
||||||
|
// Description: Users may change their password
|
||||||
|
//
|
||||||
|
|
||||||
|
using bsmd.database;
|
||||||
|
using ENI2.Controls;
|
||||||
|
using System;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
|
||||||
|
namespace ENI2.EditControls
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Interaction logic for ChangePasswordDialog.xaml
|
||||||
|
/// </summary>
|
||||||
|
public partial class ChangePasswordDialog : EditWindowBase
|
||||||
|
{
|
||||||
|
|
||||||
|
#region Construction
|
||||||
|
|
||||||
|
public ChangePasswordDialog()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Properties
|
||||||
|
|
||||||
|
public ReportingParty CurrentUser { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region event handler
|
||||||
|
|
||||||
|
private void buttonChangePassword_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
bool success = false;
|
||||||
|
string message = "";
|
||||||
|
if (!textBoxOldPassword.Password.IsNullOrEmpty() || !textBoxNew1Password.Password.IsNullOrEmpty() || !textBoxNew2Password.Password.IsNullOrEmpty())
|
||||||
|
{
|
||||||
|
if (!textBoxOldPassword.Password.IsNullOrEmpty())
|
||||||
|
{
|
||||||
|
if (CurrentUser.GetHash(textBoxOldPassword.Password).Equals(CurrentUser.PasswordHash))
|
||||||
|
{
|
||||||
|
if (textBoxNew1Password.Password.IsNullOrEmpty() ||
|
||||||
|
textBoxNew2Password.Password.IsNullOrEmpty() ||
|
||||||
|
!textBoxNew1Password.Password.Equals(textBoxNew2Password.Password))
|
||||||
|
{
|
||||||
|
message = "New passwords are empty or do not match";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (textBoxOldPassword.Password.Equals(textBoxNew1Password.Password))
|
||||||
|
{
|
||||||
|
message = "Old and new password are the same";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CurrentUser.SetPassword(textBoxNew1Password.Password);
|
||||||
|
success = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
message = "Old password is not correct";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
message = "Old password empty";
|
||||||
|
}
|
||||||
|
if (!success)
|
||||||
|
MessageBox.Show(message, "Changing password failed", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
|
else
|
||||||
|
MessageBox.Show("Password successfully changed.", "Password changed", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||||
|
}
|
||||||
|
// user may have changed combobox default display value so we are saving anyway here
|
||||||
|
this.CurrentUser.ShipcallDisplayMode = (ReportingParty.ShipcallDisplayModeEnum)Enum.Parse(typeof(ReportingParty.ShipcallDisplayModeEnum), (string)this.comboBoxDefaultDisplay.SelectedValue);
|
||||||
|
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(CurrentUser);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void EditWindowBase_Loaded(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
this.textBlockName.Text = CurrentUser.Logon;
|
||||||
|
this.AddVisible = false;
|
||||||
|
this.OkVisible = false;
|
||||||
|
var cancelButton = (Button)Template.FindName("buttonCancel", this);
|
||||||
|
cancelButton.Content = "Close";
|
||||||
|
this.comboBoxDefaultDisplay.ItemsSource = Util.EnumHelper.GetAllValuesAndDescription(typeof(ReportingParty.ShipcallDisplayModeEnum));
|
||||||
|
this.comboBoxDefaultDisplay.SelectedValue = this.CurrentUser.ShipcallDisplayMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -8,7 +8,7 @@
|
|||||||
xmlns:p="clr-namespace:ENI2.Properties"
|
xmlns:p="clr-namespace:ENI2.Properties"
|
||||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Title="{x:Static p:Resources.textCompareExcel}" Height="260" Width="600" Background="AliceBlue" Icon="/ENI2;component/Resources/bullet_ball_grey.ico">
|
Title="{x:Static p:Resources.textCompareExcel}" Height="260" Width="600" Background="AliceBlue" Icon="/ENI2Test;component/Resources/bullet_ball_grey.ico">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="32" />
|
<RowDefinition Height="32" />
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
xmlns:p="clr-namespace:ENI2.Properties"
|
xmlns:p="clr-namespace:ENI2.Properties"
|
||||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Title="{x:Static p:Resources.textCopyDeclaration}" Height="326" Width="440" WindowStyle="SingleBorderWindow" Background="AliceBlue" ResizeMode="NoResize" Icon="/ENI2;component/Resources/id_cards.ico">
|
Title="{x:Static p:Resources.textCopyDeclaration}" Height="326" Width="440" WindowStyle="SingleBorderWindow" Background="AliceBlue" ResizeMode="NoResize" Icon="/ENI2Test;component/Resources/id_cards.ico">
|
||||||
<Grid Margin="5">
|
<Grid Margin="5">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="28" />
|
<RowDefinition Height="28" />
|
||||||
@ -60,7 +60,7 @@
|
|||||||
ButtonSpinnerLocation="Right"
|
ButtonSpinnerLocation="Right"
|
||||||
ParsingNumberStyle="Integer"
|
ParsingNumberStyle="Integer"
|
||||||
Watermark="Enter ENI" ValueChanged="doubleUpDownENI_ValueChanged" TextAlignment="Left"/>
|
Watermark="Enter ENI" ValueChanged="doubleUpDownENI_ValueChanged" TextAlignment="Left"/>
|
||||||
<enictrl:LocodeControl Grid.Column="1" Grid.Row="3" Grid.ColumnSpan="2" Width="Auto" x:Name="locodePoC" />
|
<enictrl:LocodeControl Grid.Column="1" Grid.Row="3" Grid.ColumnSpan="2" Width="Auto" x:Name="locodePoC" LocodeSource="OLD" />
|
||||||
<DatePicker Name="datePickerETA" Grid.Row="4" Grid.Column="1" Grid.ColumnSpan="2" SelectedDateChanged="datePickerETA_SelectedDateChanged" DisplayDateStart="1/1/1900" DisplayDateEnd="12/31/2199">
|
<DatePicker Name="datePickerETA" Grid.Row="4" Grid.Column="1" Grid.ColumnSpan="2" SelectedDateChanged="datePickerETA_SelectedDateChanged" DisplayDateStart="1/1/1900" DisplayDateEnd="12/31/2199">
|
||||||
<DatePicker.BlackoutDates>
|
<DatePicker.BlackoutDates>
|
||||||
<CalendarDateRange Start="1/1/0001" End="12/31/1799"/>
|
<CalendarDateRange Start="1/1/0001" End="12/31/1799"/>
|
||||||
|
|||||||
@ -57,7 +57,7 @@ namespace ENI2.EditControls
|
|||||||
isComplete &= imo_OR_eni;
|
isComplete &= imo_OR_eni;
|
||||||
|
|
||||||
string locode = this.locodePoC.LocodeValue;
|
string locode = this.locodePoC.LocodeValue;
|
||||||
bool validLocode = (locode?.Length == 5) && (locode.StartsWith("DE") || locode.StartsWith("DK") || locode.Equals("ZZNOK"));
|
bool validLocode = (locode?.Length == 5) && (locode.StartsWith("DE") || locode.StartsWith("DK") || locode.Equals("ZZNOK") || locode.Equals("DEWHV"));
|
||||||
|
|
||||||
isComplete &= validLocode;
|
isComplete &= validLocode;
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||||
xmlns:p="clr-namespace:ENI2.Properties"
|
xmlns:p="clr-namespace:ENI2.Properties"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Title="{x:Static p:Resources.textCoreStatus}" Height="436" Width="600" WindowStyle="SingleBorderWindow" Background="AliceBlue" Icon="/ENI2;component/Resources/bullet_ball_grey.ico" >
|
Title="{x:Static p:Resources.textCoreStatus}" Height="436" Width="600" WindowStyle="SingleBorderWindow" Background="AliceBlue" Icon="/ENI2Test;component/Resources/bullet_ball_grey.ico" >
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="0.3*"/>
|
<ColumnDefinition Width="0.3*"/>
|
||||||
|
|||||||
@ -19,7 +19,7 @@
|
|||||||
<ColumnDefinition Width="3*" />
|
<ColumnDefinition Width="3*" />
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<Label Content="{x:Static p:Resources.textBunkerType}" Grid.Row="0" Grid.Column="0" />
|
<Label Content="{x:Static p:Resources.textBunkerType}" Grid.Row="0" Grid.Column="0" />
|
||||||
<TextBox Grid.Row="0" Grid.Column="1" Width="auto" Name="textBoxBunkerType" Margin="2" MaxLength="100" VerticalContentAlignment="Center"/>
|
<TextBox Grid.Row="0" Grid.Column="1" Width="auto" Name="textBoxBunkerType" Margin="2" MaxLength="25" VerticalContentAlignment="Center"/>
|
||||||
<Label Content="{x:Static p:Resources.textBunkerQuantity}" Grid.Row="1" Grid.Column="0" />
|
<Label Content="{x:Static p:Resources.textBunkerQuantity}" Grid.Row="1" Grid.Column="0" />
|
||||||
<xctk:DoubleUpDown Grid.Row="1" Grid.Column="1" Name="doubleUpDownBunkerQuantity" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2,2,2,2" FormatString="N1" TextAlignment="Left" />
|
<xctk:DoubleUpDown Grid.Row="1" Grid.Column="1" Name="doubleUpDownBunkerQuantity" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2,2,2,2" FormatString="N1" TextAlignment="Left" />
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|||||||
@ -34,7 +34,7 @@
|
|||||||
<Label Name="labelNationality" Grid.Row="3" Grid.Column="0" Content="{x:Static p:Resources.textNationality}" />
|
<Label Name="labelNationality" Grid.Row="3" Grid.Column="0" Content="{x:Static p:Resources.textNationality}" />
|
||||||
<Label Name="labelDateOfBirth" Grid.Row="3" Grid.Column="2" Content="{x:Static p:Resources.textDateOfBirth}" />
|
<Label Name="labelDateOfBirth" Grid.Row="3" Grid.Column="2" Content="{x:Static p:Resources.textDateOfBirth}" />
|
||||||
<Label Name="labelIdDocType" Grid.Row="4" Grid.Column="0" Content="{x:Static p:Resources.textIdDocType}" />
|
<Label Name="labelIdDocType" Grid.Row="4" Grid.Column="0" Content="{x:Static p:Resources.textIdDocType}" />
|
||||||
<!--<Label Name="labelCountryOfBirth" Grid.Row="4" Grid.Column="1" Content="{x:Static p:Resources.textCountryOfBirth}" Grid.ColumnSpan="2" Margin="263,0,1,0" />--> <!-- XXX : TODO -->
|
<Label Name="labelCountryOfBirth" Grid.Row="4" Grid.Column="1" Content="{x:Static p:Resources.textCountryOfBirth}" Grid.ColumnSpan="2" Margin="263,0,1,0" />
|
||||||
<Label Name="labelIdDocNumber" Grid.Row="5" Grid.Column="2" Content="{x:Static p:Resources.textIdDocNumber}" />
|
<Label Name="labelIdDocNumber" Grid.Row="5" Grid.Column="2" Content="{x:Static p:Resources.textIdDocNumber}" />
|
||||||
<Label Name="labelVisaNumber" Grid.Row="5" Grid.Column="0" Content="{x:Static p:Resources.textVisaNumber}" />
|
<Label Name="labelVisaNumber" Grid.Row="5" Grid.Column="0" Content="{x:Static p:Resources.textVisaNumber}" />
|
||||||
<Label Name="labelIssuingState" Grid.Row="6" Grid.Column="2" Content="{x:Static p:Resources.textDocumentIssuingState}" />
|
<Label Name="labelIssuingState" Grid.Row="6" Grid.Column="2" Content="{x:Static p:Resources.textDocumentIssuingState}" />
|
||||||
@ -42,27 +42,29 @@
|
|||||||
<!--Label Name="labelEffects" Grid.Row="7" Grid.Column="0" Content="{x:Static p:Resources.textEffects}" /-->
|
<!--Label Name="labelEffects" Grid.Row="7" Grid.Column="0" Content="{x:Static p:Resources.textEffects}" /-->
|
||||||
<TextBox Grid.Row="0" Grid.Column="1" Width="auto" Name="textBoxDuty" Margin="2" MaxLength="100" VerticalContentAlignment="Center"/>
|
<TextBox Grid.Row="0" Grid.Column="1" Width="auto" Name="textBoxDuty" Margin="2" MaxLength="100" VerticalContentAlignment="Center"/>
|
||||||
<TextBox Grid.Row="1" Grid.Column="1" Width="auto" Name="textBoxLastName" Margin="2" MaxLength="100" VerticalContentAlignment="Center"/>
|
<TextBox Grid.Row="1" Grid.Column="1" Width="auto" Name="textBoxLastName" Margin="2" MaxLength="100" VerticalContentAlignment="Center"/>
|
||||||
<TextBox Grid.Row="1" Grid.Column="3" Width="auto" Name="textBoxFirstName" Margin="2" MaxLength="100" VerticalContentAlignment="Center"/>
|
|
||||||
<ComboBox Grid.Row="2" Grid.Column="1" Name="comboBoxGender" Margin="2" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" SelectedValuePath="Key" DisplayMemberPath="Value" ContextMenu="{DynamicResource ClearContextMenu}"/>
|
<ComboBox Grid.Row="2" Grid.Column="1" Name="comboBoxGender" Margin="2" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" SelectedValuePath="Key" DisplayMemberPath="Value" ContextMenu="{DynamicResource ClearContextMenu}"/>
|
||||||
<TextBox Grid.Row="2" Grid.Column="3" Width="auto" Name="textBoxPlaceOfBirth" Margin="2" MaxLength="100" VerticalContentAlignment="Center"/>
|
|
||||||
<ComboBox Grid.Row="3" Grid.Column="1" Name="comboBoxNationality" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" ContextMenu="{DynamicResource ClearContextMenu}"/>
|
<ComboBox Grid.Row="3" Grid.Column="1" Name="comboBoxNationality" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" ContextMenu="{DynamicResource ClearContextMenu}"/>
|
||||||
<DatePicker Grid.Row="3" Grid.Column="3" Name="datePickerDateOfBirth" Margin="2" DisplayDateStart="1/1/1900" DisplayDateEnd="12/31/2199" PreviewKeyUp="DateTimePicker_PreviewKeyUpDate">
|
|
||||||
<DatePicker.BlackoutDates>
|
|
||||||
<CalendarDateRange Start="1/1/0001" End="12/31/1899"/>
|
|
||||||
<CalendarDateRange Start="1/1/2199" End="1/1/9999"/>
|
|
||||||
</DatePicker.BlackoutDates>
|
|
||||||
</DatePicker>
|
|
||||||
<ComboBox Grid.Row="4" Grid.Column="1" Name="comboBoxIdDocType" Margin="2" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" SelectedValuePath="Key" DisplayMemberPath="Value" ContextMenu="{DynamicResource ClearContextMenu}" />
|
<ComboBox Grid.Row="4" Grid.Column="1" Name="comboBoxIdDocType" Margin="2" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" SelectedValuePath="Key" DisplayMemberPath="Value" ContextMenu="{DynamicResource ClearContextMenu}" />
|
||||||
<!-- <ComboBox Grid.Row="4" Grid.Column="3" Width="auto" Name="comboBoxCountryOfBirth" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" ContextMenu="{DynamicResource ClearContextMenu}"/>-->
|
|
||||||
<TextBox Grid.Row="5" Grid.Column="3" Width="auto" Name="textBoxIdDocNumber" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
|
||||||
<TextBox Grid.Row="5" Grid.Column="1" Width="auto" Name="textBoxVisaNumber" Margin="2" MaxLength="100" VerticalContentAlignment="Center"/>
|
<TextBox Grid.Row="5" Grid.Column="1" Width="auto" Name="textBoxVisaNumber" Margin="2" MaxLength="100" VerticalContentAlignment="Center"/>
|
||||||
<ComboBox Grid.Row="6" Grid.Column="3" Width="auto" Name="comboBoxIssuingState" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" ContextMenu="{DynamicResource ClearContextMenu}"/>
|
|
||||||
<DatePicker Grid.Row="6" Grid.Column="1" Name="datePickerExpiryDate" Margin="2" DisplayDateStart="1/1/1900" DisplayDateEnd="12/31/2199" PreviewKeyUp="DateTimePicker_PreviewKeyUpDate">
|
<DatePicker Grid.Row="6" Grid.Column="1" Name="datePickerExpiryDate" Margin="2" DisplayDateStart="1/1/1900" DisplayDateEnd="12/31/2199" PreviewKeyUp="DateTimePicker_PreviewKeyUpDate">
|
||||||
<DatePicker.BlackoutDates>
|
<DatePicker.BlackoutDates>
|
||||||
<CalendarDateRange Start="1/1/0001" End="12/31/1899"/>
|
<CalendarDateRange Start="1/1/0001" End="12/31/1899"/>
|
||||||
<CalendarDateRange Start="1/1/2199" End="1/1/9999"/>
|
<CalendarDateRange Start="1/1/2199" End="1/1/9999"/>
|
||||||
</DatePicker.BlackoutDates>
|
</DatePicker.BlackoutDates>
|
||||||
</DatePicker>
|
</DatePicker>
|
||||||
|
|
||||||
|
<TextBox Grid.Row="1" Grid.Column="3" Width="auto" Name="textBoxFirstName" Margin="2" MaxLength="100" VerticalContentAlignment="Center"/>
|
||||||
|
<TextBox Grid.Row="2" Grid.Column="3" Width="auto" Name="textBoxPlaceOfBirth" Margin="2" MaxLength="100" VerticalContentAlignment="Center"/>
|
||||||
|
<DatePicker Grid.Row="3" Grid.Column="3" Name="datePickerDateOfBirth" Margin="2" DisplayDateStart="1/1/1900" DisplayDateEnd="12/31/2199" PreviewKeyUp="DateTimePicker_PreviewKeyUpDate">
|
||||||
|
<DatePicker.BlackoutDates>
|
||||||
|
<CalendarDateRange Start="1/1/0001" End="12/31/1899"/>
|
||||||
|
<CalendarDateRange Start="1/1/2199" End="1/1/9999"/>
|
||||||
|
</DatePicker.BlackoutDates>
|
||||||
|
</DatePicker>
|
||||||
|
<ComboBox Grid.Row="4" Grid.Column="3" Width="auto" Name="comboBoxCountryOfBirth" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" ContextMenu="{DynamicResource ClearContextMenu}"/>
|
||||||
|
<TextBox Grid.Row="5" Grid.Column="3" Width="auto" Name="textBoxIdDocNumber" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
||||||
|
<ComboBox Grid.Row="6" Grid.Column="3" Width="auto" Name="comboBoxIssuingState" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" ContextMenu="{DynamicResource ClearContextMenu}"/>
|
||||||
|
|
||||||
<!--TextBox Grid.Row="7" Grid.Column="1" Width="auto" Name="textBoxEffects" Margin="2" MaxLength="100" VerticalContentAlignment="Center"/-->
|
<!--TextBox Grid.Row="7" Grid.Column="1" Width="auto" Name="textBoxEffects" Margin="2" MaxLength="100" VerticalContentAlignment="Center"/-->
|
||||||
</Grid>
|
</Grid>
|
||||||
</enictrl:EditWindowBase>
|
</enictrl:EditWindowBase>
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
// Description: CREW Bearbeitungsdialog
|
// Description: CREW Bearbeitungsdialog
|
||||||
//
|
//
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
|
|
||||||
using bsmd.database;
|
using bsmd.database;
|
||||||
@ -14,7 +15,8 @@ namespace ENI2.EditControls
|
|||||||
/// Interaction logic for EditCREWDialog.xaml
|
/// Interaction logic for EditCREWDialog.xaml
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class EditCREWDialog : EditWindowBase
|
public partial class EditCREWDialog : EditWindowBase
|
||||||
{
|
{
|
||||||
|
|
||||||
public EditCREWDialog()
|
public EditCREWDialog()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
@ -35,17 +37,39 @@ namespace ENI2.EditControls
|
|||||||
this.textBoxPlaceOfBirth.Text = this.CREW.CrewMemberPlaceOfBirth;
|
this.textBoxPlaceOfBirth.Text = this.CREW.CrewMemberPlaceOfBirth;
|
||||||
this.comboBoxNationality.ItemsSource = bsmd.database.CREW.NationalityDict;
|
this.comboBoxNationality.ItemsSource = bsmd.database.CREW.NationalityDict;
|
||||||
this.comboBoxNationality.SelectedValue = this.CREW.CrewMemberNationality;
|
this.comboBoxNationality.SelectedValue = this.CREW.CrewMemberNationality;
|
||||||
this.datePickerDateOfBirth.SelectedDate = this.CREW.CrewMemberDateOfBirth;
|
if (this.CREW.CrewMemberDateOfBirth > CREW.CLAMPMAXDATE)
|
||||||
|
{
|
||||||
|
this.datePickerDateOfBirth.SelectedDate = CREW.CLAMPMAXDATE;
|
||||||
|
}
|
||||||
|
else if (this.CREW.CrewMemberDateOfBirth < CREW.CLAMPMINDATE)
|
||||||
|
{
|
||||||
|
this.datePickerDateOfBirth.SelectedDate = CREW.CLAMPMINDATE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.datePickerDateOfBirth.SelectedDate = this.CREW.CrewMemberDateOfBirth;
|
||||||
|
}
|
||||||
this.comboBoxIdDocType.ItemsSource = GlobalStructures.IDDocTypeDict;
|
this.comboBoxIdDocType.ItemsSource = GlobalStructures.IDDocTypeDict;
|
||||||
this.comboBoxIdDocType.SelectedValue = this.CREW.CrewMemberIdentityDocumentType?.ToString();
|
this.comboBoxIdDocType.SelectedValue = this.CREW.CrewMemberIdentityDocumentType?.ToString();
|
||||||
this.textBoxIdDocNumber.Text = this.CREW.CrewMemberIdentityDocumentId;
|
this.textBoxIdDocNumber.Text = this.CREW.CrewMemberIdentityDocumentId;
|
||||||
this.textBoxVisaNumber.Text = this.CREW.CrewMemberVisaNumber;
|
this.textBoxVisaNumber.Text = this.CREW.CrewMemberVisaNumber;
|
||||||
this.comboBoxIssuingState.ItemsSource = bsmd.database.CREW.NationalityDict;
|
this.comboBoxIssuingState.ItemsSource = bsmd.database.CREW.NationalityDict;
|
||||||
this.comboBoxIssuingState.SelectedValue = this.CREW.CrewMemberIdentityDocumentIssuingState;
|
this.comboBoxIssuingState.SelectedValue = this.CREW.CrewMemberIdentityDocumentIssuingState;
|
||||||
if(this.CREW.CrewMemberIdentityDocumentExpiryDate.HasValue)
|
if (this.CREW.CrewMemberIdentityDocumentExpiryDate > CREW.CLAMPMAXDATE)
|
||||||
|
{
|
||||||
|
this.datePickerExpiryDate.SelectedDate = CREW.CLAMPMAXDATE;
|
||||||
|
}
|
||||||
|
else if(this.CREW.CrewMemberDateOfBirth < CREW.CLAMPMINDATE)
|
||||||
|
{
|
||||||
|
this.datePickerExpiryDate.SelectedDate = CREW.CLAMPMINDATE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
this.datePickerExpiryDate.SelectedDate = this.CREW.CrewMemberIdentityDocumentExpiryDate;
|
this.datePickerExpiryDate.SelectedDate = this.CREW.CrewMemberIdentityDocumentExpiryDate;
|
||||||
// this.comboBoxCountryOfBirth.ItemsSource = bsmd.database.CREW.NationalityDict; // XXX: TODO
|
}
|
||||||
// this.comboBoxCountryOfBirth.SelectedValue = this.CREW.CrewMemberCountryOfBirth;
|
|
||||||
|
this.comboBoxCountryOfBirth.ItemsSource = bsmd.database.CREW.NationalityDict;
|
||||||
|
this.comboBoxCountryOfBirth.SelectedValue = this.CREW.CrewMemberCountryOfBirth;
|
||||||
// this.textBoxEffects.Text = this.CREW.Effects;
|
// this.textBoxEffects.Text = this.CREW.Effects;
|
||||||
this.OKClicked += EditCREWDialog_OKClicked;
|
this.OKClicked += EditCREWDialog_OKClicked;
|
||||||
this.AddVisible = true;
|
this.AddVisible = true;
|
||||||
@ -55,6 +79,7 @@ namespace ENI2.EditControls
|
|||||||
{
|
{
|
||||||
// copy back
|
// copy back
|
||||||
this.CREW.CrewMemberDuty = this.textBoxDuty.Text.Trim();
|
this.CREW.CrewMemberDuty = this.textBoxDuty.Text.Trim();
|
||||||
|
if (this.CREW.CrewMemberDuty.IsNullOrEmpty()) this.CREW.CrewMemberDuty = "unknown";
|
||||||
this.CREW.CrewMemberLastName = this.textBoxLastName.Text.Trim();
|
this.CREW.CrewMemberLastName = this.textBoxLastName.Text.Trim();
|
||||||
this.CREW.CrewMemberFirstName = this.textBoxFirstName.Text.Trim();
|
this.CREW.CrewMemberFirstName = this.textBoxFirstName.Text.Trim();
|
||||||
this.CREW.CrewMemberGender = (this.comboBoxGender.SelectedIndex == -1) ? null : (byte?) byte.Parse((string) this.comboBoxGender.SelectedValue);
|
this.CREW.CrewMemberGender = (this.comboBoxGender.SelectedIndex == -1) ? null : (byte?) byte.Parse((string) this.comboBoxGender.SelectedValue);
|
||||||
@ -66,7 +91,7 @@ namespace ENI2.EditControls
|
|||||||
this.CREW.CrewMemberVisaNumber = this.textBoxVisaNumber.Text.Trim();
|
this.CREW.CrewMemberVisaNumber = this.textBoxVisaNumber.Text.Trim();
|
||||||
this.CREW.CrewMemberIdentityDocumentIssuingState = (this.comboBoxIssuingState.SelectedValue == null) ? "" : (string) this.comboBoxIssuingState.SelectedValue;
|
this.CREW.CrewMemberIdentityDocumentIssuingState = (this.comboBoxIssuingState.SelectedValue == null) ? "" : (string) this.comboBoxIssuingState.SelectedValue;
|
||||||
this.CREW.CrewMemberIdentityDocumentExpiryDate = this.datePickerExpiryDate.SelectedDate;
|
this.CREW.CrewMemberIdentityDocumentExpiryDate = this.datePickerExpiryDate.SelectedDate;
|
||||||
// this.CREW.CrewMemberCountryOfBirth = (this.comboBoxCountryOfBirth.SelectedValue == null) ? "" : (string)this.comboBoxCountryOfBirth.SelectedValue;
|
this.CREW.CrewMemberCountryOfBirth = (this.comboBoxCountryOfBirth.SelectedValue == null) ? "" : (string)this.comboBoxCountryOfBirth.SelectedValue;
|
||||||
// this.CREW.Effects = this.textBoxEffects.Text.Trim();
|
// this.CREW.Effects = this.textBoxEffects.Text.Trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -46,7 +46,7 @@
|
|||||||
<TextBox Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3" Name="textBoxBulkCargoShippingName" MaxLength="255" Margin="2" />
|
<TextBox Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3" Name="textBoxBulkCargoShippingName" MaxLength="255" Margin="2" />
|
||||||
<CheckBox Grid.Row="2" Grid.Column="1" VerticalAlignment="Center" Margin="2" Name="checkBoxMaterialHazardous" />
|
<CheckBox Grid.Row="2" Grid.Column="1" VerticalAlignment="Center" Margin="2" Name="checkBoxMaterialHazardous" />
|
||||||
<TextBox Grid.Row="2" Grid.Column="4" Name="textBoxUNNumber" MaxLength="4" Margin="2" VerticalContentAlignment="Center" />
|
<TextBox Grid.Row="2" Grid.Column="4" Name="textBoxUNNumber" MaxLength="4" Margin="2" VerticalContentAlignment="Center" />
|
||||||
<TextBox Grid.Row="3" Grid.Column="1" Name="textBoxIMOClass" MaxLength="4" Margin="2" VerticalContentAlignment="Center" />
|
<TextBox Grid.Row="3" Grid.Column="1" Name="textBoxIMOClass" MaxLength="3" Margin="2" VerticalContentAlignment="Center" />
|
||||||
<xctk:DoubleUpDown Name="doubleUpDownQuantity" Grid.Row="3" Grid.Column="4" Margin="2" FormatString="N3" ShowButtonSpinner="False" TextAlignment="Left"/>
|
<xctk:DoubleUpDown Name="doubleUpDownQuantity" Grid.Row="3" Grid.Column="4" Margin="2" FormatString="N3" ShowButtonSpinner="False" TextAlignment="Left"/>
|
||||||
<Label Grid.Row="3" Grid.Column="5" Content="kg" />
|
<Label Grid.Row="3" Grid.Column="5" Content="kg" />
|
||||||
<TextBox Grid.Row="4" Grid.Column="1" Name="textBoxStowagePosition" MaxLength="24" Margin="2" VerticalContentAlignment="Center" />
|
<TextBox Grid.Row="4" Grid.Column="1" Name="textBoxStowagePosition" MaxLength="24" Margin="2" VerticalContentAlignment="Center" />
|
||||||
|
|||||||
@ -52,7 +52,7 @@
|
|||||||
</DatePicker.BlackoutDates>
|
</DatePicker.BlackoutDates>
|
||||||
</DatePicker>
|
</DatePicker>
|
||||||
<ComboBox Name="comboBoxShipSecurityLevel" Grid.Row="5" Grid.Column="1" Margin="2" />
|
<ComboBox Name="comboBoxShipSecurityLevel" Grid.Row="5" Grid.Column="1" Margin="2" />
|
||||||
<TextBox Name="textBoxGisisCode" Grid.Row="6" Grid.Column="1" Margin="2" MaxLength="4" VerticalContentAlignment="Center"/>
|
<TextBox Name="textBoxGisisCode" Grid.Row="6" Grid.Column="1" Margin="2" MaxLength="4" VerticalContentAlignment="Center" PreviewTextInput="textBoxGisisCode_PreviewTextInput" PreviewKeyDown="textBoxGisisCode_PreviewKeyDown"/>
|
||||||
<TextBox Name="textBoxGisisDescription" Grid.Row="7" Grid.Column="1" Margin="2" IsEnabled="False"/>
|
<TextBox Name="textBoxGisisDescription" Grid.Row="7" Grid.Column="1" Margin="2" IsEnabled="False"/>
|
||||||
<enictrl:LocodeControl x:Name="locodeGISIS" Grid.Row="8" Grid.Column="1" />
|
<enictrl:LocodeControl x:Name="locodeGISIS" Grid.Row="8" Grid.Column="1" />
|
||||||
<TextBox Name="textBoxSecurityMatters" Grid.Row="9" Grid.Column="1" Margin="2" MaxLength="255" />
|
<TextBox Name="textBoxSecurityMatters" Grid.Row="9" Grid.Column="1" Margin="2" MaxLength="255" />
|
||||||
|
|||||||
@ -34,7 +34,7 @@ namespace ENI2.EditControls
|
|||||||
this.comboBoxShipSecurityLevel.ItemsSource = GlobalStructures.ShipSecurityLevels;
|
this.comboBoxShipSecurityLevel.ItemsSource = GlobalStructures.ShipSecurityLevels;
|
||||||
|
|
||||||
if (this.LastTenPortFacilitiesCalled.PortFacilityShipSecurityLevel.HasValue)
|
if (this.LastTenPortFacilitiesCalled.PortFacilityShipSecurityLevel.HasValue)
|
||||||
this.comboBoxShipSecurityLevel.SelectedIndex = (this.LastTenPortFacilitiesCalled.PortFacilityShipSecurityLevel.Value - 1);
|
this.comboBoxShipSecurityLevel.SelectedIndex = this.LastTenPortFacilitiesCalled.PortFacilityShipSecurityLevel.Value - 1;
|
||||||
else
|
else
|
||||||
this.comboBoxShipSecurityLevel.SelectedIndex = -1;
|
this.comboBoxShipSecurityLevel.SelectedIndex = -1;
|
||||||
|
|
||||||
@ -48,23 +48,33 @@ namespace ENI2.EditControls
|
|||||||
public void CopyValuesToEntity()
|
public void CopyValuesToEntity()
|
||||||
{
|
{
|
||||||
this.LastTenPortFacilitiesCalled.PortFacilityPortLoCode = this.locodePort.LocodeValue;
|
this.LastTenPortFacilitiesCalled.PortFacilityPortLoCode = this.locodePort.LocodeValue;
|
||||||
this.LastTenPortFacilitiesCalled.PortFacilityPortName = this.textBoxPortName.Text;
|
this.LastTenPortFacilitiesCalled.PortFacilityPortName = this.textBoxPortName.Text.Trim();
|
||||||
this.LastTenPortFacilitiesCalled.PortFacilityPortCountry = this.textBoxPortCountry.Text;
|
this.LastTenPortFacilitiesCalled.PortFacilityPortCountry = this.textBoxPortCountry.Text.Trim();
|
||||||
this.LastTenPortFacilitiesCalled.PortFacilityDateOfArrival = this.datePickerATA.SelectedDate;
|
this.LastTenPortFacilitiesCalled.PortFacilityDateOfArrival = this.datePickerATA.SelectedDate;
|
||||||
this.LastTenPortFacilitiesCalled.PortFacilityDateOfDeparture = this.datePickerATD.SelectedDate;
|
this.LastTenPortFacilitiesCalled.PortFacilityDateOfDeparture = this.datePickerATD.SelectedDate;
|
||||||
this.LastTenPortFacilitiesCalled.PortFacilityGISISCode = this.textBoxGisisCode.Text;
|
this.LastTenPortFacilitiesCalled.PortFacilityGISISCode = this.textBoxGisisCode.Text.Trim();
|
||||||
|
|
||||||
if (this.comboBoxShipSecurityLevel.SelectedIndex == -1)
|
if (this.comboBoxShipSecurityLevel.SelectedIndex == -1)
|
||||||
this.LastTenPortFacilitiesCalled.PortFacilityShipSecurityLevel = null;
|
this.LastTenPortFacilitiesCalled.PortFacilityShipSecurityLevel = null;
|
||||||
else
|
else
|
||||||
this.LastTenPortFacilitiesCalled.PortFacilityShipSecurityLevel = (byte?) (this.comboBoxShipSecurityLevel.SelectedIndex + 1);
|
this.LastTenPortFacilitiesCalled.PortFacilityShipSecurityLevel = (byte?) (this.comboBoxShipSecurityLevel.SelectedIndex + 1);
|
||||||
this.LastTenPortFacilitiesCalled.PortFacilityGISISCodeLocode = this.locodeGISIS.LocodeValue;
|
this.LastTenPortFacilitiesCalled.PortFacilityGISISCodeLocode = this.locodeGISIS.LocodeValue;
|
||||||
this.LastTenPortFacilitiesCalled.PortFacilitySecurityMattersToReport = this.textBoxSecurityMatters.Text;
|
this.LastTenPortFacilitiesCalled.PortFacilitySecurityMattersToReport = this.textBoxSecurityMatters.Text.Trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void EditLast10PortFacilitiesDialog_OKClicked()
|
private void EditLast10PortFacilitiesDialog_OKClicked()
|
||||||
{
|
{
|
||||||
this.CopyValuesToEntity();
|
this.CopyValuesToEntity();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void textBoxGisisCode_PreviewTextInput(object sender, System.Windows.Input.TextCompositionEventArgs e)
|
||||||
|
{
|
||||||
|
e.Handled = !e.Text.IsDigitsOnly();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void textBoxGisisCode_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e)
|
||||||
|
{
|
||||||
|
if(e.Key == System.Windows.Input.Key.Space) e.Handled = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,7 +34,7 @@
|
|||||||
<Label Name="labelNationality" Grid.Row="2" Grid.Column="0" Content="{x:Static p:Resources.textNationality}" />
|
<Label Name="labelNationality" Grid.Row="2" Grid.Column="0" Content="{x:Static p:Resources.textNationality}" />
|
||||||
<Label Name="labelDateOfBirth" Grid.Row="2" Grid.Column="2" Content="{x:Static p:Resources.textDateOfBirth}" />
|
<Label Name="labelDateOfBirth" Grid.Row="2" Grid.Column="2" Content="{x:Static p:Resources.textDateOfBirth}" />
|
||||||
<Label Name="labelIdDocType" Grid.Row="3" Grid.Column="0" Content="{x:Static p:Resources.textIdDocType}" />
|
<Label Name="labelIdDocType" Grid.Row="3" Grid.Column="0" Content="{x:Static p:Resources.textIdDocType}" />
|
||||||
<!--<Label Name="labelCountryOfBirth" Grid.Row="3" Grid.Column="2" Content="{x:Static p:Resources.textCountryOfBirth}" />-->
|
<Label Name="labelCountryOfBirth" Grid.Row="3" Grid.Column="2" Content="{x:Static p:Resources.textCountryOfBirth}" />
|
||||||
<Label Name="labelIdDocNumber" Grid.Row="4" Grid.Column="2" Content="{x:Static p:Resources.textIdDocNumber}" />
|
<Label Name="labelIdDocNumber" Grid.Row="4" Grid.Column="2" Content="{x:Static p:Resources.textIdDocNumber}" />
|
||||||
<Label Name="labelVisaNumber" Grid.Row="4" Grid.Column="0" Content="{x:Static p:Resources.textVisaNumber}" />
|
<Label Name="labelVisaNumber" Grid.Row="4" Grid.Column="0" Content="{x:Static p:Resources.textVisaNumber}" />
|
||||||
<Label Name="labelPortOfEmbarkation" Grid.Row="5" Grid.Column="2" Content="{x:Static p:Resources.textPortOfEmbarkation}" />
|
<Label Name="labelPortOfEmbarkation" Grid.Row="5" Grid.Column="2" Content="{x:Static p:Resources.textPortOfEmbarkation}" />
|
||||||
@ -42,35 +42,37 @@
|
|||||||
<Label Name="labelTransitPassenger" Grid.Row="6" Grid.Column="2" Content="{x:Static p:Resources.textTransitPassenger}" />
|
<Label Name="labelTransitPassenger" Grid.Row="6" Grid.Column="2" Content="{x:Static p:Resources.textTransitPassenger}" />
|
||||||
<Label Name="labelIssuingState" Grid.Row="6" Grid.Column="0" Content="{x:Static p:Resources.textDocumentIssuingState}" />
|
<Label Name="labelIssuingState" Grid.Row="6" Grid.Column="0" Content="{x:Static p:Resources.textDocumentIssuingState}" />
|
||||||
<Label Name="labelExpiryDate" Grid.Row="7" Grid.Column="2" Content="{x:Static p:Resources.textDocumentExpiryDate}" />
|
<Label Name="labelExpiryDate" Grid.Row="7" Grid.Column="2" Content="{x:Static p:Resources.textDocumentExpiryDate}" />
|
||||||
<!--<Label Name="labelEmergencyCare" Grid.Row="7" Grid.Column="0" Content="{x:Static p:Resources.textEmergencyCare}" />
|
<Label Name="labelEmergencyCare" Grid.Row="7" Grid.Column="0" Content="{x:Static p:Resources.textEmergencyCare}" />
|
||||||
<Label Name="labelEmergencyContactNumber" Grid.Row="8" Grid.Column="0" Content="{x:Static p:Resources.textEmergencyContactNumber}" />-->
|
<Label Name="labelEmergencyContactNumber" Grid.Row="8" Grid.Column="0" Content="{x:Static p:Resources.textEmergencyContactNumber}" />
|
||||||
|
|
||||||
<TextBox Grid.Row="0" Grid.Column="1" Width="auto" Name="textBoxLastName" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
<TextBox Grid.Row="0" Grid.Column="1" Width="auto" Name="textBoxLastName" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
||||||
<TextBox Grid.Row="0" Grid.Column="3" Width="auto" Name="textBoxFirstName" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
|
||||||
<ComboBox Grid.Row="1" Grid.Column="1" Name="comboBoxGender" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True"/>
|
<ComboBox Grid.Row="1" Grid.Column="1" Name="comboBoxGender" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True"/>
|
||||||
<TextBox Grid.Row="1" Grid.Column="3" Width="auto" Name="textBoxPlaceOfBirth" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
|
||||||
<ComboBox Grid.Row="2" Grid.Column="1" Name="comboBoxNationality" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" />
|
<ComboBox Grid.Row="2" Grid.Column="1" Name="comboBoxNationality" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" />
|
||||||
|
<ComboBox Grid.Row="3" Grid.Column="1" Name="comboBoxIdDocType" Margin="2" IsEditable="True" SelectedValuePath="Key" DisplayMemberPath="Value" StaysOpenOnEdit="True" IsTextSearchEnabled="True" />
|
||||||
|
<TextBox Grid.Row="4" Grid.Column="1" Width="auto" Name="textBoxVisaNumber" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
||||||
|
<enictrl:LocodeControl x:Name="locodePortOfDisembarkation" Grid.Row="5" Grid.Column="1" />
|
||||||
|
<ComboBox Grid.Row="6" Grid.Column="1" Name="comboBoxIssuingState" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" />
|
||||||
|
<TextBox Grid.Row="7" Grid.Column="1" Width="auto" Name="textBoxEmergencyCare" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
||||||
|
<TextBox Grid.Row="8" Grid.Column="1" Width="auto" Name="textBoxEmergencyContactNumber" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
||||||
|
|
||||||
|
<TextBox Grid.Row="0" Grid.Column="3" Width="auto" Name="textBoxFirstName" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
||||||
|
<TextBox Grid.Row="1" Grid.Column="3" Width="auto" Name="textBoxPlaceOfBirth" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
||||||
<DatePicker Grid.Row="2" Grid.Column="3" Name="datePickerDateOfBirth" Margin="2" DisplayDateStart="1/1/1900" DisplayDateEnd="12/31/2199" PreviewKeyUp="DateTimePicker_PreviewKeyUpDate">
|
<DatePicker Grid.Row="2" Grid.Column="3" Name="datePickerDateOfBirth" Margin="2" DisplayDateStart="1/1/1900" DisplayDateEnd="12/31/2199" PreviewKeyUp="DateTimePicker_PreviewKeyUpDate">
|
||||||
<DatePicker.BlackoutDates>
|
<DatePicker.BlackoutDates>
|
||||||
<CalendarDateRange Start="1/1/0001" End="12/31/1899"/>
|
<CalendarDateRange Start="1/1/0001" End="12/31/1899"/>
|
||||||
<CalendarDateRange Start="1/1/2199" End="1/1/9999"/>
|
<CalendarDateRange Start="1/1/2199" End="1/1/9999"/>
|
||||||
</DatePicker.BlackoutDates>
|
</DatePicker.BlackoutDates>
|
||||||
</DatePicker>
|
</DatePicker>
|
||||||
<ComboBox Grid.Row="3" Grid.Column="1" Name="comboBoxIdDocType" Margin="2" IsEditable="True" SelectedValuePath="Key" DisplayMemberPath="Value" StaysOpenOnEdit="True" IsTextSearchEnabled="True" />
|
<ComboBox Grid.Row="3" Grid.Column="3" Name="comboBoxCountryOfBirth" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" />
|
||||||
<!--<ComboBox Grid.Row="3" Grid.Column="3" Name="comboBoxCountryOfBirth" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" />-->
|
|
||||||
<TextBox Grid.Row="4" Grid.Column="3" Width="auto" Name="textBoxIdDocNumber" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
<TextBox Grid.Row="4" Grid.Column="3" Width="auto" Name="textBoxIdDocNumber" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
||||||
<TextBox Grid.Row="4" Grid.Column="1" Width="auto" Name="textBoxVisaNumber" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
|
||||||
<enictrl:LocodeControl x:Name="locodePortOfEmbarkation" Grid.Row="5" Grid.Column="3" />
|
<enictrl:LocodeControl x:Name="locodePortOfEmbarkation" Grid.Row="5" Grid.Column="3" />
|
||||||
<enictrl:LocodeControl x:Name="locodePortOfDisembarkation" Grid.Row="5" Grid.Column="1" />
|
|
||||||
<CheckBox Name="checkBoxTransitPassenger" Grid.Row="6" Grid.Column="3" VerticalAlignment="Center" Margin="2"/>
|
<CheckBox Name="checkBoxTransitPassenger" Grid.Row="6" Grid.Column="3" VerticalAlignment="Center" Margin="2"/>
|
||||||
<ComboBox Grid.Row="6" Grid.Column="1" Name="comboBoxIssuingState" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" />
|
|
||||||
<DatePicker Grid.Row="7" Grid.Column="3" Name="datePickerExpiryDate" Margin="2" DisplayDateStart="1/1/1900" DisplayDateEnd="12/31/2199" PreviewKeyUp="DateTimePicker_PreviewKeyUpDate">
|
<DatePicker Grid.Row="7" Grid.Column="3" Name="datePickerExpiryDate" Margin="2" DisplayDateStart="1/1/1900" DisplayDateEnd="12/31/2199" PreviewKeyUp="DateTimePicker_PreviewKeyUpDate">
|
||||||
<DatePicker.BlackoutDates>
|
<DatePicker.BlackoutDates>
|
||||||
<CalendarDateRange Start="1/1/0001" End="12/31/1899"/>
|
<CalendarDateRange Start="1/1/0001" End="12/31/1899"/>
|
||||||
<CalendarDateRange Start="1/1/2199" End="1/1/9999"/>
|
<CalendarDateRange Start="1/1/2199" End="1/1/9999"/>
|
||||||
</DatePicker.BlackoutDates>
|
</DatePicker.BlackoutDates>
|
||||||
</DatePicker>
|
</DatePicker>
|
||||||
<!--<TextBox Grid.Row="7" Grid.Column="1" Width="auto" Name="textBoxEmergencyCare" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
|
||||||
<TextBox Grid.Row="8" Grid.Column="1" Width="auto" Name="textBoxEmergencyContactNumber" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />-->
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</enictrl:EditWindowBase>
|
</enictrl:EditWindowBase>
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
// Description: PAS Bearbeitungsdialog
|
// Description: PAS Bearbeitungsdialog
|
||||||
//
|
//
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
|
|
||||||
using bsmd.database;
|
using bsmd.database;
|
||||||
@ -14,7 +15,8 @@ namespace ENI2.EditControls
|
|||||||
/// Interaction logic for EditPasDialog.xaml
|
/// Interaction logic for EditPasDialog.xaml
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class EditPASDialog : EditWindowBase
|
public partial class EditPASDialog : EditWindowBase
|
||||||
{
|
{
|
||||||
|
|
||||||
public EditPASDialog()
|
public EditPASDialog()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
@ -34,7 +36,18 @@ namespace ENI2.EditControls
|
|||||||
this.textBoxPlaceOfBirth.Text = this.PAS.PassengerPlaceOfBirth;
|
this.textBoxPlaceOfBirth.Text = this.PAS.PassengerPlaceOfBirth;
|
||||||
this.comboBoxNationality.ItemsSource = bsmd.database.CREW.NationalityDict;
|
this.comboBoxNationality.ItemsSource = bsmd.database.CREW.NationalityDict;
|
||||||
this.comboBoxNationality.SelectedValue = this.PAS.PassengerNationality;
|
this.comboBoxNationality.SelectedValue = this.PAS.PassengerNationality;
|
||||||
this.datePickerDateOfBirth.SelectedDate = this.PAS.PassengerDateOfBirth;
|
if (this.PAS.PassengerDateOfBirth > CREW.CLAMPMAXDATE)
|
||||||
|
{
|
||||||
|
this.datePickerDateOfBirth.SelectedDate = CREW.CLAMPMAXDATE;
|
||||||
|
}
|
||||||
|
else if (this.PAS.PassengerDateOfBirth < CREW.CLAMPMINDATE)
|
||||||
|
{
|
||||||
|
this.datePickerDateOfBirth.SelectedDate = CREW.CLAMPMINDATE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.datePickerDateOfBirth.SelectedDate = this.PAS.PassengerDateOfBirth;
|
||||||
|
}
|
||||||
this.comboBoxIdDocType.ItemsSource = GlobalStructures.IDDocTypeDict;
|
this.comboBoxIdDocType.ItemsSource = GlobalStructures.IDDocTypeDict;
|
||||||
this.comboBoxIdDocType.SelectedValue = this.PAS.PassengerIdentityDocumentType?.ToString();
|
this.comboBoxIdDocType.SelectedValue = this.PAS.PassengerIdentityDocumentType?.ToString();
|
||||||
this.textBoxIdDocNumber.Text = this.PAS.PassengerIdentityDocumentId;
|
this.textBoxIdDocNumber.Text = this.PAS.PassengerIdentityDocumentId;
|
||||||
@ -44,13 +57,24 @@ namespace ENI2.EditControls
|
|||||||
this.checkBoxTransitPassenger.IsChecked = this.PAS.PassengerInTransit;
|
this.checkBoxTransitPassenger.IsChecked = this.PAS.PassengerInTransit;
|
||||||
this.comboBoxIssuingState.ItemsSource = bsmd.database.CREW.NationalityDict;
|
this.comboBoxIssuingState.ItemsSource = bsmd.database.CREW.NationalityDict;
|
||||||
this.comboBoxIssuingState.SelectedValue = this.PAS.PassengerIdentityDocumentIssuingState;
|
this.comboBoxIssuingState.SelectedValue = this.PAS.PassengerIdentityDocumentIssuingState;
|
||||||
if(this.PAS.PassengerIdentityDocumentExpiryDate.HasValue)
|
|
||||||
|
if (this.PAS.PassengerIdentityDocumentExpiryDate > CREW.CLAMPMAXDATE)
|
||||||
|
{
|
||||||
|
this.datePickerExpiryDate.SelectedDate = CREW.CLAMPMAXDATE;
|
||||||
|
}
|
||||||
|
else if (this.PAS.PassengerIdentityDocumentExpiryDate < CREW.CLAMPMINDATE)
|
||||||
|
{
|
||||||
|
this.datePickerExpiryDate.SelectedDate = CREW.CLAMPMINDATE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
this.datePickerExpiryDate.SelectedDate = this.PAS.PassengerIdentityDocumentExpiryDate;
|
this.datePickerExpiryDate.SelectedDate = this.PAS.PassengerIdentityDocumentExpiryDate;
|
||||||
// XXX : TODO
|
}
|
||||||
//this.comboBoxCountryOfBirth.ItemsSource = bsmd.database.CREW.NationalityDict;
|
|
||||||
//this.comboBoxCountryOfBirth.SelectedValue = this.PAS.PassengerCountryOfBirth;
|
this.comboBoxCountryOfBirth.ItemsSource = bsmd.database.CREW.NationalityDict;
|
||||||
//this.textBoxEmergencyCare.Text = this.PAS.EmergencyCare;
|
this.comboBoxCountryOfBirth.SelectedValue = this.PAS.PassengerCountryOfBirth;
|
||||||
//this.textBoxEmergencyContactNumber.Text = this.PAS.EmergencyContactNumber;
|
this.textBoxEmergencyCare.Text = this.PAS.EmergencyCare;
|
||||||
|
this.textBoxEmergencyContactNumber.Text = this.PAS.EmergencyContactNumber;
|
||||||
|
|
||||||
this.OKClicked += EditPasDialog_OKClicked;
|
this.OKClicked += EditPasDialog_OKClicked;
|
||||||
this.AddVisible = true;
|
this.AddVisible = true;
|
||||||
@ -73,10 +97,10 @@ namespace ENI2.EditControls
|
|||||||
this.PAS.PassengerInTransit = this.checkBoxTransitPassenger.IsChecked;
|
this.PAS.PassengerInTransit = this.checkBoxTransitPassenger.IsChecked;
|
||||||
this.PAS.PassengerIdentityDocumentIssuingState = (this.comboBoxIssuingState.SelectedValue == null) ? "" : (string)this.comboBoxIssuingState.SelectedValue;
|
this.PAS.PassengerIdentityDocumentIssuingState = (this.comboBoxIssuingState.SelectedValue == null) ? "" : (string)this.comboBoxIssuingState.SelectedValue;
|
||||||
this.PAS.PassengerIdentityDocumentExpiryDate = this.datePickerExpiryDate.SelectedDate;
|
this.PAS.PassengerIdentityDocumentExpiryDate = this.datePickerExpiryDate.SelectedDate;
|
||||||
// XXX : TODO
|
|
||||||
// this.PAS.PassengerCountryOfBirth = (this.comboBoxCountryOfBirth.SelectedValue == null) ? "" : (string)this.comboBoxCountryOfBirth.SelectedValue;
|
this.PAS.PassengerCountryOfBirth = (this.comboBoxCountryOfBirth.SelectedValue == null) ? "" : (string)this.comboBoxCountryOfBirth.SelectedValue;
|
||||||
//this.PAS.EmergencyCare = this.textBoxEmergencyCare.Text.Trim();
|
this.PAS.EmergencyCare = this.textBoxEmergencyCare.Text.Trim();
|
||||||
//this.PAS.EmergencyContactNumber = this.textBoxEmergencyContactNumber.Text.Trim();
|
this.PAS.EmergencyContactNumber = this.textBoxEmergencyContactNumber.Text.Trim();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void EditPasDialog_OKClicked()
|
private void EditPasDialog_OKClicked()
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||||
xmlns:p="clr-namespace:ENI2.Properties"
|
xmlns:p="clr-namespace:ENI2.Properties"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Title="{x:Static p:Resources.textReportingParty}" Height="350" Width="800" WindowStyle="SingleBorderWindow" Background="AliceBlue">
|
Title="{x:Static p:Resources.textReportingParty}" Height="378" Width="800" WindowStyle="SingleBorderWindow" Background="AliceBlue">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="28" />
|
<RowDefinition Height="28" />
|
||||||
@ -21,6 +21,7 @@
|
|||||||
<RowDefinition Height="28" />
|
<RowDefinition Height="28" />
|
||||||
<RowDefinition Height="28" />
|
<RowDefinition Height="28" />
|
||||||
<RowDefinition Height="28" />
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="2*" />
|
<ColumnDefinition Width="2*" />
|
||||||
@ -46,9 +47,10 @@
|
|||||||
<Label Name="labelUserEMail" Grid.Row="7" Grid.Column="0" Content="{x:Static p:Resources.textEMail}" HorizontalContentAlignment="Right" />
|
<Label Name="labelUserEMail" Grid.Row="7" Grid.Column="0" Content="{x:Static p:Resources.textEMail}" HorizontalContentAlignment="Right" />
|
||||||
<Label Name="labelAdmin" Grid.Row="7" Grid.Column="2" Content="{x:Static p:Resources.textAdministrator}" HorizontalContentAlignment="Right" />
|
<Label Name="labelAdmin" Grid.Row="7" Grid.Column="2" Content="{x:Static p:Resources.textAdministrator}" HorizontalContentAlignment="Right" />
|
||||||
<Label Name="labelArchived" Grid.Row="8" Grid.Column="0" Content="{x:Static p:Resources.textArchived}" HorizontalContentAlignment="Right" />
|
<Label Name="labelArchived" Grid.Row="8" Grid.Column="0" Content="{x:Static p:Resources.textArchived}" HorizontalContentAlignment="Right" />
|
||||||
<Label Name="labelCreated" Grid.Row="9" Grid.Column="0" Content="{x:Static p:Resources.textCreated}" HorizontalContentAlignment="Right" />
|
|
||||||
<Label Name="labelChanged" Grid.Row="9" Grid.Column="2" Content="{x:Static p:Resources.textChanged}" HorizontalContentAlignment="Right" />
|
|
||||||
<Label Name="labelEditor" Grid.Row="8" Grid.Column="2" Content="{x:Static p:Resources.textEditor}" HorizontalContentAlignment="Right" />
|
<Label Name="labelEditor" Grid.Row="8" Grid.Column="2" Content="{x:Static p:Resources.textEditor}" HorizontalContentAlignment="Right" />
|
||||||
|
|
||||||
|
<Label Name="labelCreated" Grid.Row="10" Grid.Column="0" Content="{x:Static p:Resources.textCreated}" HorizontalContentAlignment="Right" />
|
||||||
|
<Label Name="labelChanged" Grid.Row="10" Grid.Column="2" Content="{x:Static p:Resources.textChanged}" HorizontalContentAlignment="Right" />
|
||||||
|
|
||||||
<TextBox Grid.Row="0" Grid.Column="1" Width="auto" Name="textBoxName" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
<TextBox Grid.Row="0" Grid.Column="1" Width="auto" Name="textBoxName" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
||||||
<TextBox Grid.Row="0" Grid.Column="3" Width="auto" Name="textBoxEMail" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
<TextBox Grid.Row="0" Grid.Column="3" Width="auto" Name="textBoxEMail" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
||||||
@ -67,9 +69,8 @@
|
|||||||
<CheckBox Grid.Row="7" Grid.Column="3" VerticalAlignment="Center" Name="checkBoxAdministrator" Margin="2" />
|
<CheckBox Grid.Row="7" Grid.Column="3" VerticalAlignment="Center" Name="checkBoxAdministrator" Margin="2" />
|
||||||
<CheckBox Grid.Row="8" Grid.Column="3" VerticalAlignment="Center" Name="checkBoxEditor" Margin="2" />
|
<CheckBox Grid.Row="8" Grid.Column="3" VerticalAlignment="Center" Name="checkBoxEditor" Margin="2" />
|
||||||
<CheckBox Grid.Row="8" Grid.Column="1" VerticalAlignment="Center" Name="checkBoxArchived" Margin="2" />
|
<CheckBox Grid.Row="8" Grid.Column="1" VerticalAlignment="Center" Name="checkBoxArchived" Margin="2" />
|
||||||
|
<Label Grid.Row="10" Grid.Column="1" Name="dateTimePickerCreated" FontStyle="Italic" />
|
||||||
<Label Grid.Row="9" Grid.Column="1" Name="dateTimePickerCreated" FontStyle="Italic" />
|
<Label Grid.Row="10" Grid.Column="3" Name="dateTimePickerChanged" FontStyle="Italic" />
|
||||||
<Label Grid.Row="9" Grid.Column="3" Name="dateTimePickerChanged" FontStyle="Italic" />
|
|
||||||
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</enictrl:EditWindowBase>
|
</enictrl:EditWindowBase>
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
// Description: Reporting party Bearbeitungsdialog
|
// Description: Reporting party Bearbeitungsdialog
|
||||||
//
|
//
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
|
|
||||||
using bsmd.database;
|
using bsmd.database;
|
||||||
@ -24,6 +25,7 @@ namespace ENI2.EditControls
|
|||||||
|
|
||||||
private void EditReportingPartyDialog_Loaded(object sender, RoutedEventArgs e)
|
private void EditReportingPartyDialog_Loaded(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
|
|
||||||
this.textBoxCity.Text = this.ReportingParty.City;
|
this.textBoxCity.Text = this.ReportingParty.City;
|
||||||
this.textBoxCountry.Text = this.ReportingParty.Country;
|
this.textBoxCountry.Text = this.ReportingParty.Country;
|
||||||
this.textBoxEMail.Text = this.ReportingParty.EMail;
|
this.textBoxEMail.Text = this.ReportingParty.EMail;
|
||||||
@ -40,6 +42,7 @@ namespace ENI2.EditControls
|
|||||||
this.checkBoxAdministrator.IsChecked = this.ReportingParty.IsAdmin;
|
this.checkBoxAdministrator.IsChecked = this.ReportingParty.IsAdmin;
|
||||||
this.checkBoxArchived.IsChecked = this.ReportingParty.IsArchived;
|
this.checkBoxArchived.IsChecked = this.ReportingParty.IsArchived;
|
||||||
this.checkBoxEditor.IsChecked = this.ReportingParty.IsEditor;
|
this.checkBoxEditor.IsChecked = this.ReportingParty.IsEditor;
|
||||||
|
|
||||||
|
|
||||||
this.dateTimePickerChanged.Content = this.ReportingParty.Changed.HasValue ? this.ReportingParty.Changed.ToString() : "";
|
this.dateTimePickerChanged.Content = this.ReportingParty.Changed.HasValue ? this.ReportingParty.Changed.ToString() : "";
|
||||||
this.dateTimePickerCreated.Content = this.ReportingParty.Created.HasValue ? this.ReportingParty.Created.ToString() : "";
|
this.dateTimePickerCreated.Content = this.ReportingParty.Created.HasValue ? this.ReportingParty.Created.ToString() : "";
|
||||||
@ -61,7 +64,7 @@ namespace ENI2.EditControls
|
|||||||
this.ReportingParty.PostalCode = this.textBoxPostalCode.Text.Trim();
|
this.ReportingParty.PostalCode = this.textBoxPostalCode.Text.Trim();
|
||||||
this.ReportingParty.StreetAndNumber = this.textBoxStreetNumber.Text.Trim();
|
this.ReportingParty.StreetAndNumber = this.textBoxStreetNumber.Text.Trim();
|
||||||
this.ReportingParty.UserEMail = this.textBoxUserEMail.Text.Trim();
|
this.ReportingParty.UserEMail = this.textBoxUserEMail.Text.Trim();
|
||||||
this.ReportingParty.Logon = this.textBoxUserLogon.Text.Trim();
|
this.ReportingParty.Logon = this.textBoxUserLogon.Text.Trim();
|
||||||
|
|
||||||
if(!this.passwordBoxPassword.Password.IsNullOrEmpty())
|
if(!this.passwordBoxPassword.Password.IsNullOrEmpty())
|
||||||
{
|
{
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||||
xmlns:p="clr-namespace:ENI2.Properties"
|
xmlns:p="clr-namespace:ENI2.Properties"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Title="{x:Static p:Resources.textEditRules}" Height="402" Width="800" WindowStyle="SingleBorderWindow" Background="AliceBlue" Icon="/ENI2;component/Resources/mail_forward.png">
|
Title="{x:Static p:Resources.textEditRules}" Height="402" Width="800" WindowStyle="SingleBorderWindow" Background="AliceBlue" Icon="/ENI2Test;component/Resources/mail_forward.png">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="32" />
|
<RowDefinition Height="32" />
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
// Copyright (c) 2017 schick Informatik
|
// Copyright (c) 2017 schick Informatik
|
||||||
// Description:
|
// Description: Edit SERV and SERV_template entities
|
||||||
//
|
//
|
||||||
|
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
@ -14,36 +14,78 @@ namespace ENI2.EditControls
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class EditSERVDialog : EditWindowBase
|
public partial class EditSERVDialog : EditWindowBase
|
||||||
{
|
{
|
||||||
|
|
||||||
|
#region Construction
|
||||||
|
|
||||||
public EditSERVDialog()
|
public EditSERVDialog()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
Loaded += EditSERVDialog_Loaded;
|
Loaded += EditSERVDialog_Loaded;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Properties
|
||||||
|
|
||||||
|
public SERV SERV { get; set; }
|
||||||
|
|
||||||
|
public SERV_Template SERV_Template { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region event handler
|
||||||
|
|
||||||
private void EditSERVDialog_Loaded(object sender, RoutedEventArgs e)
|
private void EditSERVDialog_Loaded(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
this.OKClicked += EditSERVDialog_OKClicked;
|
this.OKClicked += EditSERVDialog_OKClicked;
|
||||||
|
|
||||||
// copy into fields
|
// copy into fields
|
||||||
this.textBoxServiceName.Text = this.SERV.ServiceName;
|
if (this.SERV != null)
|
||||||
this.textBoxServiceBeneficiary.Text = this.SERV.ServiceBeneficiary;
|
{
|
||||||
this.textBoxServiceInvoiceRecipient.Text = this.SERV.ServiceInvoiceRecipient;
|
this.textBoxServiceName.Text = this.SERV.ServiceName;
|
||||||
this.AddVisible = true;
|
this.textBoxServiceBeneficiary.Text = this.SERV.ServiceBeneficiary;
|
||||||
|
this.textBoxServiceInvoiceRecipient.Text = this.SERV.ServiceInvoiceRecipient;
|
||||||
|
this.AddVisible = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.SERV_Template != null)
|
||||||
|
{
|
||||||
|
this.textBoxServiceName.Text = this.SERV_Template.ServiceName;
|
||||||
|
this.textBoxServiceBeneficiary.Text = this.SERV_Template.ServiceBeneficiary;
|
||||||
|
this.textBoxServiceInvoiceRecipient.Text = this.SERV_Template.ServiceInvoiceRecipient;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
private void EditSERVDialog_OKClicked()
|
||||||
|
{
|
||||||
|
this.CopyValuesToEntity();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region public methods
|
||||||
|
|
||||||
public void CopyValuesToEntity()
|
public void CopyValuesToEntity()
|
||||||
{
|
{
|
||||||
// copy back
|
|
||||||
this.SERV.ServiceName = this.textBoxServiceName.Text.Trim();
|
if (this.SERV != null)
|
||||||
this.SERV.ServiceBeneficiary = this.textBoxServiceBeneficiary.Text.Trim();
|
{
|
||||||
this.SERV.ServiceInvoiceRecipient = this.textBoxServiceInvoiceRecipient.Text.Trim();
|
// copy back
|
||||||
|
this.SERV.ServiceName = this.textBoxServiceName.Text.Trim();
|
||||||
|
this.SERV.ServiceBeneficiary = this.textBoxServiceBeneficiary.Text.Trim();
|
||||||
|
this.SERV.ServiceInvoiceRecipient = this.textBoxServiceInvoiceRecipient.Text.Trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.SERV_Template != null)
|
||||||
|
{
|
||||||
|
// copy back
|
||||||
|
this.SERV_Template.ServiceName = this.textBoxServiceName.Text.Trim();
|
||||||
|
this.SERV_Template.ServiceBeneficiary = this.textBoxServiceBeneficiary.Text.Trim();
|
||||||
|
this.SERV_Template.ServiceInvoiceRecipient = this.textBoxServiceInvoiceRecipient.Text.Trim();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void EditSERVDialog_OKClicked()
|
#endregion
|
||||||
{
|
|
||||||
this.CopyValuesToEntity();
|
|
||||||
}
|
|
||||||
|
|
||||||
public SERV SERV { get; set; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -38,11 +38,11 @@
|
|||||||
<Label Name="labelWasteCodeText" Grid.Row="0" Grid.Column="2" />
|
<Label Name="labelWasteCodeText" Grid.Row="0" Grid.Column="2" />
|
||||||
<TextBox Name="textBoxDescription" Grid.Row="1" Grid.Column="1" Margin="2" Grid.ColumnSpan="2" Width="auto" MaxLength="99" TextWrapping="Wrap" />
|
<TextBox Name="textBoxDescription" Grid.Row="1" Grid.Column="1" Margin="2" Grid.ColumnSpan="2" Width="auto" MaxLength="99" TextWrapping="Wrap" />
|
||||||
|
|
||||||
<xctk:DoubleUpDown Grid.Row="2" Grid.Column="1" Name="doubleUpDownAmountDisposed" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2" FormatString="N3" TextAlignment="Left"/>
|
<xctk:DoubleUpDown Grid.Row="2" Grid.Column="1" Name="doubleUpDownAmountDisposed" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2" FormatString="N3" TextAlignment="Left" Maximum="9999.999" />
|
||||||
<xctk:DoubleUpDown Grid.Row="3" Grid.Column="1" Name="doubleUpDownMaxCapacity" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2" FormatString="N3" TextAlignment="Left"/>
|
<xctk:DoubleUpDown Grid.Row="3" Grid.Column="1" Name="doubleUpDownMaxCapacity" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2" FormatString="N3" TextAlignment="Left" Maximum="9999.999"/>
|
||||||
<xctk:DoubleUpDown Grid.Row="4" Grid.Column="1" Name="doubleUpDownAmountRetained" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2" FormatString="N3" TextAlignment="Left"/>
|
<xctk:DoubleUpDown Grid.Row="4" Grid.Column="1" Name="doubleUpDownAmountRetained" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2" FormatString="N3" TextAlignment="Left" Maximum="9999.999"/>
|
||||||
<enictrl:LocodeControl Grid.Row="5" Grid.Column="1" x:Name="locodePortOfDeliveryRemainingWaste" LocodeSource="SSN" />
|
<enictrl:LocodeControl Grid.Row="5" Grid.Column="1" x:Name="locodePortOfDeliveryRemainingWaste" LocodeSource="SSN" />
|
||||||
<xctk:DoubleUpDown Grid.Row="6" Grid.Column="1" Name="doubleUpDownAmountGeneratedTilNextPort" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2" FormatString="N3" TextAlignment="Left"/>
|
<xctk:DoubleUpDown Grid.Row="6" Grid.Column="1" Name="doubleUpDownAmountGeneratedTilNextPort" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2" FormatString="N3" TextAlignment="Left" Maximum="9999.999"/>
|
||||||
|
|
||||||
<Label Content="{x:Static p:Resources.textCubicMeters}" Grid.Row = "2" Grid.Column="2" />
|
<Label Content="{x:Static p:Resources.textCubicMeters}" Grid.Row = "2" Grid.Column="2" />
|
||||||
<Label Content="{x:Static p:Resources.textCubicMeters}" Grid.Row = "3" Grid.Column="2" />
|
<Label Content="{x:Static p:Resources.textCubicMeters}" Grid.Row = "3" Grid.Column="2" />
|
||||||
|
|||||||
@ -14,6 +14,7 @@
|
|||||||
<RowDefinition Height="28" />
|
<RowDefinition Height="28" />
|
||||||
<RowDefinition Height="28" />
|
<RowDefinition Height="28" />
|
||||||
<RowDefinition Height="28" />
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
<RowDefinition Height="56" />
|
<RowDefinition Height="56" />
|
||||||
<RowDefinition Height="28" />
|
<RowDefinition Height="28" />
|
||||||
<RowDefinition Height="28" />
|
<RowDefinition Height="28" />
|
||||||
@ -30,16 +31,48 @@
|
|||||||
<Label Name="labelIdentificationNumber" Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textIdentificationNumber}" />
|
<Label Name="labelIdentificationNumber" Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textIdentificationNumber}" />
|
||||||
<Label Name="labelPortReceptionFacilityName" Grid.Row="1" Grid.Column="0" Content="{x:Static p:Resources.textPortReceptionFacilityName}" />
|
<Label Name="labelPortReceptionFacilityName" Grid.Row="1" Grid.Column="0" Content="{x:Static p:Resources.textPortReceptionFacilityName}" />
|
||||||
<Label Name="labelPortReceptionFacilityProviderName" Grid.Row="2" Grid.Column="0" Content="{x:Static p:Resources.textPortReceptionFacilityProviderName}" />
|
<Label Name="labelPortReceptionFacilityProviderName" Grid.Row="2" Grid.Column="0" Content="{x:Static p:Resources.textPortReceptionFacilityProviderName}" />
|
||||||
<Label Name="labelTreatmentFacilityProvider" Grid.Row="3" Grid.Column="0" Content="{x:Static p:Resources.textTreatmentFacilityProviderDisplay}" />
|
<Label Name="labelTemplate" Grid.Row="3" Grid.Column="0" Content="{x:Static p:Resources.textAgentTemplate}" />
|
||||||
<Label Name="labelWasteDeliveryDateFrom" Grid.Row="4" Grid.Column="0" Content="{x:Static p:Resources.textWasteDeliveryDateFrom}" />
|
<Label Name="labelTreatmentFacilityProvider" Grid.Row="4" Grid.Column="0" Content="{x:Static p:Resources.textTreatmentFacilityProviderDisplay}" />
|
||||||
<Label Name="labelWasteDeliveryDateTo" Grid.Row="5" Grid.Column="0" Content="{x:Static p:Resources.textWasteDeliveryDateTo}" />
|
<Label Name="labelWasteDeliveryDateFrom" Grid.Row="5" Grid.Column="0" Content="{x:Static p:Resources.textWasteDeliveryDateFrom}" />
|
||||||
|
<Label Name="labelWasteDeliveryDateTo" Grid.Row="6" Grid.Column="0" Content="{x:Static p:Resources.textWasteDeliveryDateTo}" />
|
||||||
|
|
||||||
<TextBox Name="textIdentificationNumber" Grid.Row="0" Grid.Column="1" Width="auto" MaxLength="20" TextWrapping="Wrap" Margin="2" VerticalContentAlignment="Center"/>
|
<TextBox Name="textIdentificationNumber" Grid.Row="0" Grid.Column="1" Width="auto" MaxLength="20" TextWrapping="Wrap" Margin="2" VerticalContentAlignment="Center"/>
|
||||||
<TextBox Name="textBoxPortReceptionFacilityName" Grid.Row="1" Grid.Column="1" Width="auto" MaxLength="70" TextWrapping="Wrap" Margin="2" VerticalContentAlignment="Center"/>
|
<TextBox Name="textBoxPortReceptionFacilityName" Grid.Row="1" Grid.Column="1" Width="auto" MaxLength="70" TextWrapping="Wrap" Margin="2" VerticalContentAlignment="Center"/>
|
||||||
<TextBox Name="textBoxPortReceptionFacilityProviderName" Grid.Row="2" Grid.Column="1" Width="auto" MaxLength="70" TextWrapping="Wrap" Margin="2" VerticalContentAlignment="Center"/>
|
<TextBox Name="textBoxPortReceptionFacilityProviderName" Grid.Row="2" Grid.Column="1" Width="auto" MaxLength="70" TextWrapping="Wrap" Margin="2" VerticalContentAlignment="Center"/>
|
||||||
<TextBox Name="textBoxTreatmentFacilityProvider" Grid.Row="3" Grid.Column="1" Height="56" VerticalContentAlignment="Top" Margin="2"/>
|
<Grid Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="1" Name="gridTemplateControls" Visibility="Visible">
|
||||||
<xctk:DateTimePicker Grid.Row="4" Grid.Column="1" Name="dateTimePickerWasteDeliveryDateFrom" Format="Custom" FormatString="dd.MM.yyyy HH:mm" ShowButtonSpinner="False" VerticalContentAlignment="Center" Margin="2" AllowTextInput="True" ContextMenu="{DynamicResource ClearContextMenu}" TextAlignment="Left" Minimum="1899.12.31 00:00" Maximum="2100.12.31 00:00" PreviewKeyUp="DateTimePicker_PreviewKeyUp"/>
|
<Grid.ColumnDefinitions>
|
||||||
<xctk:DateTimePicker Grid.Row="5" Grid.Column="1" Name="dateTimePickerWasteDeliveryDateTo" Format="Custom" FormatString="dd.MM.yyyy HH:mm" ShowButtonSpinner="False" VerticalContentAlignment="Center" Margin="2" AllowTextInput="True" ContextMenu="{DynamicResource ClearContextMenu}" TextAlignment="Left" Minimum="1899.12.31 00:00" Maximum="2100.12.31 00:00" PreviewKeyUp="DateTimePicker_PreviewKeyUp"/>
|
<ColumnDefinition Width=".5*"/>
|
||||||
|
<ColumnDefinition Width=".5*"/>
|
||||||
|
<!-- Name -->
|
||||||
|
<ColumnDefinition Width="26"/>
|
||||||
|
<!-- Save button -->
|
||||||
|
<ColumnDefinition Width="26"/>
|
||||||
|
<!-- Delete button -->
|
||||||
|
<ColumnDefinition Width="52"/>
|
||||||
|
<!-- Undo button -->
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<ComboBox Grid.Column="0" Name="comboBox_WSDPTemplate" Margin="2" SelectedValuePath="Id" DisplayMemberPath="Remark" SelectionChanged="comboBox_WSDPTemplate_SelectionChanged" />
|
||||||
|
<TextBox Grid.Column="1" Margin="2" Name="textBoxTemplateTitle" VerticalContentAlignment="Center"/>
|
||||||
|
<Button Name="buttonSaveTemplate" Grid.Column="2" Grid.Row="0" Margin="2" Click="buttonSaveTemplate_Click" BorderThickness="0" Background="Transparent" ToolTip="Save template">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<Image Source="../Resources/floppy_disk_blue.png" Margin="0,0,0,0" Height="20" Width="20" />
|
||||||
|
</StackPanel>
|
||||||
|
</Button>
|
||||||
|
<Button Name="buttonDeleteTemplate" Grid.Column="3" Grid.Row="0" Margin="2" Click="buttonDeleteTemplate_Click" BorderThickness="0" Background="Transparent" ToolTip="Delete template" IsEnabled="False">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<Image Source="../Resources/delete.png" Margin="0,0,0,0" Height="20" Width="20" />
|
||||||
|
</StackPanel>
|
||||||
|
</Button>
|
||||||
|
<Button Name="buttonUndoTemplate" Grid.Column="4" Grid.Row="0" Margin="22,2,2,2" Click="buttonUndoTemplate_Click" BorderThickness="0" Background="Transparent" ToolTip="Undo last overwrite" IsEnabled="False">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<Image Source="../Resources/undo.png" Margin="0,0,0,0" Height="20" Width="20" />
|
||||||
|
</StackPanel>
|
||||||
|
</Button>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
<TextBox Name="textBoxTreatmentFacilityProvider" Grid.Row="4" Grid.Column="1" Height="56" VerticalContentAlignment="Top" Margin="2"/>
|
||||||
|
<xctk:DateTimePicker Grid.Row="5" Grid.Column="1" Name="dateTimePickerWasteDeliveryDateFrom" Format="Custom" FormatString="dd.MM.yyyy HH:mm" ShowButtonSpinner="False" VerticalContentAlignment="Center" Margin="2" AllowTextInput="True" ContextMenu="{DynamicResource ClearContextMenu}" TextAlignment="Left" Minimum="1899.12.31 00:00" Maximum="2100.12.31 00:00" PreviewKeyUp="DateTimePicker_PreviewKeyUp"/>
|
||||||
|
<xctk:DateTimePicker Grid.Row="6" Grid.Column="1" Name="dateTimePickerWasteDeliveryDateTo" Format="Custom" FormatString="dd.MM.yyyy HH:mm" ShowButtonSpinner="False" VerticalContentAlignment="Center" Margin="2" AllowTextInput="True" ContextMenu="{DynamicResource ClearContextMenu}" TextAlignment="Left" Minimum="1899.12.31 00:00" Maximum="2100.12.31 00:00" PreviewKeyUp="DateTimePicker_PreviewKeyUp"/>
|
||||||
|
|
||||||
<!--Button x:Name="buttonAddEntries" Grid.Column="1" Grid.Row="7" Margin="2" Click="buttonAddEntries_Click" Width="170" Content="Add waste received entries" HorizontalAlignment="Left"/-->
|
<!--Button x:Name="buttonAddEntries" Grid.Column="1" Grid.Row="7" Margin="2" Click="buttonAddEntries_Click" Width="170" Content="Add waste received entries" HorizontalAlignment="Left"/-->
|
||||||
|
|
||||||
|
|||||||
@ -3,6 +3,8 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
|
|
||||||
using bsmd.database;
|
using bsmd.database;
|
||||||
@ -15,6 +17,13 @@ namespace ENI2.EditControls
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class EditWasteReceiptDialog : EditWindowBase
|
public partial class EditWasteReceiptDialog : EditWindowBase
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// TODO: "unstatic" the templates and take care they are synchronized between controls
|
||||||
|
|
||||||
|
private List<WasteDisposalServiceProvider_Template> _wsdpTemplates = null;
|
||||||
|
private WasteDisposalServiceProvider_Template _currentTemplate;
|
||||||
|
private string _undoTemplate;
|
||||||
|
|
||||||
public EditWasteReceiptDialog()
|
public EditWasteReceiptDialog()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
@ -24,7 +33,7 @@ namespace ENI2.EditControls
|
|||||||
|
|
||||||
public WAS_RCPT WAS_RCPT { get; set; }
|
public WAS_RCPT WAS_RCPT { get; set; }
|
||||||
|
|
||||||
private void EditWasteReceiptDialog_Loaded(object sender, RoutedEventArgs e)
|
private async void EditWasteReceiptDialog_Loaded(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
this.textIdentificationNumber.Text = this.WAS_RCPT.IdentificationNumber;
|
this.textIdentificationNumber.Text = this.WAS_RCPT.IdentificationNumber;
|
||||||
this.textBoxPortReceptionFacilityName.Text = this.WAS_RCPT.PortReceptionFacilityName;
|
this.textBoxPortReceptionFacilityName.Text = this.WAS_RCPT.PortReceptionFacilityName;
|
||||||
@ -35,6 +44,12 @@ namespace ENI2.EditControls
|
|||||||
|
|
||||||
OKClicked += EditWasteReceiptDialog_OKClicked;
|
OKClicked += EditWasteReceiptDialog_OKClicked;
|
||||||
this.AddVisible = true;
|
this.AddVisible = true;
|
||||||
|
|
||||||
|
_wsdpTemplates = await DBManagerAsync.GetWasteDisposalServiceProviderTemplatesAsync();
|
||||||
|
_wsdpTemplates.Sort();
|
||||||
|
Trace.WriteLine($"{_wsdpTemplates.Count} WSDP templates loaded");
|
||||||
|
|
||||||
|
this.comboBox_WSDPTemplate.ItemsSource = _wsdpTemplates;
|
||||||
}
|
}
|
||||||
public void CopyValuesToEntity()
|
public void CopyValuesToEntity()
|
||||||
{
|
{
|
||||||
@ -52,10 +67,87 @@ namespace ENI2.EditControls
|
|||||||
this.CopyValuesToEntity();
|
this.CopyValuesToEntity();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void comboBox_WSDPTemplate_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
|
||||||
// private void buttonAddEntries_Click(object sender, RoutedEventArgs e)
|
{
|
||||||
// {
|
Trace.WriteLine("WSDP combo selection changed");
|
||||||
// this.WAS_RCPT.AddMissingWasteReceived();
|
if (this.comboBox_WSDPTemplate.SelectedItem is WasteDisposalServiceProvider_Template wdsp_t)
|
||||||
// }
|
{
|
||||||
|
this.textBoxTemplateTitle.Text = wdsp_t.Remark;
|
||||||
|
this.buttonDeleteTemplate.IsEnabled = true;
|
||||||
|
this._currentTemplate = wdsp_t;
|
||||||
|
this._undoTemplate = this.textBoxPortReceptionFacilityProviderName.Text.Trim();
|
||||||
|
this.buttonUndoTemplate.IsEnabled = this._undoTemplate.Length > 0;
|
||||||
|
this.textBoxPortReceptionFacilityProviderName.Text = wdsp_t.WasteDisposalServiceProviderName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void buttonSaveTemplate_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
string currentWSDPProviderName = this.textBoxPortReceptionFacilityProviderName.Text.Trim();
|
||||||
|
string currentRemark = this.textBoxTemplateTitle.Text.Trim();
|
||||||
|
|
||||||
|
if ((currentWSDPProviderName.Length == 0) || (currentRemark.Length == 0)) return;
|
||||||
|
|
||||||
|
WasteDisposalServiceProvider_Template existingTemplate = null;
|
||||||
|
foreach (WasteDisposalServiceProvider_Template wdsp_template in _wsdpTemplates)
|
||||||
|
{
|
||||||
|
// bei gefundenem Match wird ggf. der Remark überschrieben
|
||||||
|
if (wdsp_template.Remark.Equals(currentRemark))
|
||||||
|
{
|
||||||
|
existingTemplate = wdsp_template;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (existingTemplate != null)
|
||||||
|
{
|
||||||
|
if (MessageBox.Show("A template with this name already exists, overwrite?", "Confirmation", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.No)
|
||||||
|
return;
|
||||||
|
|
||||||
|
existingTemplate.WasteDisposalServiceProviderName = currentWSDPProviderName;
|
||||||
|
await DBManagerAsync.SaveAsync(existingTemplate);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
WasteDisposalServiceProvider_Template newTemplate = new WasteDisposalServiceProvider_Template();
|
||||||
|
newTemplate.WasteDisposalServiceProviderName = currentWSDPProviderName;
|
||||||
|
newTemplate.Remark = currentRemark;
|
||||||
|
await DBManagerAsync.SaveAsync(newTemplate);
|
||||||
|
|
||||||
|
comboBox_WSDPTemplate.ItemsSource = null;
|
||||||
|
_wsdpTemplates.Add(newTemplate);
|
||||||
|
_wsdpTemplates.Sort();
|
||||||
|
comboBox_WSDPTemplate.ItemsSource = _wsdpTemplates;
|
||||||
|
MessageBox.Show("Template saved", "OK", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonDeleteTemplate_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (_currentTemplate != null)
|
||||||
|
{
|
||||||
|
if (MessageBox.Show("Delete this template?", "Confirmation", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.Yes)
|
||||||
|
{
|
||||||
|
this.comboBox_WSDPTemplate.SelectedItem = null;
|
||||||
|
this.comboBox_WSDPTemplate.ItemsSource = null;
|
||||||
|
DBManager.Instance.Delete(_currentTemplate);
|
||||||
|
_wsdpTemplates.Remove(_currentTemplate);
|
||||||
|
this.textBoxTemplateTitle.Text = null;
|
||||||
|
this.buttonDeleteTemplate.IsEnabled = false;
|
||||||
|
this.comboBox_WSDPTemplate.ItemsSource = _wsdpTemplates;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonUndoTemplate_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (this._undoTemplate != null)
|
||||||
|
{
|
||||||
|
this.textBoxPortReceptionFacilityProviderName.Text = this._undoTemplate;
|
||||||
|
this.buttonUndoTemplate.IsEnabled = false;
|
||||||
|
this._undoTemplate = null;
|
||||||
|
this.comboBox_WSDPTemplate.SelectedItem = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
<ComboBox Name="comboBoxWasteCode" Grid.Row="0" Grid.Column="1" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" />
|
<ComboBox Name="comboBoxWasteCode" Grid.Row="0" Grid.Column="1" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" />
|
||||||
<TextBox Name="textBoxDescription" Grid.Row="1" Margin="2" Grid.Column="1" Width="auto" MaxLength="99" TextWrapping="Wrap" />
|
<TextBox Name="textBoxDescription" Grid.Row="1" Margin="2" Grid.Column="1" Width="auto" MaxLength="99" TextWrapping="Wrap" />
|
||||||
<xctk:DoubleUpDown Grid.Row="2" Grid.Column="1" Name="doubleUpDownAmountReceived" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2" FormatString="N3" TextAlignment="Left"/>
|
<xctk:DoubleUpDown Grid.Row="2" Grid.Column="1" Name="doubleUpDownAmountReceived" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2" FormatString="N3" TextAlignment="Left" Maximum="9999.999"/>
|
||||||
|
|
||||||
</Grid>
|
</Grid>
|
||||||
</enictrl:EditWindowBase>
|
</enictrl:EditWindowBase>
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
xmlns:p="clr-namespace:ENI2.Properties"
|
xmlns:p="clr-namespace:ENI2.Properties"
|
||||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Title="{x:Static p:Resources.textErrors}" Height="300" Width="600" Background="AliceBlue" Icon="/ENI2;component/Resources/bullet_ball_red.ico" Topmost="False">
|
Title="{x:Static p:Resources.textErrors}" Height="300" Width="600" Background="AliceBlue" Icon="/ENI2Test;component/Resources/bullet_ball_red.ico" Topmost="False">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="*" />
|
<RowDefinition Height="*" />
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
xmlns:enictrl="clr-namespace:ENI2.Controls"
|
xmlns:enictrl="clr-namespace:ENI2.Controls"
|
||||||
xmlns:p="clr-namespace:ENI2.Properties"
|
xmlns:p="clr-namespace:ENI2.Properties"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Title="{x:Static p:Resources.textMessageHistory}" Height="450" Width="800" Background="AliceBlue" Icon="/ENI2;component/Resources/clock_history.ico">
|
Title="{x:Static p:Resources.textMessageHistory}" Height="450" Width="800" Background="AliceBlue" Icon="/ENI2Test;component/Resources/clock_history.ico">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="*" />
|
<RowDefinition Height="*" />
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Title="{x:Static p:Resources.textNewDGItem}" Height="350" Width="600" WindowStyle="SingleBorderWindow" Background="AliceBlue" ResizeMode="CanResize"
|
Title="{x:Static p:Resources.textNewDGItem}" Height="350" Width="600" WindowStyle="SingleBorderWindow" Background="AliceBlue" ResizeMode="CanResize"
|
||||||
Icon="/ENI2;component/Resources/bullet_ball_yellow.ico" Loaded="EditWindowBase_Loaded">
|
Icon="/ENI2Test;component/Resources/bullet_ball_yellow.ico" Loaded="EditWindowBase_Loaded">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="28" />
|
<RowDefinition Height="28" />
|
||||||
|
|||||||
@ -18,7 +18,7 @@ namespace ENI2.EditControls
|
|||||||
public partial class NewDGItemDialog : EditWindowBase
|
public partial class NewDGItemDialog : EditWindowBase
|
||||||
{
|
{
|
||||||
private List<HAZPosTemplate> _data = null;
|
private List<HAZPosTemplate> _data = null;
|
||||||
private static object filterLock = new object();
|
private static readonly object filterLock = new object();
|
||||||
|
|
||||||
public NewDGItemDialog()
|
public NewDGItemDialog()
|
||||||
{
|
{
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
xmlns:p="clr-namespace:ENI2.Properties"
|
xmlns:p="clr-namespace:ENI2.Properties"
|
||||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Title="{x:Static p:Resources.textNewWithId}" Height="220" Width="350" WindowStyle="SingleBorderWindow" Background="AliceBlue" ResizeMode="NoResize" Icon="/ENI2;component/Resources/id_card_add.ico">
|
Title="{x:Static p:Resources.textNewWithId}" Height="220" Width="350" WindowStyle="SingleBorderWindow" Background="AliceBlue" ResizeMode="NoResize" Icon="/ENI2Test;component/Resources/id_card_add.ico">
|
||||||
|
|
||||||
<Grid Margin="4">
|
<Grid Margin="4">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
|
|||||||
32
ENI2/EditControls/SelectCrewMemberDialog.xaml
Normal file
32
ENI2/EditControls/SelectCrewMemberDialog.xaml
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
<enictrl:EditWindowBase x:Class="ENI2.EditControls.SelectCrewMemberDialog"
|
||||||
|
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:enictrl="clr-namespace:ENI2.Controls"
|
||||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
xmlns:local="clr-namespace:ENI2.EditControls"
|
||||||
|
xmlns:p="clr-namespace:ENI2.Properties"
|
||||||
|
mc:Ignorable="d"
|
||||||
|
Title="{x:Static p:Resources.textSelectCrewMember}" Height="160" Width="400" Background="AliceBlue">
|
||||||
|
<Grid>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width=".5*" />
|
||||||
|
<ColumnDefinition Width=".5*" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="28"/>
|
||||||
|
<RowDefinition Height="28"/>
|
||||||
|
<RowDefinition Height="28"/>
|
||||||
|
<RowDefinition Height="28"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
|
<Label Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textLastName}" />
|
||||||
|
<Label Grid.Row="1" Grid.Column="0" Content="{x:Static p:Resources.textFirstName}" />
|
||||||
|
<Label Grid.Row="2" Grid.Column="0" Content="{x:Static p:Resources.textCrewFunctionOnBoard}" />
|
||||||
|
|
||||||
|
<TextBlock Text="{Binding CrewMemberLastName}" Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" />
|
||||||
|
<TextBlock Text="{Binding CrewMemberFirstName}" Grid.Row="1" Grid.Column="1" VerticalAlignment="Center" />
|
||||||
|
<TextBlock Text="{Binding CrewMemberDuty}" Grid.Row="2" Grid.Column="1" VerticalAlignment="Center" />
|
||||||
|
|
||||||
|
</Grid>
|
||||||
|
</enictrl:EditWindowBase>
|
||||||
41
ENI2/EditControls/SelectCrewMemberDialog.xaml.cs
Normal file
41
ENI2/EditControls/SelectCrewMemberDialog.xaml.cs
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
// Copyright (c) 2017- schick Informatik
|
||||||
|
// Description:
|
||||||
|
//
|
||||||
|
|
||||||
|
using bsmd.database;
|
||||||
|
using ENI2.Controls;
|
||||||
|
using System.Windows;
|
||||||
|
|
||||||
|
namespace ENI2.EditControls
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Interaction logic for SelectCrewMemberDialog.xaml
|
||||||
|
/// </summary>
|
||||||
|
public partial class SelectCrewMemberDialog : EditWindowBase
|
||||||
|
{
|
||||||
|
public SelectCrewMemberDialog()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
Loaded += SelectCrewMemberDialog_Loaded;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Properties
|
||||||
|
|
||||||
|
public CREW CREW { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region event handler
|
||||||
|
|
||||||
|
private void SelectCrewMemberDialog_Loaded(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if (CREW != null)
|
||||||
|
{
|
||||||
|
this.DataContext = CREW;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -8,7 +8,7 @@
|
|||||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||||
xmlns:p="clr-namespace:ENI2.Properties"
|
xmlns:p="clr-namespace:ENI2.Properties"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Title="{x:Static p:Resources.textSelectImportClasses}" Height="600" Width="250" Background="AliceBlue">
|
Title="{x:Static p:Resources.textSelectImportClasses}" Height="660" Width="250" Background="AliceBlue">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="1*" />
|
<RowDefinition Height="1*" />
|
||||||
|
|||||||
@ -1,14 +1,13 @@
|
|||||||
// Copyright (c) 2017-today schick Informatik
|
// Copyright (c) 2017-today schick Informatik
|
||||||
// Description: Select classes for import
|
// Description: Select classes for import via Excel or for sending them once completed
|
||||||
// Returns: Array of selected classes as property
|
// Returns: Array of selected classes as property
|
||||||
|
|
||||||
|
using bsmd.database;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
|
|
||||||
using bsmd.database;
|
|
||||||
|
|
||||||
namespace ENI2.EditControls
|
namespace ENI2.EditControls
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -17,7 +16,8 @@ namespace ENI2.EditControls
|
|||||||
public partial class SelectImportClassesDialog : ENI2.Controls.EditWindowBase
|
public partial class SelectImportClassesDialog : ENI2.Controls.EditWindowBase
|
||||||
{
|
{
|
||||||
private readonly List<SelectClass> _selectClasses = new List<SelectClass>();
|
private readonly List<SelectClass> _selectClasses = new List<SelectClass>();
|
||||||
private readonly List<bsmd.database.Message.NotificationClass> _selectedClasses = new List<Message.NotificationClass>();
|
private readonly List<Message.NotificationClass> _selectedClasses = new List<Message.NotificationClass>();
|
||||||
|
private readonly List<Message.NotificationClass> _preselectedClasses = new List<Message.NotificationClass>();
|
||||||
|
|
||||||
public SelectImportClassesDialog()
|
public SelectImportClassesDialog()
|
||||||
{
|
{
|
||||||
@ -25,35 +25,61 @@ namespace ENI2.EditControls
|
|||||||
this.Loaded += SelectImportClassesDialog_Loaded;
|
this.Loaded += SelectImportClassesDialog_Loaded;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// List of all message classes that are available for selection
|
||||||
|
/// </summary>
|
||||||
public List<Message.NotificationClass> SelectedClasses
|
public List<Message.NotificationClass> SelectedClasses
|
||||||
{
|
{
|
||||||
get { return _selectedClasses; }
|
get { return _selectedClasses; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Classes that should be checked already when the dialog is opened (relevant for send mode)
|
||||||
|
/// </summary>
|
||||||
|
public List<Message.NotificationClass > PreselectedClasses
|
||||||
|
{
|
||||||
|
get { return _preselectedClasses; }
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// These messages are needed to derive message classes from, already sorted in the right manner
|
/// These messages are needed to derive message classes from, already sorted in the right manner
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<Message> Messages { get; set; }
|
public List<Message> Messages { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Flag to reduce selection amount in case of transit
|
||||||
|
/// </summary>
|
||||||
public bool IsTransit { get; set; }
|
public bool IsTransit { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Flag if dialog is used in import mode (default true). Set false for send all mode.
|
||||||
|
/// </summary>
|
||||||
|
public bool IsImportMode { get; set; } = true;
|
||||||
|
|
||||||
private void SelectImportClassesDialog_Loaded(object sender, RoutedEventArgs e)
|
private void SelectImportClassesDialog_Loaded(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
|
|
||||||
foreach(Message aMessage in this.Messages)
|
|
||||||
|
foreach (Message aMessage in this.Messages)
|
||||||
{
|
{
|
||||||
|
// these are of no interest
|
||||||
if ((aMessage.MessageNotificationClass == Message.NotificationClass.VISIT) ||
|
if ((aMessage.MessageNotificationClass == Message.NotificationClass.VISIT) ||
|
||||||
(aMessage.MessageNotificationClass == Message.NotificationClass.TRANSIT) ||
|
(aMessage.MessageNotificationClass == Message.NotificationClass.TRANSIT) ||
|
||||||
|
(aMessage.MessageNotificationClass == Message.NotificationClass.STO))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// these are neither imported nor sent by the Send all function
|
||||||
|
|
||||||
|
if ((aMessage.MessageNotificationClass == Message.NotificationClass.ATA) ||
|
||||||
|
(aMessage.MessageNotificationClass == Message.NotificationClass.ATD))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
|
||||||
|
// filter out messages not relevant for transit
|
||||||
|
if (IsTransit && (
|
||||||
(aMessage.MessageNotificationClass == Message.NotificationClass.ATA) ||
|
(aMessage.MessageNotificationClass == Message.NotificationClass.ATA) ||
|
||||||
(aMessage.MessageNotificationClass == Message.NotificationClass.ATD) ||
|
(aMessage.MessageNotificationClass == Message.NotificationClass.ATD) ||
|
||||||
(aMessage.MessageNotificationClass == Message.NotificationClass.STO) ||
|
(aMessage.MessageNotificationClass == Message.NotificationClass.BKRD) ||
|
||||||
(aMessage.MessageNotificationClass == Message.NotificationClass.CREWD) || // XXX : TODO remove
|
|
||||||
(aMessage.MessageNotificationClass == Message.NotificationClass.PASD)
|
|
||||||
) continue;
|
|
||||||
|
|
||||||
if (IsTransit &&
|
|
||||||
((aMessage.MessageNotificationClass == Message.NotificationClass.BKRD) ||
|
|
||||||
(aMessage.MessageNotificationClass == Message.NotificationClass.BPOL) ||
|
|
||||||
(aMessage.MessageNotificationClass == Message.NotificationClass.HAZD) ||
|
(aMessage.MessageNotificationClass == Message.NotificationClass.HAZD) ||
|
||||||
(aMessage.MessageNotificationClass == Message.NotificationClass.INFO) ||
|
(aMessage.MessageNotificationClass == Message.NotificationClass.INFO) ||
|
||||||
(aMessage.MessageNotificationClass == Message.NotificationClass.LADG) ||
|
(aMessage.MessageNotificationClass == Message.NotificationClass.LADG) ||
|
||||||
@ -64,15 +90,16 @@ namespace ENI2.EditControls
|
|||||||
(aMessage.MessageNotificationClass == Message.NotificationClass.TOWD) ||
|
(aMessage.MessageNotificationClass == Message.NotificationClass.TOWD) ||
|
||||||
(aMessage.MessageNotificationClass == Message.NotificationClass.WAS) ||
|
(aMessage.MessageNotificationClass == Message.NotificationClass.WAS) ||
|
||||||
(aMessage.MessageNotificationClass == Message.NotificationClass.WAS_RCPT)
|
(aMessage.MessageNotificationClass == Message.NotificationClass.WAS_RCPT)
|
||||||
)) continue;
|
)) continue;
|
||||||
|
|
||||||
SelectClass sc = new SelectClass();
|
SelectClass sc = new SelectClass();
|
||||||
sc.Name = Enum.GetName(typeof(bsmd.database.Message.NotificationClass), aMessage.MessageNotificationClass);
|
sc.Name = Enum.GetName(typeof(Message.NotificationClass), aMessage.MessageNotificationClass);
|
||||||
sc.Class = aMessage.MessageNotificationClass;
|
sc.Class = aMessage.MessageNotificationClass;
|
||||||
sc.IsSelected = false;
|
sc.IsSelected = this._preselectedClasses.Contains(sc.Class);
|
||||||
_selectClasses.Add(sc);
|
_selectClasses.Add(sc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
this.checkListBoxClasses.ItemsSource = _selectClasses;
|
this.checkListBoxClasses.ItemsSource = _selectClasses;
|
||||||
this.OKClicked += SelectImportClassesDialog_OKClicked;
|
this.OKClicked += SelectImportClassesDialog_OKClicked;
|
||||||
}
|
}
|
||||||
@ -99,7 +126,7 @@ namespace ENI2.EditControls
|
|||||||
OnPropertyChanged("IsSelected");
|
OnPropertyChanged("IsSelected");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public event PropertyChangedEventHandler PropertyChanged;
|
public event PropertyChangedEventHandler PropertyChanged;
|
||||||
protected void OnPropertyChanged(string propertyName)
|
protected void OnPropertyChanged(string propertyName)
|
||||||
{
|
{
|
||||||
|
|||||||
53
ENI2/EditControls/SelectPortAreaDialog.xaml
Normal file
53
ENI2/EditControls/SelectPortAreaDialog.xaml
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
<enictrl:EditWindowBase x:Class="ENI2.EditControls.SelectPortAreaDialog"
|
||||||
|
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:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||||
|
xmlns:enictrl="clr-namespace:ENI2.Controls"
|
||||||
|
xmlns:local="clr-namespace:ENI2.EditControls"
|
||||||
|
xmlns:p="clr-namespace:ENI2.Properties"
|
||||||
|
mc:Ignorable="d"
|
||||||
|
Title="Search port area" Height="400" Width="600" WindowStyle="SingleBorderWindow" Background="AliceBlue" ResizeMode="CanResize" Icon="/ENI2Test;component/Resources/bullet_ball_yellow.ico" Loaded="Window_Loaded">
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="84" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
<RowDefinition Height="90" />
|
||||||
|
<RowDefinition Height="28" />
|
||||||
|
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="80" />
|
||||||
|
<ColumnDefinition Width="2*" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Label Grid.Row="1" Content="Select" />
|
||||||
|
<Label Grid.Row="0" x:Name="labelLocode" Content="ZZUKN" />
|
||||||
|
<ListBox Name="listBoxAreas" Grid.Column="1" Grid.Row="1" Margin="2" SelectionChanged="comboBoxType_SelectionChanged" />
|
||||||
|
<xctk:WatermarkTextBox Margin="2" Watermark="{x:Static p:Resources.textSearch}" Name="textBoxSearchDescription" Grid.Row="0" Grid.Column="1" TextChanged="textBoxSearchDescription_TextChanged" />
|
||||||
|
<Label Grid.Row="2" Content="Agency" />
|
||||||
|
<Label Grid.Row="3" Content="Ships" />
|
||||||
|
<Label Grid.Row="4" Content="Berth" />
|
||||||
|
<Label Grid.Row="5" Content="PortArea" />
|
||||||
|
<Label Grid.Row="6" Content="Remark" />
|
||||||
|
<Border BorderThickness="1" Grid.Column="1" Grid.Row="2" Grid.RowSpan="1" BorderBrush="Black" Margin="2">
|
||||||
|
<TextBlock Name="textBlockAgency" Margin="2,1,2,3" Background="LightGray" TextWrapping="Wrap"/>
|
||||||
|
</Border>
|
||||||
|
<Border BorderThickness="1" Grid.Column="1" Grid.Row="3" Grid.RowSpan="1" BorderBrush="Black" Margin="2">
|
||||||
|
<TextBlock Name="textBlockShips" Margin="2,1,2,3" Background="LightGray" TextWrapping="Wrap"/>
|
||||||
|
</Border>
|
||||||
|
<Border BorderThickness="1" Grid.Column="1" Grid.Row="4" Grid.RowSpan="1" BorderBrush="Black" Margin="2">
|
||||||
|
<TextBlock Name="textBlockBerth" Margin="2,1,2,3" Background="LightGray" TextWrapping="Wrap"/>
|
||||||
|
</Border>
|
||||||
|
<Border BorderThickness="1" Grid.Column="1" Grid.Row="5" Grid.RowSpan="1" BorderBrush="Black" Margin="2">
|
||||||
|
<TextBlock Name="textBlockPortArea" Margin="2,1,2,3" Background="LightGray" TextWrapping="Wrap"/>
|
||||||
|
</Border>
|
||||||
|
<Border BorderThickness="1" Grid.Column="1" Grid.Row="6" Grid.RowSpan="1" BorderBrush="Black" Margin="2">
|
||||||
|
<TextBlock Name="textBlockRemarks" Margin="2,1,2,3" Background="LightGray" TextWrapping="Wrap"/>
|
||||||
|
</Border>
|
||||||
|
</Grid>
|
||||||
|
</enictrl:EditWindowBase>
|
||||||
86
ENI2/EditControls/SelectPortAreaDialog.xaml.cs
Normal file
86
ENI2/EditControls/SelectPortAreaDialog.xaml.cs
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
// Copyright (c) 2023- schick Informatik
|
||||||
|
// Description: Helper search window to
|
||||||
|
//
|
||||||
|
|
||||||
|
using bsmd.database;
|
||||||
|
using ENI2.Controls;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Windows;
|
||||||
|
|
||||||
|
namespace ENI2.EditControls
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Interaction logic for SelectPortAreaDialog.xaml
|
||||||
|
/// </summary>
|
||||||
|
public partial class SelectPortAreaDialog : EditWindowBase
|
||||||
|
{
|
||||||
|
|
||||||
|
#region Fields
|
||||||
|
|
||||||
|
private readonly string _poc = null;
|
||||||
|
private List<PortAreaInfo> _portAreas;
|
||||||
|
private static readonly object filterLock = new object();
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Construction
|
||||||
|
|
||||||
|
public SelectPortAreaDialog(string poc)
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
_poc = poc;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Properties
|
||||||
|
|
||||||
|
public string SelectedArea { get; private set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region event handler
|
||||||
|
|
||||||
|
private void Window_Loaded(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
if(LocalizedLookup.getPortAreaInfos().ContainsKey(this._poc))
|
||||||
|
_portAreas = LocalizedLookup.getPortAreaInfos()[this._poc];
|
||||||
|
this.labelLocode.Content = this._poc;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void comboBoxType_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
|
||||||
|
{
|
||||||
|
if (this.listBoxAreas.SelectedItem is PortAreaInfo pai)
|
||||||
|
{
|
||||||
|
this.textBlockAgency.Text = pai.Agency;
|
||||||
|
this.textBlockBerth.Text = pai.Berth;
|
||||||
|
this.textBlockPortArea.Text = pai.PortArea;
|
||||||
|
this.textBlockShips.Text = pai.Ships;
|
||||||
|
this.textBlockRemarks.Text = pai.Remark;
|
||||||
|
this.SelectedArea = pai.PortAreaCode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void textBoxSearchDescription_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
|
||||||
|
{
|
||||||
|
string searchText = this.textBoxSearchDescription.Text.Trim();
|
||||||
|
if (_portAreas == null) return;
|
||||||
|
lock (filterLock)
|
||||||
|
{
|
||||||
|
IEnumerable<PortAreaInfo> filtered = _portAreas;
|
||||||
|
if (searchText.Length > 0)
|
||||||
|
{
|
||||||
|
filtered = _portAreas.Where(elem => (elem.Remark != null && elem.Remark.ToUpperInvariant().Contains(searchText.ToUpperInvariant())) ||
|
||||||
|
(elem.Agency != null && elem.Agency.ToUpperInvariant().Contains(searchText.ToUpperInvariant())) ||
|
||||||
|
(elem.Berth != null && elem.Berth.ToUpperInvariant().Contains(searchText.ToUpperInvariant())) ||
|
||||||
|
(elem.PortArea != null && elem.PortArea.ToUpperInvariant().Contains(searchText.ToUpperInvariant())));
|
||||||
|
}
|
||||||
|
this.listBoxAreas.ItemsSource = filtered;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -8,7 +8,7 @@
|
|||||||
xmlns:p="clr-namespace:ENI2.Properties"
|
xmlns:p="clr-namespace:ENI2.Properties"
|
||||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Title="{x:Static p:Resources.textViolations}" Height="300" Width="600" Background="AliceBlue" Icon="/ENI2;component/Resources/bullet_ball_yellow.ico" Topmost="False">
|
Title="{x:Static p:Resources.textViolations}" Height="300" Width="600" Background="AliceBlue" Icon="/ENI2Test;component/Resources/bullet_ball_yellow.ico" Topmost="False">
|
||||||
<Grid>
|
<Grid>
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="*" />
|
<RowDefinition Height="*" />
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
xmlns:p="clr-namespace:ENI2.Properties"
|
xmlns:p="clr-namespace:ENI2.Properties"
|
||||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Title="{x:Static p:Resources.textNewVisitTransitId}" Height="220" Width="350" WindowStyle="SingleBorderWindow" Background="AliceBlue" ResizeMode="NoResize" Icon="/ENI2;component/Resources/id_card_new.ico">
|
Title="{x:Static p:Resources.textNewVisitTransitId}" Height="220" Width="350" WindowStyle="SingleBorderWindow" Background="AliceBlue" ResizeMode="NoResize" Icon="/ENI2Test;component/Resources/id_card_new.ico">
|
||||||
<Grid Margin="4">
|
<Grid Margin="4">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="28" />
|
<RowDefinition Height="28" />
|
||||||
@ -52,7 +52,7 @@
|
|||||||
ButtonSpinnerLocation="Right"
|
ButtonSpinnerLocation="Right"
|
||||||
ParsingNumberStyle="Integer"
|
ParsingNumberStyle="Integer"
|
||||||
Watermark="Enter ENI" ValueChanged="doubleUpDownENI_ValueChanged" TextAlignment="Left"/>
|
Watermark="Enter ENI" ValueChanged="doubleUpDownENI_ValueChanged" TextAlignment="Left"/>
|
||||||
<enictrl:LocodeControl Grid.Column="1" Grid.Row="2" Width="Auto" x:Name="locodePoC" LocodeValue="{Binding PoC, Mode=TwoWay}" />
|
<enictrl:LocodeControl Grid.Column="1" Grid.Row="2" Width="Auto" x:Name="locodePoC" LocodeValue="{Binding PoC, Mode=TwoWay}" LocodeSource="OLD" />
|
||||||
<DatePicker Name="datePickerETA" Grid.Row="3" Grid.Column="1" Margin="2" SelectedDateChanged="datePickerETA_SelectedDateChanged" DisplayDateStart="1/1/1900" DisplayDateEnd="12/31/2199" PreviewKeyUp="DateTimePicker_PreviewKeyUpDate">
|
<DatePicker Name="datePickerETA" Grid.Row="3" Grid.Column="1" Margin="2" SelectedDateChanged="datePickerETA_SelectedDateChanged" DisplayDateStart="1/1/1900" DisplayDateEnd="12/31/2199" PreviewKeyUp="DateTimePicker_PreviewKeyUpDate">
|
||||||
<DatePicker.BlackoutDates>
|
<DatePicker.BlackoutDates>
|
||||||
<CalendarDateRange Start="1/1/0001" End="12/31/1799"/>
|
<CalendarDateRange Start="1/1/0001" End="12/31/1799"/>
|
||||||
|
|||||||
@ -133,7 +133,7 @@ namespace ENI2.EditControls
|
|||||||
isComplete &= imo_OR_eni;
|
isComplete &= imo_OR_eni;
|
||||||
|
|
||||||
string locode = this.locodePoC.LocodeValue;
|
string locode = this.locodePoC.LocodeValue;
|
||||||
bool validLocode = (locode != null) && (locode.Length == 5) && (locode.StartsWith("DE") || locode.StartsWith("DK") || locode.Equals("ZZNOK"));
|
bool validLocode = (locode != null) && (locode.Length == 5) && (locode.StartsWith("DE") || locode.StartsWith("DK") || locode.Equals("ZZNOK") || locode.Equals("DEWHV"));
|
||||||
|
|
||||||
isComplete &= validLocode;
|
isComplete &= validLocode;
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using bsmd.database;
|
using bsmd.database;
|
||||||
|
|
||||||
namespace ENI2.Excel
|
namespace ENI2.Excel
|
||||||
@ -74,7 +74,7 @@ namespace ENI2.Excel
|
|||||||
{ if (ScanBKRD(message, reader)) ExcelReader.SaveMessage(message); continue; }
|
{ if (ScanBKRD(message, reader)) ExcelReader.SaveMessage(message); continue; }
|
||||||
if ((message.MessageNotificationClass == Message.NotificationClass.BPOL) && notificationClasses.Contains(Message.NotificationClass.BPOL))
|
if ((message.MessageNotificationClass == Message.NotificationClass.BPOL) && notificationClasses.Contains(Message.NotificationClass.BPOL))
|
||||||
{ if (ScanBPOL(message, reader)) ExcelReader.SaveMessage(message); }
|
{ if (ScanBPOL(message, reader)) ExcelReader.SaveMessage(message); }
|
||||||
if ((message.MessageNotificationClass == Message.NotificationClass.CREW) && notificationClasses.Contains(Message.NotificationClass.CREW))
|
if ((message.MessageNotificationClass == Message.NotificationClass.CREWA) && notificationClasses.Contains(Message.NotificationClass.CREWA))
|
||||||
{ if (ScanCREW(message, reader)) ExcelReader.SaveMessage(message); continue; }
|
{ if (ScanCREW(message, reader)) ExcelReader.SaveMessage(message); continue; }
|
||||||
if ((message.MessageNotificationClass == Message.NotificationClass.CREWD) && notificationClasses.Contains(Message.NotificationClass.CREWD))
|
if ((message.MessageNotificationClass == Message.NotificationClass.CREWD) && notificationClasses.Contains(Message.NotificationClass.CREWD))
|
||||||
{ if (ScanCREWD(message, reader)) ExcelReader.SaveMessage(message); continue; }
|
{ if (ScanCREWD(message, reader)) ExcelReader.SaveMessage(message); continue; }
|
||||||
@ -83,7 +83,7 @@ namespace ENI2.Excel
|
|||||||
if ((message.MessageNotificationClass == Message.NotificationClass.HAZD) && notificationClasses.Contains(Message.NotificationClass.HAZD))
|
if ((message.MessageNotificationClass == Message.NotificationClass.HAZD) && notificationClasses.Contains(Message.NotificationClass.HAZD))
|
||||||
{ if (ScanHAZD(message, reader)) ExcelReader.SaveMessage(message); continue; }
|
{ if (ScanHAZD(message, reader)) ExcelReader.SaveMessage(message); continue; }
|
||||||
if ((message.MessageNotificationClass == Message.NotificationClass.INFO) && notificationClasses.Contains(Message.NotificationClass.INFO))
|
if ((message.MessageNotificationClass == Message.NotificationClass.INFO) && notificationClasses.Contains(Message.NotificationClass.INFO))
|
||||||
{ if (ScanINFO(message, reader)) ExcelReader.SaveMessage(message); continue; }
|
{ if (ScanINFO(message, messageCore, reader)) ExcelReader.SaveMessage(message); continue; }
|
||||||
if ((message.MessageNotificationClass == Message.NotificationClass.LADG) && notificationClasses.Contains(Message.NotificationClass.LADG))
|
if ((message.MessageNotificationClass == Message.NotificationClass.LADG) && notificationClasses.Contains(Message.NotificationClass.LADG))
|
||||||
{ if (ScanLADG(message, reader)) ExcelReader.SaveMessage(message); continue; }
|
{ if (ScanLADG(message, reader)) ExcelReader.SaveMessage(message); continue; }
|
||||||
if ((message.MessageNotificationClass == Message.NotificationClass.MDH) && notificationClasses.Contains(Message.NotificationClass.MDH))
|
if ((message.MessageNotificationClass == Message.NotificationClass.MDH) && notificationClasses.Contains(Message.NotificationClass.MDH))
|
||||||
@ -92,8 +92,8 @@ namespace ENI2.Excel
|
|||||||
{ if (ScanNAME(message, reader)) ExcelReader.SaveMessage(message); continue; }
|
{ if (ScanNAME(message, reader)) ExcelReader.SaveMessage(message); continue; }
|
||||||
if ((message.MessageNotificationClass == Message.NotificationClass.NOA_NOD) && notificationClasses.Contains(Message.NotificationClass.NOA_NOD))
|
if ((message.MessageNotificationClass == Message.NotificationClass.NOA_NOD) && notificationClasses.Contains(Message.NotificationClass.NOA_NOD))
|
||||||
{ if (ScanNOA_NOD(message, reader)) ExcelReader.SaveMessage(message); continue; }
|
{ if (ScanNOA_NOD(message, reader)) ExcelReader.SaveMessage(message); continue; }
|
||||||
if ((message.MessageNotificationClass == Message.NotificationClass.PAS) && notificationClasses.Contains(Message.NotificationClass.PAS))
|
if ((message.MessageNotificationClass == Message.NotificationClass.PASA) && notificationClasses.Contains(Message.NotificationClass.PASA))
|
||||||
{ if (ScanPAS(message, reader)) ExcelReader.SaveMessage(message); continue; }
|
{ if (ScanPASA(message, reader)) ExcelReader.SaveMessage(message); continue; }
|
||||||
if ((message.MessageNotificationClass == Message.NotificationClass.PASD) && notificationClasses.Contains(Message.NotificationClass.PASD))
|
if ((message.MessageNotificationClass == Message.NotificationClass.PASD) && notificationClasses.Contains(Message.NotificationClass.PASD))
|
||||||
{ if (ScanPASD(message, reader)) ExcelReader.SaveMessage(message); continue; }
|
{ if (ScanPASD(message, reader)) ExcelReader.SaveMessage(message); continue; }
|
||||||
if ((message.MessageNotificationClass == Message.NotificationClass.POBA) && notificationClasses.Contains(Message.NotificationClass.POBA))
|
if ((message.MessageNotificationClass == Message.NotificationClass.POBA) && notificationClasses.Contains(Message.NotificationClass.POBA))
|
||||||
@ -726,48 +726,61 @@ namespace ENI2.Excel
|
|||||||
pas = new PASD();
|
pas = new PASD();
|
||||||
pas.Identifier = (i + 1).ToString();
|
pas.Identifier = (i + 1).ToString();
|
||||||
pas.MessageHeader = pasdMessage;
|
pas.MessageHeader = pasdMessage;
|
||||||
|
pas.IsDeparture = true;
|
||||||
pasdMessage.Elements.Add(pas);
|
pasdMessage.Elements.Add(pas);
|
||||||
}
|
}
|
||||||
|
|
||||||
pas.NotificationSchengen = reader.ReadCellAsBool("passenger departure", "C10");
|
// these two are not working, since the lookup field is a combobox where reading text always yields empty string
|
||||||
pas.NotificationPAX = reader.ReadCellAsBool("passenger departure", "C11");
|
// if there is time we should do the solution suggested in this question
|
||||||
|
// https://stackoverflow.com/questions/46752911/how-to-read-comboboxes-value-from-excel-using-c-sharp
|
||||||
|
|
||||||
|
pas.NotificationSchengen = true;
|
||||||
|
pas.NotificationPAX = reader.ReadCellAsBool("passenger departure", "C11") ?? false;
|
||||||
|
|
||||||
pas.PassengerLastName = lastName;
|
pas.PassengerLastName = lastName;
|
||||||
pas.PassengerFirstName = reader.ReadCellAsText("passenger departure", string.Format("C{0}", i + 16));
|
pas.PassengerFirstName = reader.ReadCellAsText("passenger departure", string.Format("C{0}", i + 16));
|
||||||
pas.PassengerPlaceOfBirth = reader.ReadCellAsText("passenger departure", string.Format("D{0}", i + 16));
|
pas.PassengerPlaceOfBirth = reader.ReadCellAsText("passenger departure", string.Format("D{0}", i + 16));
|
||||||
pas.PassengerCountryOfBirth = reader.ReadCellAsText("passenger departure", string.Format("E{0}", i + 16));
|
pas.PassengerCountryOfBirth = ExcelUtil.ReadNationality(reader.ReadCellAsText("passenger departure", string.Format("E{0}", i + 16)), out bool canceled, false);
|
||||||
|
if (canceled) return false;
|
||||||
pas.PassengerDateOfBirth = reader.ReadCellAsDateTime("passenger departure", string.Format("F{0}", i + 16));
|
pas.PassengerDateOfBirth = reader.ReadCellAsDateTime("passenger departure", string.Format("F{0}", i + 16));
|
||||||
pas.PassengerGender = ParseGender(reader.ReadCellAsText("passenger departure", string.Format("G{0}", i + 16)));
|
pas.PassengerGender = ParseGender(reader.ReadCellAsText("passenger departure", string.Format("G{0}", i + 16)));
|
||||||
pas.PassengerNationality = reader.ReadCellAsText("passenger departure", string.Format("H{0}", i + 16));
|
pas.PassengerNationality = ExcelUtil.ReadNationality(reader.ReadCellAsText("passenger departure", string.Format("H{0}", i + 16)), out canceled);
|
||||||
pas.PassengerIdentityDocumentIssuingState = reader.ReadCellAsText("passenger departure", string.Format("O{0}", i + 16));
|
if (canceled) return false;
|
||||||
|
pas.PassengerIdentityDocumentIssuingState = ExcelUtil.ReadNationality(reader.ReadCellAsText("passenger departure", string.Format("O{0}", i + 16)), out canceled);
|
||||||
|
if (canceled) return false;
|
||||||
pas.PassengerIdentityDocumentExpiryDate = reader.ReadCellAsDateTime("passenger departure", string.Format("P{0}", i + 16));
|
pas.PassengerIdentityDocumentExpiryDate = reader.ReadCellAsDateTime("passenger departure", string.Format("P{0}", i + 16));
|
||||||
|
|
||||||
if (pas.NotificationPAX ?? false)
|
|
||||||
{
|
pas.EmergencyCare = reader.ReadCellAsText("passenger departure", string.Format("Q{0}", i + 16));
|
||||||
pas.EmergencyCare = reader.ReadCellAsText("passenger departure", string.Format("Q{0}", i + 16));
|
pas.EmergencyContactNumber = reader.ReadCellAsText("passenger departure", string.Format("R{0}", i + 16));
|
||||||
pas.EmergencyContactNumber = reader.ReadCellAsText("passenger departure", string.Format("R{0}", i + 16));
|
|
||||||
}
|
pas.PassengerIdentityDocumentType = ParseDocumentType(reader.ReadCellAsText("passenger departure", string.Format("I{0}", i + 16)));
|
||||||
|
pas.PassengerIdentityDocumentId = reader.ReadCellAsText("passenger departure", string.Format("J{0}", i + 16));
|
||||||
|
pas.PassengerVisaNumber = reader.ReadCellAsText("passenger departure", string.Format("K{0}", i + 16));
|
||||||
|
pas.PassengerPortOfEmbarkation = reader.ReadCellAsText("passenger departure", string.Format("L{0}", i + 16));
|
||||||
|
pas.PassengerPortOfDisembarkation = reader.ReadCellAsText("passenger departure", string.Format("M{0}", i + 16));
|
||||||
|
pas.PassengerInTransit = reader.ReadCellAsBool("passenger departure", string.Format("N{0}", i + 16));
|
||||||
|
|
||||||
if (pas.NotificationSchengen ?? false)
|
// if (pas.HasSchengenDetails) pas.NotificationSchengen = true;
|
||||||
{
|
// if (pas.HasPAXDetails) pas.NotificationPAX = true;
|
||||||
pas.PassengerIdentityDocumentType = ParseDocumentType(reader.ReadCellAsText("passenger departure", string.Format("I{0}", i + 16)));
|
|
||||||
pas.PassengerIdentityDocumentId = reader.ReadCellAsText("passenger departure", string.Format("J{0}", i + 16));
|
|
||||||
pas.PassengerVisaNumber = reader.ReadCellAsText("passenger departure", string.Format("K{0}", i + 16));
|
|
||||||
pas.PassengerPortOfEmbarkation = reader.ReadCellAsText("passenger departure", string.Format("L{0}", i + 16));
|
|
||||||
pas.PassengerPortOfDisembarkation = reader.ReadCellAsText("passenger departure", string.Format("M{0}", i + 16));
|
|
||||||
pas.PassengerInTransit = reader.ReadCellAsBool("passenger departure", string.Format("N{0}", i + 16));
|
|
||||||
}
|
|
||||||
|
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool mustPAX = pasdMessage.Elements.Count >= 12;
|
||||||
|
if (mustPAX)
|
||||||
|
{
|
||||||
|
foreach (PASD pasd in pasdMessage.Elements.Cast<PASD>())
|
||||||
|
pasd.NotificationPAX = mustPAX;
|
||||||
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region PAS
|
#region PASA
|
||||||
|
|
||||||
private static bool ScanPAS(Message pasMessage, ExcelReader reader)
|
private static bool ScanPASA(Message pasMessage, ExcelReader reader)
|
||||||
{
|
{
|
||||||
bool result = false;
|
bool result = false;
|
||||||
for (int i = 0; i < 1000; i++)
|
for (int i = 0; i < 1000; i++)
|
||||||
@ -783,37 +796,46 @@ namespace ENI2.Excel
|
|||||||
pasMessage.Elements.Add(pas);
|
pasMessage.Elements.Add(pas);
|
||||||
}
|
}
|
||||||
|
|
||||||
pas.NotificationSchengen = reader.ReadCellAsBool("passenger arrival", "C10");
|
pas.NotificationSchengen = true;
|
||||||
pas.NotificationPAX = reader.ReadCellAsBool("passenger arrival", "C11");
|
pas.NotificationPAX = reader.ReadCellAsBool("passenger arrival", "C11") ?? false;
|
||||||
|
|
||||||
pas.PassengerLastName = lastName;
|
pas.PassengerLastName = lastName;
|
||||||
pas.PassengerFirstName = reader.ReadCellAsText("passenger arrival", string.Format("C{0}", i + 16));
|
pas.PassengerFirstName = reader.ReadCellAsText("passenger arrival", string.Format("C{0}", i + 16));
|
||||||
pas.PassengerPlaceOfBirth = reader.ReadCellAsText("passenger arrival", string.Format("D{0}", i + 16));
|
pas.PassengerPlaceOfBirth = reader.ReadCellAsText("passenger arrival", string.Format("D{0}", i + 16));
|
||||||
pas.PassengerCountryOfBirth = reader.ReadCellAsText("passenger arrival", string.Format("E{0}", i + 16));
|
pas.PassengerCountryOfBirth = ExcelUtil.ReadNationality(reader.ReadCellAsText("passenger arrival", string.Format("E{0}", i + 16)), out bool canceled, false);
|
||||||
|
if (canceled) return false;
|
||||||
pas.PassengerDateOfBirth = reader.ReadCellAsDateTime("passenger arrival", string.Format("F{0}", i + 16));
|
pas.PassengerDateOfBirth = reader.ReadCellAsDateTime("passenger arrival", string.Format("F{0}", i + 16));
|
||||||
pas.PassengerGender = ParseGender(reader.ReadCellAsText("passenger arrival", string.Format("G{0}", i + 16)));
|
pas.PassengerGender = ParseGender(reader.ReadCellAsText("passenger arrival", string.Format("G{0}", i + 16)));
|
||||||
pas.PassengerNationality = reader.ReadCellAsText("passenger arrival", string.Format("H{0}", i + 16));
|
pas.PassengerNationality = ExcelUtil.ReadNationality(reader.ReadCellAsText("passenger arrival", string.Format("H{0}", i + 16)), out canceled);
|
||||||
pas.PassengerIdentityDocumentIssuingState = reader.ReadCellAsText("passenger arrival", string.Format("O{0}", i + 16));
|
if(canceled) return false;
|
||||||
|
pas.PassengerIdentityDocumentIssuingState = ExcelUtil.ReadNationality(reader.ReadCellAsText("passenger arrival", string.Format("O{0}", i + 16)), out canceled);
|
||||||
|
if (canceled) return false;
|
||||||
pas.PassengerIdentityDocumentExpiryDate = reader.ReadCellAsDateTime("passenger arrival", string.Format("P{0}", i + 16));
|
pas.PassengerIdentityDocumentExpiryDate = reader.ReadCellAsDateTime("passenger arrival", string.Format("P{0}", i + 16));
|
||||||
|
|
||||||
|
pas.EmergencyCare = reader.ReadCellAsText("passenger arrival", string.Format("Q{0}", i + 16));
|
||||||
|
pas.EmergencyContactNumber = reader.ReadCellAsText("passenger arrival", string.Format("R{0}", i + 16));
|
||||||
|
|
||||||
|
pas.PassengerIdentityDocumentType = ParseDocumentType(reader.ReadCellAsText("passenger arrival", string.Format("I{0}", i + 16)));
|
||||||
|
pas.PassengerIdentityDocumentId = reader.ReadCellAsText("passenger arrival", string.Format("J{0}", i + 16));
|
||||||
|
pas.PassengerVisaNumber = reader.ReadCellAsText("passenger arrival", string.Format("K{0}", i + 16));
|
||||||
|
pas.PassengerPortOfEmbarkation = reader.ReadCellAsText("passenger arrival", string.Format("L{0}", i + 16));
|
||||||
|
pas.PassengerPortOfDisembarkation = reader.ReadCellAsText("passenger arrival", string.Format("M{0}", i + 16));
|
||||||
|
pas.PassengerInTransit = reader.ReadCellAsBool("passenger arrival", string.Format("N{0}", i + 16));
|
||||||
|
|
||||||
|
|
||||||
//if(pas.NotificationPAX ?? false)
|
// if (pas.HasSchengenDetails) pas.NotificationSchengen = true;
|
||||||
//{
|
// if (pas.HasPAXDetails) pas.NotificationPAX = true;
|
||||||
pas.EmergencyCare = reader.ReadCellAsText("passenger arrival", string.Format("Q{0}", i + 16));
|
|
||||||
pas.EmergencyContactNumber = reader.ReadCellAsText("passenger arrival", string.Format("R{0}", i + 16));
|
|
||||||
//}
|
|
||||||
|
|
||||||
//if(pas.NotificationSchengen ?? false)
|
|
||||||
//{
|
|
||||||
pas.PassengerIdentityDocumentType = ParseDocumentType(reader.ReadCellAsText("passenger arrival", string.Format("I{0}", i + 16)));
|
|
||||||
pas.PassengerIdentityDocumentId = reader.ReadCellAsText("passenger arrival", string.Format("J{0}", i + 16));
|
|
||||||
pas.PassengerVisaNumber = reader.ReadCellAsText("passenger arrival", string.Format("K{0}", i + 16));
|
|
||||||
pas.PassengerPortOfEmbarkation = reader.ReadCellAsText("passenger arrival", string.Format("L{0}", i + 16));
|
|
||||||
pas.PassengerPortOfDisembarkation = reader.ReadCellAsText("passenger arrival", string.Format("M{0}", i + 16));
|
|
||||||
pas.PassengerInTransit = reader.ReadCellAsBool("passenger arrival", string.Format("N{0}", i + 16));
|
|
||||||
//}
|
|
||||||
|
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool mustPAX = pasMessage.Elements.Count >= 12;
|
||||||
|
if (mustPAX)
|
||||||
|
{
|
||||||
|
foreach (PAS pasa in pasMessage.Elements.Cast<PAS>())
|
||||||
|
pasa.NotificationPAX = mustPAX;
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1095,7 +1117,7 @@ namespace ENI2.Excel
|
|||||||
|
|
||||||
#region INFO
|
#region INFO
|
||||||
|
|
||||||
private static bool ScanINFO(Message infoMessage, ExcelReader reader)
|
private static bool ScanINFO(Message infoMessage, MessageCore core, ExcelReader reader)
|
||||||
{
|
{
|
||||||
if (infoMessage.Elements.Count == 0)
|
if (infoMessage.Elements.Count == 0)
|
||||||
{
|
{
|
||||||
@ -1120,7 +1142,26 @@ namespace ENI2.Excel
|
|||||||
if (!portArea.IsNullOrEmpty() && DBManager.Instance.GetPortAreaDict().ContainsKey(portArea))
|
if (!portArea.IsNullOrEmpty() && DBManager.Instance.GetPortAreaDict().ContainsKey(portArea))
|
||||||
info.PortArea = portArea;
|
info.PortArea = portArea;
|
||||||
else
|
else
|
||||||
info.PortArea = "";
|
info.PortArea = "";
|
||||||
|
|
||||||
|
// März 2024: Spezialfall für Abrechnungsabteilung Bremenports: Feld wird markiert (falls genügend Platz)
|
||||||
|
// falls das Schiff nach DEBRE oder DEBHV geht:
|
||||||
|
|
||||||
|
if (core.PoC.Equals("DEBRE") || core.PoC.Equals("DEBRV"))
|
||||||
|
{
|
||||||
|
if (info.SpecialRequirementsOfShipAtBerth == null)
|
||||||
|
{
|
||||||
|
info.SpecialRequirementsOfShipAtBerth = "NSW by BSMD";
|
||||||
|
}
|
||||||
|
else if (info.SpecialRequirementsOfShipAtBerth.Length <= 241) // we have enough space
|
||||||
|
{
|
||||||
|
if (info.SpecialRequirementsOfShipAtBerth.Length > 0) // if there is text already add a separator
|
||||||
|
{
|
||||||
|
info.SpecialRequirementsOfShipAtBerth += " | ";
|
||||||
|
}
|
||||||
|
info.SpecialRequirementsOfShipAtBerth += "NSW by BSMD";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -1156,32 +1197,34 @@ namespace ENI2.Excel
|
|||||||
crew = new CREWD();
|
crew = new CREWD();
|
||||||
crew.Identifier = (i + 1).ToString();
|
crew.Identifier = (i + 1).ToString();
|
||||||
crew.MessageHeader = crewMessage;
|
crew.MessageHeader = crewMessage;
|
||||||
|
crew.IsDeparture = true;
|
||||||
crewMessage.Elements.Add(crew);
|
crewMessage.Elements.Add(crew);
|
||||||
}
|
}
|
||||||
|
|
||||||
crew.NotificationSchengen = reader.ReadCellAsBool("crew departure", "C10");
|
crew.NotificationSchengen = true;
|
||||||
crew.NotificationPAX = reader.ReadCellAsBool("crew departure", "C11");
|
crew.NotificationPAX = reader.ReadCellAsBool("crew departure", "C11");
|
||||||
|
|
||||||
crew.CrewMemberLastName = lastName;
|
crew.CrewMemberLastName = lastName;
|
||||||
crew.CrewMemberFirstName = reader.ReadCellAsText("crew departure", string.Format("C{0}", i + 15));
|
crew.CrewMemberFirstName = reader.ReadCellAsText("crew departure", string.Format("C{0}", i + 15));
|
||||||
crew.CrewMemberPlaceOfBirth = reader.ReadCellAsText("crew departure", string.Format("D{0}", i + 15));
|
crew.CrewMemberPlaceOfBirth = reader.ReadCellAsText("crew departure", string.Format("D{0}", i + 15));
|
||||||
crew.CrewMemberCountryOfBirth = reader.ReadCellAsText("crew departure", string.Format("E{0}", i + 15));
|
crew.CrewMemberCountryOfBirth = ExcelUtil.ReadNationality(reader.ReadCellAsText("crew departure", string.Format("E{0}", i + 15)), out bool canceled, false);
|
||||||
|
if (canceled) return false;
|
||||||
crew.CrewMemberDateOfBirth = reader.ReadCellAsDateTime("crew departure", string.Format("F{0}", i + 15));
|
crew.CrewMemberDateOfBirth = reader.ReadCellAsDateTime("crew departure", string.Format("F{0}", i + 15));
|
||||||
string gender = reader.ReadCellAsText("crew departure", string.Format("G{0}", i + 15));
|
string gender = reader.ReadCellAsText("crew departure", string.Format("G{0}", i + 15));
|
||||||
crew.CrewMemberGender = ParseGender(gender);
|
crew.CrewMemberGender = ParseGender(gender);
|
||||||
crew.CrewMemberNationality = reader.ReadCellAsText("crew departure", string.Format("H{0}", i + 15));
|
crew.CrewMemberNationality = ExcelUtil.ReadNationality(reader.ReadCellAsText("crew departure", string.Format("H{0}", i + 15)), out canceled);
|
||||||
|
if (canceled) return false;
|
||||||
if (crew.NotificationSchengen ?? false)
|
|
||||||
{
|
string idDocType = reader.ReadCellAsText("crew departure", string.Format("I{0}", i + 15));
|
||||||
string idDocType = reader.ReadCellAsText("crew departure", string.Format("I{0}", i + 15));
|
crew.CrewMemberIdentityDocumentType = ParseDocumentType(idDocType);
|
||||||
crew.CrewMemberIdentityDocumentType = ParseDocumentType(idDocType);
|
crew.CrewMemberIdentityDocumentId = reader.ReadCellAsText("crew departure", string.Format("J{0}", i + 15));
|
||||||
crew.CrewMemberIdentityDocumentId = reader.ReadCellAsText("crew departure", string.Format("J{0}", i + 15));
|
crew.CrewMemberVisaNumber = reader.ReadCellAsText("crew departure", string.Format("K{0}", i + 15));
|
||||||
crew.CrewMemberVisaNumber = reader.ReadCellAsText("crew departure", string.Format("K{0}", i + 15));
|
crew.CrewMemberIdentityDocumentIssuingState = ExcelUtil.ReadNationality(reader.ReadCellAsText("crew departure", string.Format("M{0}", i + 15)), out canceled);
|
||||||
crew.CrewMemberIdentityDocumentIssuingState = reader.ReadCellAsText("crew departure", string.Format("M{0}", i + 15));
|
if (canceled) return false;
|
||||||
crew.CrewMemberIdentityDocumentExpiryDate = reader.ReadCellAsDateTime("crew departure", string.Format("N{0}", i + 15));
|
crew.CrewMemberIdentityDocumentExpiryDate = reader.ReadCellAsDateTime("crew departure", string.Format("N{0}", i + 15));
|
||||||
}
|
|
||||||
|
|
||||||
crew.CrewMemberDuty = reader.ReadCellAsText("crew departure", string.Format("L{0}", i + 15));
|
crew.CrewMemberDuty = reader.ReadCellAsText("crew departure", string.Format("L{0}", i + 15));
|
||||||
|
if (crew.CrewMemberDuty.IsNullOrEmpty()) crew.CrewMemberDuty = "unknown";
|
||||||
|
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
@ -1190,7 +1233,7 @@ namespace ENI2.Excel
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region CREW
|
#region CREWA
|
||||||
|
|
||||||
private static bool ScanCREW(Message crewMessage, ExcelReader reader)
|
private static bool ScanCREW(Message crewMessage, ExcelReader reader)
|
||||||
{
|
{
|
||||||
@ -1208,29 +1251,30 @@ namespace ENI2.Excel
|
|||||||
crewMessage.Elements.Add(crew);
|
crewMessage.Elements.Add(crew);
|
||||||
}
|
}
|
||||||
|
|
||||||
crew.NotificationSchengen = reader.ReadCellAsBool("crew arrival", "C10");
|
crew.NotificationSchengen = true;
|
||||||
crew.NotificationPAX = reader.ReadCellAsBool("crew arrival", "C11");
|
crew.NotificationPAX = reader.ReadCellAsBool("crew arrival", "C11") ?? false;
|
||||||
|
|
||||||
crew.CrewMemberLastName = lastName;
|
crew.CrewMemberLastName = lastName;
|
||||||
crew.CrewMemberFirstName = reader.ReadCellAsText("crew arrival", string.Format("C{0}", i + 15));
|
crew.CrewMemberFirstName = reader.ReadCellAsText("crew arrival", string.Format("C{0}", i + 15));
|
||||||
crew.CrewMemberPlaceOfBirth = reader.ReadCellAsText("crew arrival", string.Format("D{0}", i + 15));
|
crew.CrewMemberPlaceOfBirth = reader.ReadCellAsText("crew arrival", string.Format("D{0}", i + 15));
|
||||||
crew.CrewMemberCountryOfBirth = reader.ReadCellAsText("crew arrival", string.Format("E{0}", i + 15));
|
crew.CrewMemberCountryOfBirth = ExcelUtil.ReadNationality(reader.ReadCellAsText("crew arrival", string.Format("E{0}", i + 15)), out bool canceled, false);
|
||||||
|
if (canceled) return false;
|
||||||
crew.CrewMemberDateOfBirth = reader.ReadCellAsDateTime("crew arrival", string.Format("F{0}", i + 15));
|
crew.CrewMemberDateOfBirth = reader.ReadCellAsDateTime("crew arrival", string.Format("F{0}", i + 15));
|
||||||
string gender = reader.ReadCellAsText("crew arrival", string.Format("G{0}", i + 15));
|
string gender = reader.ReadCellAsText("crew arrival", string.Format("G{0}", i + 15));
|
||||||
crew.CrewMemberGender = ParseGender(gender);
|
crew.CrewMemberGender = ParseGender(gender);
|
||||||
crew.CrewMemberNationality = reader.ReadCellAsText("crew arrival", string.Format("H{0}", i + 15));
|
crew.CrewMemberNationality = ExcelUtil.ReadNationality(reader.ReadCellAsText("crew arrival", string.Format("H{0}", i + 15)), out canceled);
|
||||||
|
if (canceled) return false;
|
||||||
|
|
||||||
//if(crew.NotificationSchengen ?? false)
|
string idDocType = reader.ReadCellAsText("crew arrival", string.Format("I{0}", i + 15));
|
||||||
//{
|
crew.CrewMemberIdentityDocumentType = ParseDocumentType(idDocType);
|
||||||
string idDocType = reader.ReadCellAsText("crew arrival", string.Format("I{0}", i + 15));
|
crew.CrewMemberIdentityDocumentId = reader.ReadCellAsText("crew arrival", string.Format("J{0}", i + 15));
|
||||||
crew.CrewMemberIdentityDocumentType = ParseDocumentType(idDocType);
|
crew.CrewMemberVisaNumber = reader.ReadCellAsText("crew arrival", string.Format("K{0}", i + 15));
|
||||||
crew.CrewMemberIdentityDocumentId = reader.ReadCellAsText("crew arrival", string.Format("J{0}", i + 15));
|
crew.CrewMemberIdentityDocumentIssuingState = ExcelUtil.ReadNationality(reader.ReadCellAsText("crew arrival", string.Format("M{0}", i + 15)), out canceled);
|
||||||
crew.CrewMemberVisaNumber = reader.ReadCellAsText("crew arrival", string.Format("K{0}", i + 15));
|
if (canceled) return false;
|
||||||
crew.CrewMemberIdentityDocumentIssuingState = reader.ReadCellAsText("crew arrival", string.Format("M{0}", i + 15));
|
crew.CrewMemberIdentityDocumentExpiryDate = reader.ReadCellAsDateTime("crew arrival", string.Format("N{0}", i + 15));
|
||||||
crew.CrewMemberIdentityDocumentExpiryDate = reader.ReadCellAsDateTime("crew arrival", string.Format("N{0}", i + 15));
|
|
||||||
//}
|
|
||||||
|
|
||||||
crew.CrewMemberDuty = reader.ReadCellAsText("crew arrival", string.Format("L{0}", i + 15));
|
crew.CrewMemberDuty = reader.ReadCellAsText("crew arrival", string.Format("L{0}", i + 15));
|
||||||
|
if (crew.CrewMemberDuty.IsNullOrEmpty()) crew.CrewMemberDuty = "unknown";
|
||||||
|
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,6 +7,7 @@ using Microsoft.Office.Interop.Excel;
|
|||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using log4net;
|
using log4net;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace ENI2.Excel
|
namespace ENI2.Excel
|
||||||
{
|
{
|
||||||
@ -105,6 +106,20 @@ namespace ENI2.Excel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static double? ParseAnyDouble(string val)
|
||||||
|
{
|
||||||
|
double? result = null;
|
||||||
|
if (double.TryParse(val, NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite,
|
||||||
|
CultureInfo.InvariantCulture, out double tmpDouble))
|
||||||
|
result = tmpDouble;
|
||||||
|
if (result == null)
|
||||||
|
{
|
||||||
|
if (double.TryParse(val, out tmpDouble)) // current language style (==GER, mit , statt .)
|
||||||
|
result = tmpDouble;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
internal double? ReadNumber(string lookup)
|
internal double? ReadNumber(string lookup)
|
||||||
{
|
{
|
||||||
double? result = null;
|
double? result = null;
|
||||||
@ -114,15 +129,17 @@ namespace ENI2.Excel
|
|||||||
{
|
{
|
||||||
var val = _nameDict[lookup].RefersToRange.Value;
|
var val = _nameDict[lookup].RefersToRange.Value;
|
||||||
if (val is double) result = val;
|
if (val is double) result = val;
|
||||||
if (val is string)
|
if ((val is string) && (val.Length > 0))
|
||||||
{
|
{
|
||||||
if (double.TryParse(val, NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite,
|
result = ParseAnyDouble(val);
|
||||||
CultureInfo.InvariantCulture, out double tmpDouble))
|
|
||||||
result = tmpDouble;
|
if(result == null)
|
||||||
if (result == null)
|
{
|
||||||
{
|
Match m = Regex.Match(val, "([0-9\\.\\,]+)([a-zA-Z]*)");
|
||||||
if (double.TryParse(val, out tmpDouble)) // current language style (==GER, mit , statt .)
|
if (m.Success)
|
||||||
result = tmpDouble;
|
{
|
||||||
|
result = ParseAnyDouble(m.Groups[1].Value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -49,9 +49,14 @@ namespace ENI2.Excel
|
|||||||
{
|
{
|
||||||
message.CreatedBy = "EXCEL";
|
message.CreatedBy = "EXCEL";
|
||||||
if (message.MessageNotificationClass == Message.NotificationClass.STO)
|
if (message.MessageNotificationClass == Message.NotificationClass.STO)
|
||||||
|
{
|
||||||
message.InternalStatus = Message.BSMDStatus.PREPARE;
|
message.InternalStatus = Message.BSMDStatus.PREPARE;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
message.InternalStatus = Message.BSMDStatus.EXCEL;
|
message.InternalStatus = Message.BSMDStatus.EXCEL;
|
||||||
|
message.ChangedBy = ReportingParty.CurrentReportingParty?.Logon;
|
||||||
|
}
|
||||||
message.UnsentMessageWarningShown = false;
|
message.UnsentMessageWarningShown = false;
|
||||||
DBManager.Instance.Save(message);
|
DBManager.Instance.Save(message);
|
||||||
message.SaveElements();
|
message.SaveElements();
|
||||||
@ -123,7 +128,7 @@ namespace ENI2.Excel
|
|||||||
if (portName.IsNullOrEmpty())
|
if (portName.IsNullOrEmpty())
|
||||||
{
|
{
|
||||||
_log.WarnFormat("unknown Locode {0}", val);
|
_log.WarnFormat("unknown Locode {0}", val);
|
||||||
val = "";
|
val = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return val;
|
return val;
|
||||||
@ -278,7 +283,7 @@ namespace ENI2.Excel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal byte? ReadHullConfiguration(string lookup)
|
internal byte? ReadHullConfiguration(string lookup)
|
||||||
{
|
{
|
||||||
@ -631,14 +636,20 @@ namespace ENI2.Excel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal string ReadCellAsText(string sheetName, string range)
|
internal string ReadCellAsText(string sheetName, string range, int? maxLength = null)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Worksheet workSheet = (Worksheet)_workBook.Worksheets[sheetName];
|
Worksheet workSheet = (Worksheet)_workBook.Worksheets[sheetName];
|
||||||
string result = workSheet.Range[range].Text.ToString();
|
string result = workSheet.Range[range].Text.ToString();
|
||||||
if (!result.IsNullOrEmpty())
|
if (!result.IsNullOrEmpty())
|
||||||
|
{
|
||||||
result = result.Trim().Clean();
|
result = result.Trim().Clean();
|
||||||
|
if(maxLength.HasValue && result.Length > maxLength.Value)
|
||||||
|
{
|
||||||
|
result = result.Substring(0, maxLength.Value);
|
||||||
|
}
|
||||||
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
|||||||
@ -15,6 +15,8 @@ namespace ENI2.Excel
|
|||||||
{
|
{
|
||||||
public static void WriteMaerskList(string filename, List<MaerskData> data)
|
public static void WriteMaerskList(string filename, List<MaerskData> data)
|
||||||
{
|
{
|
||||||
|
data.Sort();
|
||||||
|
|
||||||
Application excelApp = new Application();
|
Application excelApp = new Application();
|
||||||
excelApp.DisplayAlerts = false;
|
excelApp.DisplayAlerts = false;
|
||||||
excelApp.Visible = false;
|
excelApp.Visible = false;
|
||||||
@ -57,7 +59,7 @@ namespace ENI2.Excel
|
|||||||
ws.Cells[i + 2, 11] = md.ColK;
|
ws.Cells[i + 2, 11] = md.ColK;
|
||||||
ws.Cells[i + 2, 12] = md.ColL;
|
ws.Cells[i + 2, 12] = md.ColL;
|
||||||
ws.Cells[i + 2, 13] = md.ColM ;
|
ws.Cells[i + 2, 13] = md.ColM ;
|
||||||
// ws.Cells[i + 2, 14] = md.Remark;
|
ws.Cells[i + 2, 14] = md.Remark;
|
||||||
|
|
||||||
if((md.MessageCore != null) && (md.MessageCore.Cancelled ?? false))
|
if((md.MessageCore != null) && (md.MessageCore.Cancelled ?? false))
|
||||||
{
|
{
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -76,16 +76,16 @@ namespace ENI2.Excel
|
|||||||
this.WriteItineraries(bpol);
|
this.WriteItineraries(bpol);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Message.NotificationClass.CREW:
|
case Message.NotificationClass.CREWA:
|
||||||
this.WriteCREW(message, true, isRefSheet);
|
this.WriteCREW(message, true, isRefSheet);
|
||||||
break;
|
break;
|
||||||
//case Message.NotificationClass.CREWD: // XXX-TODO
|
case Message.NotificationClass.CREWD:
|
||||||
// this.WriteCREW(message, false, isRefSheet);
|
this.WriteCREW(message, false, isRefSheet);
|
||||||
// break;
|
break;
|
||||||
case Message.NotificationClass.HAZA:
|
case Message.NotificationClass.HAZA:
|
||||||
this.WriteHAZ(message, true);
|
this.WriteHAZ(message, true);
|
||||||
break;
|
break;
|
||||||
case Message.NotificationClass.HAZD:
|
case Message.NotificationClass.HAZD:
|
||||||
this.WriteHAZ(message, false);
|
this.WriteHAZ(message, false);
|
||||||
break;
|
break;
|
||||||
case Message.NotificationClass.INFO:
|
case Message.NotificationClass.INFO:
|
||||||
@ -111,12 +111,12 @@ namespace ENI2.Excel
|
|||||||
case Message.NotificationClass.NOA_NOD:
|
case Message.NotificationClass.NOA_NOD:
|
||||||
if (message.Elements[0] is NOA_NOD noa_nod) this.WriteNOA_NOD(noa_nod, core.IsTransit, isRefSheet);
|
if (message.Elements[0] is NOA_NOD noa_nod) this.WriteNOA_NOD(noa_nod, core.IsTransit, isRefSheet);
|
||||||
break;
|
break;
|
||||||
case Message.NotificationClass.PAS:
|
case Message.NotificationClass.PASA:
|
||||||
this.WritePAS(message, true, isRefSheet);
|
this.WritePAS(message, true, isRefSheet);
|
||||||
break;
|
break;
|
||||||
//case Message.NotificationClass.PASD: // XXX - TODO
|
case Message.NotificationClass.PASD:
|
||||||
// this.WritePAS(message, false, isRefSheet);
|
this.WritePAS(message, false, isRefSheet);
|
||||||
// break;
|
break;
|
||||||
case Message.NotificationClass.POBA:
|
case Message.NotificationClass.POBA:
|
||||||
if (message.Elements[0] is POBA poba) this.WriteMessage(poba);
|
if (message.Elements[0] is POBA poba) this.WriteMessage(poba);
|
||||||
break;
|
break;
|
||||||
@ -141,13 +141,13 @@ namespace ENI2.Excel
|
|||||||
if (message.Elements[0] is STAT stat)
|
if (message.Elements[0] is STAT stat)
|
||||||
{
|
{
|
||||||
this.WriteMessage(stat);
|
this.WriteMessage(stat);
|
||||||
this.WriteSTAT(stat, isRefSheet);
|
this.WriteSTAT(stat, isRefSheet);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Message.NotificationClass.STO:
|
case Message.NotificationClass.STO:
|
||||||
this.WriteSTO(message);
|
this.WriteSTO(message);
|
||||||
break;
|
break;
|
||||||
case Message.NotificationClass.TIEFA:
|
case Message.NotificationClass.TIEFA:
|
||||||
if (message.Elements[0] is TIEFA tiefa)
|
if (message.Elements[0] is TIEFA tiefa)
|
||||||
{
|
{
|
||||||
// Ref-Sheet: dm, neues Formblatt: m
|
// Ref-Sheet: dm, neues Formblatt: m
|
||||||
@ -180,7 +180,7 @@ namespace ENI2.Excel
|
|||||||
_log.InfoFormat("skip writing message class {0}", message.MessageNotificationClassDisplay);
|
_log.InfoFormat("skip writing message class {0}", message.MessageNotificationClassDisplay);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@ -306,7 +306,7 @@ namespace ENI2.Excel
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (ReportDocument.cargoCodesNST.TryGetValue(ladg.CargoCodeNST, out string cargoCode))
|
if (ReportDocument.cargoCodesNST.TryGetValue(ladg.CargoCodeNST, out string cargoCode))
|
||||||
WriteText(lnType, cargoCode.Substring(3)); // description w/o code
|
WriteText(lnType, cargoCode.Substring(3)); // description w/o code
|
||||||
}
|
}
|
||||||
WriteText(lnZusatz, ladg.CargoCodeNST_3);
|
WriteText(lnZusatz, ladg.CargoCodeNST_3);
|
||||||
WriteNumber(lnCNOI, ladg.CargoNumberOfItems);
|
WriteNumber(lnCNOI, ladg.CargoNumberOfItems);
|
||||||
@ -378,14 +378,12 @@ namespace ENI2.Excel
|
|||||||
|
|
||||||
private void WriteCREW(Message crewMessage, bool isArrival, bool isRefSheet)
|
private void WriteCREW(Message crewMessage, bool isArrival, bool isRefSheet)
|
||||||
{
|
{
|
||||||
|
|
||||||
/* XXX - TODO
|
|
||||||
if (crewMessage.Elements.Count > 0)
|
if (crewMessage.Elements.Count > 0)
|
||||||
{
|
{
|
||||||
WriteBoolean(string.Format("CREW{0}.NotificationSchengen", isArrival ? "" : "D"), ((CREW)crewMessage.Elements[0]).NotificationSchengen);
|
WriteBoolean(string.Format("CREW{0}.NotificationSchengen", isArrival ? "" : "D"), ((CREW)crewMessage.Elements[0]).NotificationSchengen);
|
||||||
WriteBoolean(string.Format("CREW{0}.NotificationPAX", isArrival ? "" : "D"), ((CREW)crewMessage.Elements[0]).NotificationPAX);
|
WriteBoolean(string.Format("CREW{0}.NotificationPAX", isArrival ? "" : "D"), ((CREW)crewMessage.Elements[0]).NotificationPAX);
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
for(int i = 0; i<Math.Min(crewMessage.NumberOfExcelRows, crewMessage.Elements.Count); i++)
|
for(int i = 0; i<Math.Min(crewMessage.NumberOfExcelRows, crewMessage.Elements.Count); i++)
|
||||||
{
|
{
|
||||||
@ -423,10 +421,10 @@ namespace ENI2.Excel
|
|||||||
if (isRefSheet)
|
if (isRefSheet)
|
||||||
{
|
{
|
||||||
WriteText(crewIssuingState, crew.CrewMemberIdentityDocumentIssuingState);
|
WriteText(crewIssuingState, crew.CrewMemberIdentityDocumentIssuingState);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(!crew.CrewMemberIdentityDocumentIssuingState.IsNullOrEmpty() && !crew.CrewMemberIdentityDocumentIssuingState.Equals("XX"))
|
if(!crew.CrewMemberIdentityDocumentIssuingState.IsNullOrEmpty() && !crew.CrewMemberIdentityDocumentIssuingState.Equals("XX"))
|
||||||
WriteText(crewIssuingState, crew.CrewMemberIdentityDocumentIssuingState);
|
WriteText(crewIssuingState, crew.CrewMemberIdentityDocumentIssuingState);
|
||||||
}
|
}
|
||||||
if(isRefSheet)
|
if(isRefSheet)
|
||||||
@ -438,7 +436,7 @@ namespace ENI2.Excel
|
|||||||
if(crew.CrewMemberIdentityDocumentExpiryDate != new DateTime(2100, 12, 31))
|
if(crew.CrewMemberIdentityDocumentExpiryDate != new DateTime(2100, 12, 31))
|
||||||
WriteDate(crewExpiry, crew.CrewMemberIdentityDocumentExpiryDate);
|
WriteDate(crewExpiry, crew.CrewMemberIdentityDocumentExpiryDate);
|
||||||
}
|
}
|
||||||
|
|
||||||
WriteText(crewCountry, crew.CrewMemberCountryOfBirth);
|
WriteText(crewCountry, crew.CrewMemberCountryOfBirth);
|
||||||
if (isArrival)
|
if (isArrival)
|
||||||
WriteText(effects, crew.Effects);
|
WriteText(effects, crew.Effects);
|
||||||
@ -564,7 +562,7 @@ namespace ENI2.Excel
|
|||||||
WriteNumber(ibc_quantity, ibcPosition.Quantity_KGM.Value);
|
WriteNumber(ibc_quantity, ibcPosition.Quantity_KGM.Value);
|
||||||
WriteText(ibc_stowagePosition, ibcPosition.StowagePosition);
|
WriteText(ibc_stowagePosition, ibcPosition.StowagePosition);
|
||||||
WriteText(ibc_portOfLoading, ibcPosition.PortOfLoading);
|
WriteText(ibc_portOfLoading, ibcPosition.PortOfLoading);
|
||||||
WriteText(ibc_portOfDischarge, ibcPosition.PortOfDischarge);
|
WriteText(ibc_portOfDischarge, ibcPosition.PortOfDischarge);
|
||||||
WriteText(ibc_hazards, ibcPosition.HazardsDisplay);
|
WriteText(ibc_hazards, ibcPosition.HazardsDisplay);
|
||||||
WriteBoolean(ibc_specref, ibcPosition.SpecRef15_19 ?? false);
|
WriteBoolean(ibc_specref, ibcPosition.SpecRef15_19 ?? false);
|
||||||
WriteText(ibc_remarks, ibcPosition.Remarks);
|
WriteText(ibc_remarks, ibcPosition.Remarks);
|
||||||
@ -795,13 +793,12 @@ namespace ENI2.Excel
|
|||||||
|
|
||||||
private void WritePAS(Message pasMessage, bool isArrival, bool isRefSheet)
|
private void WritePAS(Message pasMessage, bool isArrival, bool isRefSheet)
|
||||||
{
|
{
|
||||||
/* XXX - TODO
|
|
||||||
if(pasMessage.Elements.Count > 0)
|
if(pasMessage.Elements.Count > 0)
|
||||||
{
|
{
|
||||||
WriteBoolean(string.Format("PAS{0}.NotificationSchengen", isArrival ? "" : "D"), ((PAS)pasMessage.Elements[0]).NotificationSchengen);
|
WriteBoolean(string.Format("PAS{0}.NotificationSchengen", isArrival ? "" : "D"), ((PAS)pasMessage.Elements[0]).NotificationSchengen);
|
||||||
WriteBoolean(string.Format("PAS{0}.NotificationPAX", isArrival ? "" : "D"), ((PAS)pasMessage.Elements[0]).NotificationPAX);
|
WriteBoolean(string.Format("PAS{0}.NotificationPAX", isArrival ? "" : "D"), ((PAS)pasMessage.Elements[0]).NotificationPAX);
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
for(int i = 0; i < Math.Min(pasMessage.NumberOfExcelRows, pasMessage.Elements.Count); i++)
|
for(int i = 0; i < Math.Min(pasMessage.NumberOfExcelRows, pasMessage.Elements.Count); i++)
|
||||||
{
|
{
|
||||||
@ -886,7 +883,7 @@ namespace ENI2.Excel
|
|||||||
WriteText("SEC.CurrentShipSecurityLevel", sec.CurrentShipSecurityLevel.Value.ToString());
|
WriteText("SEC.CurrentShipSecurityLevel", sec.CurrentShipSecurityLevel.Value.ToString());
|
||||||
|
|
||||||
WriteText("SEC.ISSCIssuerType", sec.ISSCIssuerTypeDisplay);
|
WriteText("SEC.ISSCIssuerType", sec.ISSCIssuerTypeDisplay);
|
||||||
|
|
||||||
if(sec.GeneralDescriptionOfCargo.HasValue)
|
if(sec.GeneralDescriptionOfCargo.HasValue)
|
||||||
{
|
{
|
||||||
switch(sec.GeneralDescriptionOfCargo.Value)
|
switch(sec.GeneralDescriptionOfCargo.Value)
|
||||||
@ -1041,7 +1038,7 @@ namespace ENI2.Excel
|
|||||||
if(CREW.NationalityDict.TryGetValue(towa.TowageOnArrivalFlag, out string country))
|
if(CREW.NationalityDict.TryGetValue(towa.TowageOnArrivalFlag, out string country))
|
||||||
WriteText(tFlag, country.Substring(3));
|
WriteText(tFlag, country.Substring(3));
|
||||||
}
|
}
|
||||||
|
|
||||||
WriteText(tPoC, towa.TowageOnArrivalPurposeOfCall);
|
WriteText(tPoC, towa.TowageOnArrivalPurposeOfCall);
|
||||||
if (towa.TowageOnArrivalDraught_DMT.HasValue)
|
if (towa.TowageOnArrivalDraught_DMT.HasValue)
|
||||||
WriteNumber(tDraft, towa.TowageOnArrivalDraught_DMT.Value);
|
WriteNumber(tDraft, towa.TowageOnArrivalDraught_DMT.Value);
|
||||||
@ -1091,7 +1088,7 @@ namespace ENI2.Excel
|
|||||||
WriteNumber(tBeam, towd.TowageOnDepartureBeam_MTR.Value);
|
WriteNumber(tBeam, towd.TowageOnDepartureBeam_MTR.Value);
|
||||||
WriteText(tOp, towd.TowageOnDepartureOperatorCompanyName);
|
WriteText(tOp, towd.TowageOnDepartureOperatorCompanyName);
|
||||||
// WriteText(tPoc, towd.Tow)
|
// WriteText(tPoc, towd.Tow)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@ -1103,17 +1100,6 @@ namespace ENI2.Excel
|
|||||||
if (wasMessage.Elements.Count == 0) return;
|
if (wasMessage.Elements.Count == 0) return;
|
||||||
WAS was = wasMessage.Elements[0] as WAS;
|
WAS was = wasMessage.Elements[0] as WAS;
|
||||||
|
|
||||||
if (was.WasteDisposalDelivery.HasValue) // TODO: CH schreibt für DK erforderlich -> nachfragen
|
|
||||||
{
|
|
||||||
switch (was.WasteDisposalDelivery)
|
|
||||||
{
|
|
||||||
case 0: WriteText("WAS.WasteDisposalDelivery", "ALL"); break;
|
|
||||||
case 1: WriteText("WAS.WasteDisposalDelivery", "SOME"); break;
|
|
||||||
case 2: WriteText("WAS.WasteDisposalDelivery", "NONE"); break;
|
|
||||||
default: break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
WriteText("WAS.LastWasteDisposalPort", isRefSheet ? was.LastWasteDisposalPort : Locode.LocodeDB.LocationNameFromLocode(was.LastWasteDisposalPort));
|
WriteText("WAS.LastWasteDisposalPort", isRefSheet ? was.LastWasteDisposalPort : Locode.LocodeDB.LocationNameFromLocode(was.LastWasteDisposalPort));
|
||||||
WriteText("WAS.WasteDisposalServiceProviderName", was.WasteDisposalServiceProviderText);
|
WriteText("WAS.WasteDisposalServiceProviderName", was.WasteDisposalServiceProviderText);
|
||||||
WriteText("WAS.NextWasteDisposalPort", isRefSheet? was.NextWasteDisposalPort : Locode.LocodeDB.LocationNameFromLocode(was.NextWasteDisposalPort));
|
WriteText("WAS.NextWasteDisposalPort", isRefSheet? was.NextWasteDisposalPort : Locode.LocodeDB.LocationNameFromLocode(was.NextWasteDisposalPort));
|
||||||
@ -1124,7 +1110,7 @@ namespace ENI2.Excel
|
|||||||
{
|
{
|
||||||
int? wasteType = (int?)ReadNumber(string.Format("WAS.WasteCode_{0}", i + 1));
|
int? wasteType = (int?)ReadNumber(string.Format("WAS.WasteCode_{0}", i + 1));
|
||||||
if (!wasteType.HasValue) continue;
|
if (!wasteType.HasValue) continue;
|
||||||
|
|
||||||
string wasteDescription = string.Format("WAS.WasteDescription_{0}", i + 1);
|
string wasteDescription = string.Format("WAS.WasteDescription_{0}", i + 1);
|
||||||
string wasteAmount = string.Format("WAS.WasteDisposalAmount_MTQ_{0}", i + 1);
|
string wasteAmount = string.Format("WAS.WasteDisposalAmount_MTQ_{0}", i + 1);
|
||||||
string wasteCapacity = string.Format("WAS.WasteCapacity_MTQ_{0}", i + 1);
|
string wasteCapacity = string.Format("WAS.WasteCapacity_MTQ_{0}", i + 1);
|
||||||
@ -1133,7 +1119,7 @@ namespace ENI2.Excel
|
|||||||
string amountGen = string.Format("WAS.WasteAmountGeneratedTillNextPort_MTQ_{0}", i + 1);
|
string amountGen = string.Format("WAS.WasteAmountGeneratedTillNextPort_MTQ_{0}", i + 1);
|
||||||
|
|
||||||
Waste waste = was.GetWasteForType(wasteType.Value);
|
Waste waste = was.GetWasteForType(wasteType.Value);
|
||||||
|
|
||||||
WriteText(wasteDescription, waste.WasteDescription);
|
WriteText(wasteDescription, waste.WasteDescription);
|
||||||
if (waste.WasteDisposalAmount_MTQ.HasValue)
|
if (waste.WasteDisposalAmount_MTQ.HasValue)
|
||||||
WriteNumber(wasteAmount, waste.WasteDisposalAmount_MTQ.Value);
|
WriteNumber(wasteAmount, waste.WasteDisposalAmount_MTQ.Value);
|
||||||
@ -1143,7 +1129,7 @@ namespace ENI2.Excel
|
|||||||
WriteNumber(wasteRetained, waste.WasteAmountRetained_MTQ.Value);
|
WriteNumber(wasteRetained, waste.WasteAmountRetained_MTQ.Value);
|
||||||
WriteText(wastePort, isRefSheet ? waste.WasteDisposalPort : Locode.LocodeDB.LocationNameFromLocode(waste.WasteDisposalPort));
|
WriteText(wastePort, isRefSheet ? waste.WasteDisposalPort : Locode.LocodeDB.LocationNameFromLocode(waste.WasteDisposalPort));
|
||||||
if (waste.WasteAmountGeneratedTillNextPort_MTQ.HasValue)
|
if (waste.WasteAmountGeneratedTillNextPort_MTQ.HasValue)
|
||||||
WriteNumber(amountGen, waste.WasteAmountGeneratedTillNextPort_MTQ.Value);
|
WriteNumber(amountGen, waste.WasteAmountGeneratedTillNextPort_MTQ.Value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1216,8 +1202,8 @@ namespace ENI2.Excel
|
|||||||
WriteText("INFO.PortArea", info.PortArea);
|
WriteText("INFO.PortArea", info.PortArea);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
WriteText("INFO.PortArea", LocalizedLookup.GetPortAreaFromCode(info.PortArea));
|
WriteText("INFO.PortArea", LocalizedLookup.GetPortAreaFromCode(info.PortArea));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1244,7 +1230,7 @@ namespace ENI2.Excel
|
|||||||
if(isRefSheet)
|
if(isRefSheet)
|
||||||
{
|
{
|
||||||
WriteText("STAT.ShipType", stat.ShipType);
|
WriteText("STAT.ShipType", stat.ShipType);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (LocalizedLookup.getVesselTypes().TryGetValue(stat.ShipType, out string shipType))
|
if (LocalizedLookup.getVesselTypes().TryGetValue(stat.ShipType, out string shipType))
|
||||||
@ -1345,7 +1331,7 @@ namespace ENI2.Excel
|
|||||||
}
|
}
|
||||||
catch(Exception)
|
catch(Exception)
|
||||||
{
|
{
|
||||||
System.Diagnostics.Trace.WriteLine(string.Format("Error writing {0} to excel, field missing", lookupName));
|
System.Diagnostics.Trace.WriteLine(string.Format("Error writing {0} to excel, field missing", lookupName));
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@ -1370,10 +1356,10 @@ namespace ENI2.Excel
|
|||||||
if (result)
|
if (result)
|
||||||
{
|
{
|
||||||
if(v != null)
|
if(v != null)
|
||||||
{
|
{
|
||||||
_nameDict[lookupName].RefersToRange.Value = ((DateTime) v).ToLocalTime().ToOADate();
|
_nameDict[lookupName].RefersToRange.Value = ((DateTime) v).ToLocalTime().ToOADate();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@ -16,6 +16,7 @@ namespace ENI2
|
|||||||
private static readonly SQLiteConnection _con;
|
private static readonly SQLiteConnection _con;
|
||||||
private const string _locode_DB_NAME = "db.sqlite";
|
private const string _locode_DB_NAME = "db.sqlite";
|
||||||
private static Dictionary<string, string> _nationalities = null;
|
private static Dictionary<string, string> _nationalities = null;
|
||||||
|
private static Dictionary<string, List<PortAreaInfo>> _portAreaInfos = null;
|
||||||
|
|
||||||
static LocalizedLookup()
|
static LocalizedLookup()
|
||||||
{
|
{
|
||||||
@ -188,6 +189,8 @@ namespace ENI2
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static Dictionary<string, string> getCargoCodesNST()
|
public static Dictionary<string, string> getCargoCodesNST()
|
||||||
{
|
{
|
||||||
Dictionary<string, string> result = new Dictionary<string, string>();
|
Dictionary<string, string> result = new Dictionary<string, string>();
|
||||||
@ -288,5 +291,59 @@ namespace ENI2
|
|||||||
reader.Close();
|
reader.Close();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<string> getMVSHLocodes()
|
||||||
|
{
|
||||||
|
List<string> result = new List<string>();
|
||||||
|
|
||||||
|
string query = string.Format("SELECT locode from MVSH_ports");
|
||||||
|
SQLiteCommand cmd = new SQLiteCommand(query, _con);
|
||||||
|
IDataReader reader = cmd.ExecuteReader();
|
||||||
|
while (reader.Read())
|
||||||
|
{
|
||||||
|
if (reader.IsDBNull(0)) continue;
|
||||||
|
result.Add(reader.GetString(0));
|
||||||
|
}
|
||||||
|
reader.Close();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Dictionary<string, List<PortAreaInfo>> getPortAreaInfos()
|
||||||
|
{
|
||||||
|
int cnt = 0;
|
||||||
|
if (_portAreaInfos == null)
|
||||||
|
{
|
||||||
|
_portAreaInfos = new Dictionary<string, List<PortAreaInfo>>();
|
||||||
|
string query = @"SELECT Locode, Agentur, Schiffe, Liegeplatz, Hafengebiet, `Hafengebiet-Code`, Bemerkungen from INFO_PortArea_Helper";
|
||||||
|
SQLiteCommand cmd = new SQLiteCommand(query, _con);
|
||||||
|
IDataReader reader = cmd.ExecuteReader();
|
||||||
|
while(reader.Read())
|
||||||
|
{
|
||||||
|
PortAreaInfo pai = new PortAreaInfo();
|
||||||
|
if (reader.IsDBNull(0)) continue;
|
||||||
|
pai.Locode = reader.GetString(0);
|
||||||
|
if (!reader.IsDBNull(1))
|
||||||
|
pai.Agency = reader.GetString(1);
|
||||||
|
if (!reader.IsDBNull(2))
|
||||||
|
pai.Ships = reader.GetString(2);
|
||||||
|
if (!reader.IsDBNull(3))
|
||||||
|
pai.Berth = reader.GetString(3);
|
||||||
|
if (!reader.IsDBNull(4))
|
||||||
|
pai.PortArea = reader.GetString(4);
|
||||||
|
if (!reader.IsDBNull(5))
|
||||||
|
pai.PortAreaCode = reader.GetString(5);
|
||||||
|
if (!reader.IsDBNull(6))
|
||||||
|
pai.Remark = reader.GetString(6);
|
||||||
|
if (!_portAreaInfos.ContainsKey(pai.Locode))
|
||||||
|
{
|
||||||
|
_portAreaInfos[pai.Locode] = new List<PortAreaInfo>();
|
||||||
|
}
|
||||||
|
_portAreaInfos[pai.Locode].Add(pai);
|
||||||
|
cnt++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return _portAreaInfos;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,7 +10,9 @@
|
|||||||
xmlns:util="clr-namespace:ENI2.Util"
|
xmlns:util="clr-namespace:ENI2.Util"
|
||||||
xmlns:local="clr-namespace:ENI2"
|
xmlns:local="clr-namespace:ENI2"
|
||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
Title="ENI 2" Height="450" Width="825" Icon="Resources/logo_schwarz.ico" Loaded="Window_Loaded" Closing="Window_Closing"
|
Title="ENI 2 Testversion"
|
||||||
|
Height="{util:SettingBinding Height}" Width="{util:SettingBinding Width}"
|
||||||
|
Icon="Resources/logo_schwarz.ico" Loaded="Window_Loaded" Closing="Window_Closing"
|
||||||
SourceInitialized="Window_SourceInitialized">
|
SourceInitialized="Window_SourceInitialized">
|
||||||
|
|
||||||
<Window.CommandBindings>
|
<Window.CommandBindings>
|
||||||
@ -92,8 +94,15 @@
|
|||||||
<MenuItem x:Name="menuItemStatus" Header="{x:Static p:Resources.textServerStatus}" Click="radioButton_Click" />
|
<MenuItem x:Name="menuItemStatus" Header="{x:Static p:Resources.textServerStatus}" Click="radioButton_Click" />
|
||||||
<MenuItem x:Name="menuItemUserAdministration" Header="{x:Static p:Resources.textUserAdministration}" Click="radioButton_Click" Visibility="Hidden"/>
|
<MenuItem x:Name="menuItemUserAdministration" Header="{x:Static p:Resources.textUserAdministration}" Click="radioButton_Click" Visibility="Hidden"/>
|
||||||
<MenuItem x:Name="menuItemMaersk" Header="{x:Static p:Resources.textPOLists}" Click="radioButton_Click" Visibility="Hidden" />
|
<MenuItem x:Name="menuItemMaersk" Header="{x:Static p:Resources.textPOLists}" Click="radioButton_Click" Visibility="Hidden" />
|
||||||
|
<MenuItem x:Name="menuItemValueMappings" Header="{x:Static p:Resources.textExcelValueMappings}" Click="radioButton_Click" Visibility="Hidden" />
|
||||||
|
<MenuItem x:Name="menuItemEasyPeasy" Header="{x:Static p:Resources.textEasyPeasy}" Click="radioButton_Click" Visibility="Hidden" />
|
||||||
<MenuItem x:Name="labelStatusId" />
|
<MenuItem x:Name="labelStatusId" />
|
||||||
<MenuItem Header="Help" HorizontalAlignment="Right">
|
<MenuItem Header="Help" HorizontalAlignment="Right">
|
||||||
|
<MenuItem Header="Change Password" Click="buttonChangePassword_Click">
|
||||||
|
<MenuItem.Icon>
|
||||||
|
<Image Source="Resources/lock.png" />
|
||||||
|
</MenuItem.Icon>
|
||||||
|
</MenuItem>
|
||||||
<MenuItem Header="About" Click="buttonAbout_Click">
|
<MenuItem Header="About" Click="buttonAbout_Click">
|
||||||
<MenuItem.Icon>
|
<MenuItem.Icon>
|
||||||
<Image Source="Resources/about.png" />
|
<Image Source="Resources/about.png" />
|
||||||
|
|||||||
@ -35,9 +35,11 @@ namespace ENI2
|
|||||||
|
|
||||||
private ReportingPartyControl rpControl;
|
private ReportingPartyControl rpControl;
|
||||||
private MaerskOverviewControl moControl;
|
private MaerskOverviewControl moControl;
|
||||||
|
private ValueMappingsControl vmControl;
|
||||||
private ServerStatusControl statusControl;
|
private ServerStatusControl statusControl;
|
||||||
private readonly SucheControl sucheControl;
|
private readonly SucheControl sucheControl;
|
||||||
private CompareExcelDialog compareExcelDialog;
|
private CompareExcelDialog compareExcelDialog;
|
||||||
|
private EasyPeasyControl easyPeasyControl;
|
||||||
|
|
||||||
private bool dbConnected;
|
private bool dbConnected;
|
||||||
private readonly ScaleTransform _transform = new ScaleTransform(1.0, 1.0);
|
private readonly ScaleTransform _transform = new ScaleTransform(1.0, 1.0);
|
||||||
@ -78,7 +80,7 @@ namespace ENI2
|
|||||||
|
|
||||||
#region Search related event handler
|
#region Search related event handler
|
||||||
|
|
||||||
private void AnmeldungenControl_MessageCoreSelected(MessageCore aMessageCore)
|
private void AnmeldungenControl_MessageCoreSelected(MessageCore aMessageCore, ReportingParty.ShipcallDisplayModeEnum displayMode = ReportingParty.ShipcallDisplayModeEnum.CLASSIC)
|
||||||
{
|
{
|
||||||
if(aMessageCore != null)
|
if(aMessageCore != null)
|
||||||
{
|
{
|
||||||
@ -119,7 +121,7 @@ namespace ENI2
|
|||||||
iDidLockIt);
|
iDidLockIt);
|
||||||
searchResultItem.IsCancelled = aMessageCore.Cancelled ?? false;
|
searchResultItem.IsCancelled = aMessageCore.Cancelled ?? false;
|
||||||
|
|
||||||
DetailRootControl drc = new DetailRootControl(aMessageCore);
|
DetailRootControl drc = new DetailRootControl(aMessageCore, displayMode);
|
||||||
drc.LockedByOtherUser = !iDidLockIt;
|
drc.LockedByOtherUser = !iDidLockIt;
|
||||||
|
|
||||||
if (!(aMessageCore.Cancelled ?? false))
|
if (!(aMessageCore.Cancelled ?? false))
|
||||||
@ -134,7 +136,7 @@ namespace ENI2
|
|||||||
this._dbWatchDog.Register(aMessageCore);
|
this._dbWatchDog.Register(aMessageCore);
|
||||||
|
|
||||||
drc.HighlightReset += Drc_HighlightReset;
|
drc.HighlightReset += Drc_HighlightReset;
|
||||||
drc.OpenNewCoreRequested += (core) => this.AnmeldungenControl_MessageCoreSelected(core);
|
drc.OpenNewCoreRequested += (core) => this.AnmeldungenControl_MessageCoreSelected(core, DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].ShipcallDisplayMode);
|
||||||
drc.ReloadCoreRequested += Drc_ReloadCoreRequested;
|
drc.ReloadCoreRequested += Drc_ReloadCoreRequested;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -217,15 +219,26 @@ namespace ENI2
|
|||||||
// Dez.22: Special case for BRE/BRV: Warning if some messages are not "confirmed"
|
// Dez.22: Special case for BRE/BRV: Warning if some messages are not "confirmed"
|
||||||
if(drc.Core.PoC.Equals("DEBRE")||drc.Core.PoC.Equals("DEBRV"))
|
if(drc.Core.PoC.Equals("DEBRE")||drc.Core.PoC.Equals("DEBRV"))
|
||||||
{
|
{
|
||||||
if(drc.HasCriticalInfoMissing(out string missingClass))
|
if(drc.HasCriticalInfoMissing(out string missingClass, drc.Core.PoC))
|
||||||
{
|
{
|
||||||
_log.WarnFormat("set close warning because at least {0} is missing from BRE/BRV arrival", missingClass);
|
// _log.WarnFormat("set close warning because at least {0} is missing from BRE/BRV/HAM arrival", missingClass);
|
||||||
if (MessageBox.Show(string.Format(Properties.Resources.textSpecialCaseBREBRV, missingClass), Properties.Resources.textConfirmation, MessageBoxButton.YesNo,
|
if (MessageBox.Show(string.Format(Properties.Resources.textSpecialCaseBREBRV, missingClass), Properties.Resources.textConfirmation, MessageBoxButton.YesNo,
|
||||||
MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.No)
|
MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.No)
|
||||||
e.Cancel = true;
|
e.Cancel = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Jul.24: Special case HAM extended (from above)
|
||||||
|
if (drc.Core.PoC.Equals("DEHAM"))
|
||||||
|
{
|
||||||
|
if (drc.HasCriticalInfoMissing(out string missingClass, drc.Core.PoC))
|
||||||
|
{
|
||||||
|
if (MessageBox.Show(string.Format(Properties.Resources.textSpecialCaseDEHAM, missingClass), Properties.Resources.textConfirmation, MessageBoxButton.YesNo,
|
||||||
|
MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.No)
|
||||||
|
e.Cancel = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!e.Cancel)
|
if (!e.Cancel)
|
||||||
{
|
{
|
||||||
if (lockedCores.ContainsKey(tabItem))
|
if (lockedCores.ContainsKey(tabItem))
|
||||||
@ -304,6 +317,22 @@ namespace ENI2
|
|||||||
}
|
}
|
||||||
this.rootContainer.Children.Add(this.statusControl);
|
this.rootContainer.Children.Add(this.statusControl);
|
||||||
}
|
}
|
||||||
|
else if(sender == this.menuItemValueMappings)
|
||||||
|
{
|
||||||
|
if(this.vmControl == null)
|
||||||
|
{
|
||||||
|
this.vmControl = new ValueMappingsControl();
|
||||||
|
}
|
||||||
|
this.rootContainer.Children.Add(this.vmControl);
|
||||||
|
}
|
||||||
|
else if(sender == this.menuItemEasyPeasy)
|
||||||
|
{
|
||||||
|
if(this.easyPeasyControl == null)
|
||||||
|
{
|
||||||
|
this.easyPeasyControl = new EasyPeasyControl();
|
||||||
|
}
|
||||||
|
this.rootContainer.Children.Add(this.easyPeasyControl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void buttonCompareSheets_Click(object sender, RoutedEventArgs ev)
|
private void buttonCompareSheets_Click(object sender, RoutedEventArgs ev)
|
||||||
@ -319,7 +348,13 @@ namespace ENI2
|
|||||||
{
|
{
|
||||||
compareExcelDialog.BringUp();
|
compareExcelDialog.BringUp();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void buttonChangePassword_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
ChangePasswordDialog cpd = new ChangePasswordDialog();
|
||||||
|
cpd.CurrentUser = this.userEntity;
|
||||||
|
cpd.ShowDialog();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@ -351,6 +386,8 @@ namespace ENI2
|
|||||||
Properties.Settings.Default.MainWindowPlacement = this.GetPlacement();
|
Properties.Settings.Default.MainWindowPlacement = this.GetPlacement();
|
||||||
Properties.Settings.Default.Save();
|
Properties.Settings.Default.Save();
|
||||||
Microsoft.Win32.SystemEvents.SessionEnded -= SystemEvents_SessionEnded;
|
Microsoft.Win32.SystemEvents.SessionEnded -= SystemEvents_SessionEnded;
|
||||||
|
if (easyPeasyControl != null)
|
||||||
|
easyPeasyControl.SaveState();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Window_SourceInitialized(object sender, EventArgs e)
|
private void Window_SourceInitialized(object sender, EventArgs e)
|
||||||
@ -446,7 +483,7 @@ namespace ENI2
|
|||||||
if (((ShowIdDialog)sid).OpenCore)
|
if (((ShowIdDialog)sid).OpenCore)
|
||||||
{
|
{
|
||||||
Dispatcher.BeginInvoke((Action)(() => {
|
Dispatcher.BeginInvoke((Action)(() => {
|
||||||
this.AnmeldungenControl_MessageCoreSelected(closedDialog.Core); // in einem neuen Reiter öffnen
|
this.AnmeldungenControl_MessageCoreSelected(closedDialog.Core, DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].ShipcallDisplayMode); // in einem neuen Reiter öffnen
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -514,7 +551,7 @@ namespace ENI2
|
|||||||
|
|
||||||
// Meldeklassen für neuen Anlauf erzeugen:
|
// Meldeklassen für neuen Anlauf erzeugen:
|
||||||
bsmd.database.Util.CreateMessagesForCore(newCore, null, userEntity);
|
bsmd.database.Util.CreateMessagesForCore(newCore, null, userEntity);
|
||||||
this.AnmeldungenControl_MessageCoreSelected(newCore); // in einem neuen Reiter öffnen
|
this.AnmeldungenControl_MessageCoreSelected(newCore, DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].ShipcallDisplayMode); // in einem neuen Reiter öffnen
|
||||||
|
|
||||||
// watchdog registrieren, damit die "grüne" Markierung erscheint, sobald die Anmeldung durch den Excel-Prozess gelaufen ist.
|
// watchdog registrieren, damit die "grüne" Markierung erscheint, sobald die Anmeldung durch den Excel-Prozess gelaufen ist.
|
||||||
this._dbWatchDog.Register(newCore);
|
this._dbWatchDog.Register(newCore);
|
||||||
@ -586,7 +623,7 @@ namespace ENI2
|
|||||||
showIdDialog.Closed += (sid, showIdArgs) =>
|
showIdDialog.Closed += (sid, showIdArgs) =>
|
||||||
{
|
{
|
||||||
if (((ShowIdDialog)sid).OpenCore)
|
if (((ShowIdDialog)sid).OpenCore)
|
||||||
this.AnmeldungenControl_MessageCoreSelected(changedCore);
|
this.AnmeldungenControl_MessageCoreSelected(changedCore, DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].ShipcallDisplayMode);
|
||||||
};
|
};
|
||||||
showIdDialog.Show();
|
showIdDialog.Show();
|
||||||
showIdDialog.Activate();
|
showIdDialog.Activate();
|
||||||
@ -663,12 +700,14 @@ namespace ENI2
|
|||||||
App.UserId = this.userEntity.Id;
|
App.UserId = this.userEntity.Id;
|
||||||
ReportingParty.CurrentReportingParty = this.userEntity;
|
ReportingParty.CurrentReportingParty = this.userEntity;
|
||||||
this.menuItemMaersk.Visibility = Visibility.Visible;
|
this.menuItemMaersk.Visibility = Visibility.Visible;
|
||||||
|
this.menuItemValueMappings.Visibility = Visibility.Visible;
|
||||||
|
this.menuItemEasyPeasy.Visibility = Visibility.Visible;
|
||||||
if (this.userEntity.IsAdmin)
|
if (this.userEntity.IsAdmin)
|
||||||
{
|
{
|
||||||
this.menuItemUserAdministration.Visibility = Visibility.Visible;
|
this.menuItemUserAdministration.Visibility = Visibility.Visible;
|
||||||
this.sucheControl.AdminMode = true;
|
this.sucheControl.AdminMode = true;
|
||||||
}
|
}
|
||||||
|
this.menuItemValueMappings.Visibility = this.userEntity.IsEditor ? Visibility.Visible : Visibility.Hidden;
|
||||||
break;
|
break;
|
||||||
case ReportingParty.LogonResult.FAILED:
|
case ReportingParty.LogonResult.FAILED:
|
||||||
this.labelLoginResult.Content = Properties.Resources.textWrongPassword;
|
this.labelLoginResult.Content = Properties.Resources.textWrongPassword;
|
||||||
@ -725,6 +764,7 @@ namespace ENI2
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
1180
ENI2/Properties/Resources.Designer.cs
generated
1180
ENI2/Properties/Resources.Designer.cs
generated
File diff suppressed because it is too large
Load Diff
@ -586,6 +586,18 @@
|
|||||||
<data name="user_edit" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="user_edit" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\user_edit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\user_edit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="user_edit4" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\user_edit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="user_edit3" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\user_edit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="user_edit2" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\user_edit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="user_edit1" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\user_edit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="textSave" xml:space="preserve">
|
<data name="textSave" xml:space="preserve">
|
||||||
<value>Save</value>
|
<value>Save</value>
|
||||||
</data>
|
</data>
|
||||||
@ -1172,7 +1184,7 @@
|
|||||||
<value>Category</value>
|
<value>Category</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="textColumsOfIBC" xml:space="preserve">
|
<data name="textColumsOfIBC" xml:space="preserve">
|
||||||
<value>Columns "o" of OBC Code (value 15.19)</value>
|
<value>Columns "o" of IBC Code (value 15.19)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="textContainerNo" xml:space="preserve">
|
<data name="textContainerNo" xml:space="preserve">
|
||||||
<value>Container No.</value>
|
<value>Container No.</value>
|
||||||
@ -1606,6 +1618,9 @@
|
|||||||
<data name="textCopyClip" xml:space="preserve">
|
<data name="textCopyClip" xml:space="preserve">
|
||||||
<value>Copy Id to clipboard</value>
|
<value>Copy Id to clipboard</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="textCopyShipnameClip" xml:space="preserve">
|
||||||
|
<value>Copy ship name to clipboard</value>
|
||||||
|
</data>
|
||||||
<data name="textUpdateStatus" xml:space="preserve">
|
<data name="textUpdateStatus" xml:space="preserve">
|
||||||
<value>Server status update</value>
|
<value>Server status update</value>
|
||||||
</data>
|
</data>
|
||||||
@ -1742,7 +1757,7 @@
|
|||||||
<value>Select all</value>
|
<value>Select all</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="textSelectImportClasses" xml:space="preserve">
|
<data name="textSelectImportClasses" xml:space="preserve">
|
||||||
<value>Select classes to import</value>
|
<value>Select message classes</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="textSelectNone" xml:space="preserve">
|
<data name="textSelectNone" xml:space="preserve">
|
||||||
<value>Select none</value>
|
<value>Select none</value>
|
||||||
@ -1859,7 +1874,7 @@
|
|||||||
<value>Search NST2007 list</value>
|
<value>Search NST2007 list</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="textSpecialCaseBREBRV" xml:space="preserve">
|
<data name="textSpecialCaseBREBRV" xml:space="preserve">
|
||||||
<value>At least one of NOA_NOD, AGNT, INFO, SEC, TIEFA hasn't been sent for DEBRE/DEBRV: ({0}) Close anyway?</value>
|
<value>At least one of NOA_NOD, AGNT, INFO, SEC, TIEFA, SERV hasn't been sent for DEBRE/DEBRV/DEHAM: ({0}) Close anyway?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="about" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="about" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\about.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\about.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
@ -1876,4 +1891,381 @@
|
|||||||
<data name="exit" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="exit" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\exit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\exit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="textCopyIMO" xml:space="preserve">
|
||||||
|
<value>Copy IMO to clipboard</value>
|
||||||
|
</data>
|
||||||
|
<data name="textExcelValueMappings" xml:space="preserve">
|
||||||
|
<value>Excel import value mappings</value>
|
||||||
|
</data>
|
||||||
|
<data name="textCopyFromWAS" xml:space="preserve">
|
||||||
|
<value>Copy from WAS</value>
|
||||||
|
</data>
|
||||||
|
<data name="textCopyToWASConfirmation" xml:space="preserve">
|
||||||
|
<value>Do you want to copy / overwrite disposal amounts using values from WAS?</value>
|
||||||
|
</data>
|
||||||
|
<data name="textCopyToCREWA" xml:space="preserve">
|
||||||
|
<value>Copy to CREWA</value>
|
||||||
|
</data>
|
||||||
|
<data name="textCopyToCREWD" xml:space="preserve">
|
||||||
|
<value>Copy to CREWD</value>
|
||||||
|
</data>
|
||||||
|
<data name="textCopyToPASA" xml:space="preserve">
|
||||||
|
<value>Copy to PASA</value>
|
||||||
|
</data>
|
||||||
|
<data name="textCopyToPASD" xml:space="preserve">
|
||||||
|
<value>Copy to PASD</value>
|
||||||
|
</data>
|
||||||
|
<data name="textSpecialCaseDEHAM" xml:space="preserve">
|
||||||
|
<value>{0} has not been sent for DEHAM. Close anyway?</value>
|
||||||
|
</data>
|
||||||
|
<data name="textDeleteAllEntries" xml:space="preserve">
|
||||||
|
<value>Delete all entries</value>
|
||||||
|
</data>
|
||||||
|
<data name="textConfimDeleteAllEntries" xml:space="preserve">
|
||||||
|
<value>This will delete all entries. Are you sure?</value>
|
||||||
|
</data>
|
||||||
|
<data name="textVoyage" xml:space="preserve">
|
||||||
|
<value>1. Voyage</value>
|
||||||
|
</data>
|
||||||
|
<data name="text11PreviousPort" xml:space="preserve">
|
||||||
|
<value>1.1 Previous port</value>
|
||||||
|
</data>
|
||||||
|
<data name="text12IncomingVoyage" xml:space="preserve">
|
||||||
|
<value>1.2 Incoming voyage</value>
|
||||||
|
</data>
|
||||||
|
<data name="text13RelevantPortcall" xml:space="preserve">
|
||||||
|
<value>1.3 Relevant Portcall (port of call) / Kiel-Canal-Transit</value>
|
||||||
|
</data>
|
||||||
|
<data name="text14OutgoingVoyage" xml:space="preserve">
|
||||||
|
<value>1.4 Outgoing voyage</value>
|
||||||
|
</data>
|
||||||
|
<data name="text15NextPort" xml:space="preserve">
|
||||||
|
<value>1.5 Next port</value>
|
||||||
|
</data>
|
||||||
|
<data name="text16Voyage" xml:space="preserve">
|
||||||
|
<value>1.5 Voyage</value>
|
||||||
|
</data>
|
||||||
|
<data name="text17Last10PortFacilitiesCalled" xml:space="preserve">
|
||||||
|
<value>1.7 Last 10 port facilities called</value>
|
||||||
|
</data>
|
||||||
|
<data name="text18ShipToShip" xml:space="preserve">
|
||||||
|
<value>1.8 Ship to ship activities during last 10 port facilities called</value>
|
||||||
|
</data>
|
||||||
|
<data name="text19PortsCalled30days" xml:space="preserve">
|
||||||
|
<value>1.9 Ports called during the last 30 days</value>
|
||||||
|
</data>
|
||||||
|
<data name="text110MaritimeHealthData" xml:space="preserve">
|
||||||
|
<value>1.10 Maritime health data</value>
|
||||||
|
</data>
|
||||||
|
<data name="text111PortOfItinerary" xml:space="preserve">
|
||||||
|
<value>1.11 Port of itinerary</value>
|
||||||
|
</data>
|
||||||
|
<data name="textDefaultDisplay" xml:space="preserve">
|
||||||
|
<value>Default display</value>
|
||||||
|
</data>
|
||||||
|
<data name="textOpenClassic" xml:space="preserve">
|
||||||
|
<value>Open in classic display mode</value>
|
||||||
|
</data>
|
||||||
|
<data name="textOpenFormsheet" xml:space="preserve">
|
||||||
|
<value>Open in form sheet display mode</value>
|
||||||
|
</data>
|
||||||
|
<data name="text1Voyage" xml:space="preserve">
|
||||||
|
<value>1. Voyage</value>
|
||||||
|
</data>
|
||||||
|
<data name="text2PortCall" xml:space="preserve">
|
||||||
|
<value>2. Port call</value>
|
||||||
|
</data>
|
||||||
|
<data name="text21ReferenceNumbers" xml:space="preserve">
|
||||||
|
<value>2.1 Reference numbers</value>
|
||||||
|
</data>
|
||||||
|
<data name="text22PortOperations" xml:space="preserve">
|
||||||
|
<value>2.2 Port operations</value>
|
||||||
|
</data>
|
||||||
|
<data name="text23Agency" xml:space="preserve">
|
||||||
|
<value>2.3 Agency</value>
|
||||||
|
</data>
|
||||||
|
<data name="text24Invoice" xml:space="preserve">
|
||||||
|
<value>2.4 Invoice (concerning mooring fees, disposal costs etc.)</value>
|
||||||
|
</data>
|
||||||
|
<data name="text25CargeOnBoard" xml:space="preserve">
|
||||||
|
<value>2.5 Cargo on board related to incoming journey</value>
|
||||||
|
</data>
|
||||||
|
<data name="text26CargoPort" xml:space="preserve">
|
||||||
|
<value>2.6 Cargo handled in port of call (cargo to discharge / load / transiting)</value>
|
||||||
|
</data>
|
||||||
|
<data name="text27Waste" xml:space="preserve">
|
||||||
|
<value>2.7 Waste (MARPOL) data</value>
|
||||||
|
</data>
|
||||||
|
<data name="text28Store" xml:space="preserve">
|
||||||
|
<value>2.8 Store information</value>
|
||||||
|
</data>
|
||||||
|
<data name="text29CrewEffects" xml:space="preserve">
|
||||||
|
<value>2.9 IMO crew effects declaration (IMO FAL form 4)</value>
|
||||||
|
</data>
|
||||||
|
<data name="textStore" xml:space="preserve">
|
||||||
|
<value>Store</value>
|
||||||
|
</data>
|
||||||
|
<data name="textQuantityUnit" xml:space="preserve">
|
||||||
|
<value>Quantity unit</value>
|
||||||
|
</data>
|
||||||
|
<data name="textLocationOnBoard" xml:space="preserve">
|
||||||
|
<value>Location on board</value>
|
||||||
|
</data>
|
||||||
|
<data name="textOfficialUse" xml:space="preserve">
|
||||||
|
<value>Official use</value>
|
||||||
|
</data>
|
||||||
|
<data name="text3PreArrival" xml:space="preserve">
|
||||||
|
<value>3. Pre-arrival</value>
|
||||||
|
</data>
|
||||||
|
<data name="text31General" xml:space="preserve">
|
||||||
|
<value>3.1 General</value>
|
||||||
|
</data>
|
||||||
|
<data name="text32PersonsOnBoard" xml:space="preserve">
|
||||||
|
<value>3.2 Persons on board on arrival</value>
|
||||||
|
</data>
|
||||||
|
<data name="text33BunkerOnArrival" xml:space="preserve">
|
||||||
|
<value>3.3 Bunker on arrival</value>
|
||||||
|
</data>
|
||||||
|
<data name="text34DangerousCargo" xml:space="preserve">
|
||||||
|
<value>3.4 Dangerous cargo on board on arrival</value>
|
||||||
|
</data>
|
||||||
|
<data name="text36TowOnArrival" xml:space="preserve">
|
||||||
|
<value>3.5 Tow (barge, pontoon, etc.) on arrival</value>
|
||||||
|
</data>
|
||||||
|
<data name="textAreMatterToReport" xml:space="preserve">
|
||||||
|
<value>Are any security-related matters to report?</value>
|
||||||
|
</data>
|
||||||
|
<data name="textMatterToReport" xml:space="preserve">
|
||||||
|
<value>if yes, description of matters to report</value>
|
||||||
|
</data>
|
||||||
|
<data name="text4PreDeparture" xml:space="preserve">
|
||||||
|
<value>4. Pre-departure</value>
|
||||||
|
</data>
|
||||||
|
<data name="text42PersonsOnBoard" xml:space="preserve">
|
||||||
|
<value>4.2 Persons on board on departure</value>
|
||||||
|
</data>
|
||||||
|
<data name="text43BunkerOnDeparture" xml:space="preserve">
|
||||||
|
<value>4.3 Bunker on departure</value>
|
||||||
|
</data>
|
||||||
|
<data name="text44DangerousCargo" xml:space="preserve">
|
||||||
|
<value>4.4 Dangerous cargo on board on departure</value>
|
||||||
|
</data>
|
||||||
|
<data name="text45TowOnDeparture" xml:space="preserve">
|
||||||
|
<value>4.5 Tow (barge, pontoon etc.) on departure</value>
|
||||||
|
</data>
|
||||||
|
<data name="text41General" xml:space="preserve">
|
||||||
|
<value>4.1 General</value>
|
||||||
|
</data>
|
||||||
|
<data name="text5ShipData" xml:space="preserve">
|
||||||
|
<value>5. Ship data</value>
|
||||||
|
</data>
|
||||||
|
<data name="text51General" xml:space="preserve">
|
||||||
|
<value>5.1 General</value>
|
||||||
|
</data>
|
||||||
|
<data name="text52SSCEC" xml:space="preserve">
|
||||||
|
<value>5.2 SSCEC</value>
|
||||||
|
</data>
|
||||||
|
<data name="text53ISPS" xml:space="preserve">
|
||||||
|
<value>5.3 ISPS</value>
|
||||||
|
</data>
|
||||||
|
<data name="text54TankerDetails" xml:space="preserve">
|
||||||
|
<value>5.4 Tanker details</value>
|
||||||
|
</data>
|
||||||
|
<data name="textNetTonnage" xml:space="preserve">
|
||||||
|
<value>Net tonnage</value>
|
||||||
|
</data>
|
||||||
|
<data name="textRegistryDate" xml:space="preserve">
|
||||||
|
<value>Registry date</value>
|
||||||
|
</data>
|
||||||
|
<data name="textCertificateOfRegistryNumber" xml:space="preserve">
|
||||||
|
<value>Certificate of registry number</value>
|
||||||
|
</data>
|
||||||
|
<data name="textIsDueToInspection" xml:space="preserve">
|
||||||
|
<value>Is due to inspection?</value>
|
||||||
|
</data>
|
||||||
|
<data name="textPossibleAnchorage" xml:space="preserve">
|
||||||
|
<value>Possible anchorage?</value>
|
||||||
|
</data>
|
||||||
|
<data name="textShipEmail" xml:space="preserve">
|
||||||
|
<value>Ship e-mail</value>
|
||||||
|
</data>
|
||||||
|
<data name="text6CrewDataOnArrival" xml:space="preserve">
|
||||||
|
<value>6. Crew data on arrival</value>
|
||||||
|
</data>
|
||||||
|
<data name="text7CrewDeparture" xml:space="preserve">
|
||||||
|
<value>7. Crew data on departure</value>
|
||||||
|
</data>
|
||||||
|
<data name="text8PassengerArrival" xml:space="preserve">
|
||||||
|
<value>8. Passenger data on arrival</value>
|
||||||
|
</data>
|
||||||
|
<data name="text9PassengerDeparture" xml:space="preserve">
|
||||||
|
<value>9. Passenger data on departure</value>
|
||||||
|
</data>
|
||||||
|
<data name="text10DangerousCargoArrival" xml:space="preserve">
|
||||||
|
<value>10. Dangerous cargo data on arrival</value>
|
||||||
|
</data>
|
||||||
|
<data name="text11DangerousCargoDeparture" xml:space="preserve">
|
||||||
|
<value>11. Dangerous cargo data on departure</value>
|
||||||
|
</data>
|
||||||
|
<data name="text12ATAATD" xml:space="preserve">
|
||||||
|
<value>12. Actual time of arrival / departure</value>
|
||||||
|
</data>
|
||||||
|
<data name="text13WasteReceipts" xml:space="preserve">
|
||||||
|
<value>13. Waste receipts</value>
|
||||||
|
</data>
|
||||||
|
<data name="textDGContactFamilyName" xml:space="preserve">
|
||||||
|
<value>DG manifest contact - family name</value>
|
||||||
|
</data>
|
||||||
|
<data name="textDGContactPhone" xml:space="preserve">
|
||||||
|
<value>DG manifest contact - phone</value>
|
||||||
|
</data>
|
||||||
|
<data name="text102IBCData" xml:space="preserve">
|
||||||
|
<value>10.2 IBC data (on arrival), if applicable</value>
|
||||||
|
</data>
|
||||||
|
<data name="text10.3IGCData" xml:space="preserve">
|
||||||
|
<value>10.3 IGC data (on arrival), if applicable</value>
|
||||||
|
</data>
|
||||||
|
<data name="text104IMSBCData" xml:space="preserve">
|
||||||
|
<value>10.4 IMSBC data (on arrival), if applicable</value>
|
||||||
|
</data>
|
||||||
|
<data name="text103IGCData" xml:space="preserve">
|
||||||
|
<value>10.3 IGC data (on arrival), if applicable</value>
|
||||||
|
</data>
|
||||||
|
<data name="text105MARPOLData" xml:space="preserve">
|
||||||
|
<value>10.5 MARPOL I data (on arrival), if applicable</value>
|
||||||
|
</data>
|
||||||
|
<data name="text106IMDGData" xml:space="preserve">
|
||||||
|
<value>10.6 IMDG data (on arrival), if applicable</value>
|
||||||
|
</data>
|
||||||
|
<data name="text101General" xml:space="preserve">
|
||||||
|
<value>10.1 General</value>
|
||||||
|
</data>
|
||||||
|
<data name="text111General" xml:space="preserve">
|
||||||
|
<value>11.1 General</value>
|
||||||
|
</data>
|
||||||
|
<data name="text112IBCData" xml:space="preserve">
|
||||||
|
<value>11.2 IBC data (on departure), if applicable</value>
|
||||||
|
</data>
|
||||||
|
<data name="text113IGCData" xml:space="preserve">
|
||||||
|
<value>11.3 IGC data (on departure), if applicable</value>
|
||||||
|
</data>
|
||||||
|
<data name="text114IMSBCData" xml:space="preserve">
|
||||||
|
<value>11.4 IMSBC data (on departure), if applicable</value>
|
||||||
|
</data>
|
||||||
|
<data name="text115MARPOLData" xml:space="preserve">
|
||||||
|
<value>11.5 MARPOL I data (on departure), if applicable</value>
|
||||||
|
</data>
|
||||||
|
<data name="text116IMDGData" xml:space="preserve">
|
||||||
|
<value>11.6 IMDG data (on departure), if applicable</value>
|
||||||
|
</data>
|
||||||
|
<data name="text121ATA" xml:space="preserve">
|
||||||
|
<value>12.1 Actual time of arrival</value>
|
||||||
|
</data>
|
||||||
|
<data name="text122ATD" xml:space="preserve">
|
||||||
|
<value>12.2 Actual time of departure</value>
|
||||||
|
</data>
|
||||||
|
<data name="text131WasteReceipt" xml:space="preserve">
|
||||||
|
<value>13.1 Waste receipt</value>
|
||||||
|
</data>
|
||||||
|
<data name="clock" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\clock.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="text102" xml:space="preserve">
|
||||||
|
<value>2 IBC</value>
|
||||||
|
</data>
|
||||||
|
<data name="text103" xml:space="preserve">
|
||||||
|
<value>3 IGC</value>
|
||||||
|
</data>
|
||||||
|
<data name="text104" xml:space="preserve">
|
||||||
|
<value>4 IMSBC</value>
|
||||||
|
</data>
|
||||||
|
<data name="text105" xml:space="preserve">
|
||||||
|
<value>5 MARPOL I</value>
|
||||||
|
</data>
|
||||||
|
<data name="text106" xml:space="preserve">
|
||||||
|
<value>6 IMDG</value>
|
||||||
|
</data>
|
||||||
|
<data name="textTab11" xml:space="preserve">
|
||||||
|
<value>1-6 Actual</value>
|
||||||
|
</data>
|
||||||
|
<data name="textTab12" xml:space="preserve">
|
||||||
|
<value>7-9 Tables</value>
|
||||||
|
</data>
|
||||||
|
<data name="textTab13" xml:space="preserve">
|
||||||
|
<value>10 MDH</value>
|
||||||
|
</data>
|
||||||
|
<data name="textTab14" xml:space="preserve">
|
||||||
|
<value>11 Cruise</value>
|
||||||
|
</data>
|
||||||
|
<data name="textTab21" xml:space="preserve">
|
||||||
|
<value>1-2 Berth</value>
|
||||||
|
</data>
|
||||||
|
<data name="textTab22" xml:space="preserve">
|
||||||
|
<value>3-4 Contact</value>
|
||||||
|
</data>
|
||||||
|
<data name="textTab23" xml:space="preserve">
|
||||||
|
<value>5-6 Cargo</value>
|
||||||
|
</data>
|
||||||
|
<data name="textTab24" xml:space="preserve">
|
||||||
|
<value>7 Waste</value>
|
||||||
|
</data>
|
||||||
|
<data name="textTab51" xml:space="preserve">
|
||||||
|
<value>1 General</value>
|
||||||
|
</data>
|
||||||
|
<data name="textTab52" xml:space="preserve">
|
||||||
|
<value>2-3 MDH / SEC</value>
|
||||||
|
</data>
|
||||||
|
<data name="textTab53" xml:space="preserve">
|
||||||
|
<value>4 Tanker</value>
|
||||||
|
</data>
|
||||||
|
<data name="textNewPassword" xml:space="preserve">
|
||||||
|
<value>New password</value>
|
||||||
|
</data>
|
||||||
|
<data name="textOldPassword" xml:space="preserve">
|
||||||
|
<value>Old password</value>
|
||||||
|
</data>
|
||||||
|
<data name="textRepeatNewPassword" xml:space="preserve">
|
||||||
|
<value>Repeat new password</value>
|
||||||
|
</data>
|
||||||
|
<data name="textMDHSimplification" xml:space="preserve">
|
||||||
|
<value>MDH simplification available</value>
|
||||||
|
</data>
|
||||||
|
<data name="textSECSimplification" xml:space="preserve">
|
||||||
|
<value>SEC simplification available</value>
|
||||||
|
</data>
|
||||||
|
<data name="textCopyFromCREWA" xml:space="preserve">
|
||||||
|
<value>Copy from CREWA</value>
|
||||||
|
</data>
|
||||||
|
<data name="textSelectCrewMember" xml:space="preserve">
|
||||||
|
<value>Select crew member</value>
|
||||||
|
</data>
|
||||||
|
<data name="textSERVTemplate" xml:space="preserve">
|
||||||
|
<value>SERV-Template</value>
|
||||||
|
</data>
|
||||||
|
<data name="pencil" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\pencil.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="textWasteDisposalServiceProvider" xml:space="preserve">
|
||||||
|
<value>Waste disposal service provider</value>
|
||||||
|
</data>
|
||||||
|
<data name="textSendAll" xml:space="preserve">
|
||||||
|
<value>Send all</value>
|
||||||
|
</data>
|
||||||
|
<data name="textENIStatus" xml:space="preserve">
|
||||||
|
<value>ENI-Status</value>
|
||||||
|
</data>
|
||||||
|
<data name="textNSWStatus" xml:space="preserve">
|
||||||
|
<value>NSW-Status</value>
|
||||||
|
</data>
|
||||||
|
<data name="textConfirmWSDPOverwrite" xml:space="preserve">
|
||||||
|
<value>The existing value for the waste disposal service provider will be overwritten.
|
||||||
|
|
||||||
|
Current entry: {0}
|
||||||
|
New entry: {1}
|
||||||
|
|
||||||
|
Proceed?</value>
|
||||||
|
</data>
|
||||||
|
<data name="textEasyPeasy" xml:space="preserve">
|
||||||
|
<value>Easy Peasy 🍋</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
102
ENI2/Properties/Settings.Designer.cs
generated
102
ENI2/Properties/Settings.Designer.cs
generated
@ -12,7 +12,7 @@ namespace ENI2.Properties {
|
|||||||
|
|
||||||
|
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.0.0")]
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.5.0.0")]
|
||||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||||
|
|
||||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||||
@ -82,12 +82,108 @@ namespace ENI2.Properties {
|
|||||||
|
|
||||||
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
[global::System.Configuration.DefaultSettingValueAttribute("Initial Catalog=nsw;Data Source=192.168.2.24\\SQLEXPRESS;Uid=dfuser;pwd=dfpasswd;P" +
|
[global::System.Configuration.DefaultSettingValueAttribute("Initial Catalog=nswtest;Data Source=192.168.2.24\\SQLEXPRESS;Uid=dfuser;pwd=dfpass" +
|
||||||
"ersist Security Info=False;Connection Reset=false")]
|
"wd;Persist Security Info=False;Connection Reset=false")]
|
||||||
public string ConnectionString {
|
public string ConnectionString {
|
||||||
get {
|
get {
|
||||||
return ((string)(this["ConnectionString"]));
|
return ((string)(this["ConnectionString"]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("825")]
|
||||||
|
public string Width {
|
||||||
|
get {
|
||||||
|
return ((string)(this["Width"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["Width"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("450")]
|
||||||
|
public string Height {
|
||||||
|
get {
|
||||||
|
return ((string)(this["Height"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["Height"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||||
|
public string W1Left {
|
||||||
|
get {
|
||||||
|
return ((string)(this["W1Left"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["W1Left"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||||
|
public string W1Top {
|
||||||
|
get {
|
||||||
|
return ((string)(this["W1Top"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["W1Top"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||||
|
public string W2Left {
|
||||||
|
get {
|
||||||
|
return ((string)(this["W2Left"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["W2Left"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||||
|
public string W2Top {
|
||||||
|
get {
|
||||||
|
return ((string)(this["W2Top"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["W2Top"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||||
|
public string W3Left {
|
||||||
|
get {
|
||||||
|
return ((string)(this["W3Left"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["W3Left"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||||
|
public string W3Top {
|
||||||
|
get {
|
||||||
|
return ((string)(this["W3Top"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["W3Top"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,7 +21,31 @@
|
|||||||
<Value Profile="(Default)">BSMD ReportGenerator</Value>
|
<Value Profile="(Default)">BSMD ReportGenerator</Value>
|
||||||
</Setting>
|
</Setting>
|
||||||
<Setting Name="ConnectionString" Type="System.String" Scope="Application">
|
<Setting Name="ConnectionString" Type="System.String" Scope="Application">
|
||||||
<Value Profile="(Default)">Initial Catalog=nsw;Data Source=192.168.2.24\SQLEXPRESS;Uid=dfuser;pwd=dfpasswd;Persist Security Info=False;Connection Reset=false</Value>
|
<Value Profile="(Default)">Initial Catalog=nswtest;Data Source=192.168.2.24\SQLEXPRESS;Uid=dfuser;pwd=dfpasswd;Persist Security Info=False;Connection Reset=false</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="Width" Type="System.String" Scope="User">
|
||||||
|
<Value Profile="(Default)">825</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="Height" Type="System.String" Scope="User">
|
||||||
|
<Value Profile="(Default)">450</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="W1Left" Type="System.String" Scope="User">
|
||||||
|
<Value Profile="(Default)">0</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="W1Top" Type="System.String" Scope="User">
|
||||||
|
<Value Profile="(Default)">0</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="W2Left" Type="System.String" Scope="User">
|
||||||
|
<Value Profile="(Default)">0</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="W2Top" Type="System.String" Scope="User">
|
||||||
|
<Value Profile="(Default)">0</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="W3Left" Type="System.String" Scope="User">
|
||||||
|
<Value Profile="(Default)">0</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="W3Top" Type="System.String" Scope="User">
|
||||||
|
<Value Profile="(Default)">0</Value>
|
||||||
</Setting>
|
</Setting>
|
||||||
</Settings>
|
</Settings>
|
||||||
</SettingsFile>
|
</SettingsFile>
|
||||||
BIN
ENI2/Report/Logo.png
Normal file
BIN
ENI2/Report/Logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.3 KiB |
@ -101,7 +101,7 @@ namespace ENI2.Report
|
|||||||
string migraTempFile = string.Format("{1}\\{0}.mdddl", filenameCore, Path.GetDirectoryName(filename));
|
string migraTempFile = string.Format("{1}\\{0}.mdddl", filenameCore, Path.GetDirectoryName(filename));
|
||||||
MigraDoc.DocumentObjectModel.IO.DdlWriter.WriteToFile(document, migraTempFile);
|
MigraDoc.DocumentObjectModel.IO.DdlWriter.WriteToFile(document, migraTempFile);
|
||||||
|
|
||||||
PdfDocumentRenderer renderer = new PdfDocumentRenderer(true);
|
PdfDocumentRenderer renderer = new PdfDocumentRenderer();
|
||||||
renderer.Document = document;
|
renderer.Document = document;
|
||||||
renderer.RenderDocument();
|
renderer.RenderDocument();
|
||||||
|
|
||||||
@ -254,7 +254,7 @@ namespace ENI2.Report
|
|||||||
table.AddColumn(140);
|
table.AddColumn(140);
|
||||||
|
|
||||||
Row row = table.AddRow();
|
Row row = table.AddRow();
|
||||||
Image logoImage = row.Cells[0].AddImage(@"Report\Logo.gif"); // kann man offenbar nur von einem Pfad laden
|
Image logoImage = row.Cells[0].AddImage(@"Report\Logo.png"); // kann man offenbar nur von einem Pfad laden
|
||||||
logoImage.Width = 80;
|
logoImage.Width = 80;
|
||||||
row.Cells[0].MergeDown = 6;
|
row.Cells[0].MergeDown = 6;
|
||||||
|
|
||||||
@ -373,43 +373,50 @@ namespace ENI2.Report
|
|||||||
|
|
||||||
switch (message.MessageNotificationClass)
|
switch (message.MessageNotificationClass)
|
||||||
{
|
{
|
||||||
case Message.NotificationClass.CREW:
|
case Message.NotificationClass.CREWA:
|
||||||
case Message.NotificationClass.CREWD:
|
case Message.NotificationClass.CREWD:
|
||||||
case Message.NotificationClass.PAS:
|
case Message.NotificationClass.PASA:
|
||||||
case Message.NotificationClass.PASD:
|
case Message.NotificationClass.PASD:
|
||||||
case Message.NotificationClass.TOWA:
|
case Message.NotificationClass.TOWA:
|
||||||
case Message.NotificationClass.TOWD:
|
case Message.NotificationClass.TOWD:
|
||||||
case Message.NotificationClass.HAZA when (message.Elements[0] is HAZ haz) && ((haz.IMDGPositions.Count > 0) || (haz.IBCPositions.Count > 0) || (haz.IGCPositions.Count > 0) || (haz.IMSBCPositions.Count > 0) || (haz.MARPOLPositions.Count > 0)):
|
case Message.NotificationClass.HAZA when (message.Elements[0] is HAZ haz) && ((haz.IMDGPositions.Count > 0) || (haz.IBCPositions.Count > 0) || (haz.IGCPositions.Count > 0) || (haz.IMSBCPositions.Count > 0) || (haz.MARPOLPositions.Count > 0)):
|
||||||
case Message.NotificationClass.HAZD when (message.Elements[0] is HAZ hazd) && ((hazd.IMDGPositions.Count > 0) || (hazd.IBCPositions.Count > 0) || (hazd.IGCPositions.Count > 0) || (hazd.IMSBCPositions.Count > 0) || (hazd.MARPOLPositions.Count > 0)):
|
case Message.NotificationClass.HAZD when (message.Elements[0] is HAZ hazd) && ((hazd.IMDGPositions.Count > 0) || (hazd.IBCPositions.Count > 0) || (hazd.IGCPositions.Count > 0) || (hazd.IMSBCPositions.Count > 0) || (hazd.MARPOLPositions.Count > 0)):
|
||||||
{
|
{
|
||||||
// Landscape if not set
|
// Landscape if not set
|
||||||
if (_lastOrientation == Orientation.Portrait)
|
if (_lastOrientation == Orientation.Portrait)
|
||||||
{
|
{
|
||||||
DefineContentSection(document, Orientation.Landscape, false);
|
DefineContentSection(document, Orientation.Landscape, false);
|
||||||
_lastOrientation = Orientation.Landscape;
|
_lastOrientation = Orientation.Landscape;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
document.LastSection.AddPageBreak();
|
document.LastSection.AddPageBreak();
|
||||||
}
|
}
|
||||||
|
|
||||||
document.LastSection.AddParagraph(ReplaceTitle(messageParagraph.Title), "Heading2");
|
string title = messageParagraph.Title;
|
||||||
document.LastSection.AddParagraph(ReplaceTitle(messageParagraph.Subtitle), "Heading3");
|
if (message.MessageNotificationClass == Message.NotificationClass.CREWA) title = "CREWA";
|
||||||
|
if (message.MessageNotificationClass == Message.NotificationClass.CREWD) title = "CREWD";
|
||||||
|
if (message.MessageNotificationClass == Message.NotificationClass.PASA) title = "PASA";
|
||||||
|
if (message.MessageNotificationClass == Message.NotificationClass.PASD) title = "PASD";
|
||||||
|
|
||||||
}
|
|
||||||
break;
|
document.LastSection.AddParagraph(ReplaceTitle(title), "Heading2");
|
||||||
|
document.LastSection.AddParagraph(ReplaceTitle(messageParagraph.Subtitle), "Heading3");
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
{
|
|
||||||
if (_lastOrientation == Orientation.Landscape)
|
|
||||||
{
|
{
|
||||||
ReportDocument.DefineContentSection(document, Orientation.Portrait, false);
|
if (_lastOrientation == Orientation.Landscape)
|
||||||
_lastOrientation = Orientation.Portrait;
|
{
|
||||||
}
|
ReportDocument.DefineContentSection(document, Orientation.Portrait, false);
|
||||||
|
_lastOrientation = Orientation.Portrait;
|
||||||
|
}
|
||||||
|
|
||||||
document.LastSection.AddParagraph(ReplaceTitle(messageParagraph.Title), "Heading2");
|
document.LastSection.AddParagraph(ReplaceTitle(messageParagraph.Title), "Heading2");
|
||||||
document.LastSection.AddParagraph(ReplaceTitle(messageParagraph.Subtitle), "Heading3");
|
document.LastSection.AddParagraph(ReplaceTitle(messageParagraph.Subtitle), "Heading3");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@ -418,11 +425,11 @@ namespace ENI2.Report
|
|||||||
|
|
||||||
switch(message.MessageNotificationClass)
|
switch(message.MessageNotificationClass)
|
||||||
{
|
{
|
||||||
case Message.NotificationClass.CREW:
|
case Message.NotificationClass.CREWA:
|
||||||
case Message.NotificationClass.CREWD:
|
case Message.NotificationClass.CREWD:
|
||||||
CreateCrewTable(document, message);
|
CreateCrewTable(document, message);
|
||||||
return;
|
return;
|
||||||
case Message.NotificationClass.PAS:
|
case Message.NotificationClass.PASA:
|
||||||
case Message.NotificationClass.PASD:
|
case Message.NotificationClass.PASD:
|
||||||
CreatePassengerTable(document, message);
|
CreatePassengerTable(document, message);
|
||||||
return;
|
return;
|
||||||
@ -519,13 +526,27 @@ namespace ENI2.Report
|
|||||||
#region CREW
|
#region CREW
|
||||||
private static void CreateCrewTable(Document document, Message message)
|
private static void CreateCrewTable(Document document, Message message)
|
||||||
{
|
{
|
||||||
|
string textSchengen = "[ ] Schengen";
|
||||||
|
|
||||||
|
if(message.Elements.Count > 0)
|
||||||
|
{
|
||||||
|
CREW firstCREW = message.Elements[0] as CREW;
|
||||||
|
if(firstCREW.NotificationSchengen ?? false)
|
||||||
|
{
|
||||||
|
textSchengen = "[X] Schengen";
|
||||||
|
}
|
||||||
|
|
||||||
|
document.LastSection.AddParagraph(firstCREW.NotificationPAX ?? false ? "[X] PAX notification" : "[ ] PAX notification");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
Table table = AddGrayTable(document);
|
Table table = AddGrayTable(document);
|
||||||
table.Format.Font.Size = 9;
|
table.Format.Font.Size = 8;
|
||||||
|
|
||||||
|
// width: 25
|
||||||
|
|
||||||
Column column = table.AddColumn();
|
Column column = table.AddColumn();
|
||||||
column.Width = Unit.FromCentimeter(1);
|
column.Width = Unit.FromCentimeter(0.75);
|
||||||
column = table.AddColumn();
|
|
||||||
column.Width = Unit.FromCentimeter(3);
|
|
||||||
column = table.AddColumn();
|
column = table.AddColumn();
|
||||||
column.Width = Unit.FromCentimeter(3);
|
column.Width = Unit.FromCentimeter(3);
|
||||||
column = table.AddColumn();
|
column = table.AddColumn();
|
||||||
@ -533,17 +554,28 @@ namespace ENI2.Report
|
|||||||
column = table.AddColumn();
|
column = table.AddColumn();
|
||||||
column.Width = Unit.FromCentimeter(2.5);
|
column.Width = Unit.FromCentimeter(2.5);
|
||||||
column = table.AddColumn();
|
column = table.AddColumn();
|
||||||
|
column.Width = Unit.FromCentimeter(2);
|
||||||
|
column = table.AddColumn();
|
||||||
column.Width = Unit.FromCentimeter(1.5);
|
column.Width = Unit.FromCentimeter(1.5);
|
||||||
column = table.AddColumn();
|
column = table.AddColumn();
|
||||||
column.Width = Unit.FromCentimeter(1);
|
column.Width = Unit.FromCentimeter(0.75);
|
||||||
column = table.AddColumn();
|
column = table.AddColumn();
|
||||||
column.Width = Unit.FromCentimeter(2);
|
column.Width = Unit.FromCentimeter(2);
|
||||||
column = table.AddColumn();
|
column = table.AddColumn();
|
||||||
column.Width = Unit.FromCentimeter(3);
|
column.Width = Unit.FromCentimeter(2);
|
||||||
|
column = table.AddColumn();
|
||||||
|
column.Width = Unit.FromCentimeter(1.5);
|
||||||
column = table.AddColumn();
|
column = table.AddColumn();
|
||||||
column.Width = Unit.FromCentimeter(2);
|
column.Width = Unit.FromCentimeter(2);
|
||||||
column = table.AddColumn();
|
column = table.AddColumn();
|
||||||
column.Width = Unit.FromCentimeter(3);
|
column.Width = Unit.FromCentimeter(2);
|
||||||
|
column = table.AddColumn();
|
||||||
|
column.Width = Unit.FromCentimeter(2);
|
||||||
|
|
||||||
|
Row firstRow = table.AddRow();
|
||||||
|
firstRow.Cells[7].AddParagraph(textSchengen);
|
||||||
|
firstRow.Cells[7].Shading.Color = Colors.LightGray;
|
||||||
|
firstRow.Cells[7].MergeRight = 5;
|
||||||
|
|
||||||
Row hRow = table.AddRow();
|
Row hRow = table.AddRow();
|
||||||
hRow.Cells[1].AddParagraph("Last name");
|
hRow.Cells[1].AddParagraph("Last name");
|
||||||
@ -554,13 +586,16 @@ namespace ENI2.Report
|
|||||||
hRow.Cells[6].AddParagraph("Nat.");
|
hRow.Cells[6].AddParagraph("Nat.");
|
||||||
hRow.Cells[7].AddParagraph("Id doc. type");
|
hRow.Cells[7].AddParagraph("Id doc. type");
|
||||||
hRow.Cells[8].AddParagraph("Id doc. number");
|
hRow.Cells[8].AddParagraph("Id doc. number");
|
||||||
hRow.Cells[9].AddParagraph("Visa number");
|
hRow.Cells[9].AddParagraph("Iss. state");
|
||||||
hRow.Cells[10].AddParagraph("Duty");
|
hRow.Cells[10].AddParagraph("Exp. date");
|
||||||
|
hRow.Cells[11].AddParagraph("Visa number");
|
||||||
|
hRow.Cells[12].AddParagraph("Duty");
|
||||||
|
|
||||||
for (int i = 0; i < message.Elements.Count; i++)
|
for (int i = 0; i < message.Elements.Count; i++)
|
||||||
{
|
{
|
||||||
CREW crew = message.Elements[i] as CREW;
|
CREW crew = message.Elements[i] as CREW;
|
||||||
Row row = table.AddRow();
|
Row row = table.AddRow();
|
||||||
|
|
||||||
row.Cells[0].AddParagraph((i + 1).ToString());
|
row.Cells[0].AddParagraph((i + 1).ToString());
|
||||||
row.Cells[1].AddParagraph(crew.CrewMemberLastName ?? "");
|
row.Cells[1].AddParagraph(crew.CrewMemberLastName ?? "");
|
||||||
row.Cells[2].AddParagraph(crew.CrewMemberFirstName ?? "");
|
row.Cells[2].AddParagraph(crew.CrewMemberFirstName ?? "");
|
||||||
@ -569,9 +604,11 @@ namespace ENI2.Report
|
|||||||
row.Cells[5].AddParagraph(crew.CrewMemberGenderDisplay);
|
row.Cells[5].AddParagraph(crew.CrewMemberGenderDisplay);
|
||||||
row.Cells[6].AddParagraph(crew.CrewMemberNationality ?? "");
|
row.Cells[6].AddParagraph(crew.CrewMemberNationality ?? "");
|
||||||
row.Cells[7].AddParagraph(crew.CrewMemberIdentityDocumentTypeDisplay);
|
row.Cells[7].AddParagraph(crew.CrewMemberIdentityDocumentTypeDisplay);
|
||||||
row.Cells[8].AddParagraph(crew.CrewMemberIdentityDocumentId ?? "");
|
row.Cells[8].AddParagraph(crew.CrewMemberIdentityDocumentId ?? "");
|
||||||
row.Cells[9].AddParagraph(crew.CrewMemberVisaNumber ?? "");
|
row.Cells[9].AddParagraph(crew.CrewMemberIdentityDocumentIssuingState ?? "");
|
||||||
row.Cells[10].AddParagraph(crew.CrewMemberDuty ?? "");
|
row.Cells[10].AddParagraph(crew.CrewMemberIdentityDocumentExpiryDateDisplay ?? "");
|
||||||
|
row.Cells[11].AddParagraph(crew.CrewMemberVisaNumber ?? "");
|
||||||
|
row.Cells[12].AddParagraph(crew.CrewMemberDuty ?? "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
@ -579,17 +616,36 @@ namespace ENI2.Report
|
|||||||
#region PAS
|
#region PAS
|
||||||
private static void CreatePassengerTable(Document document, Message message)
|
private static void CreatePassengerTable(Document document, Message message)
|
||||||
{
|
{
|
||||||
|
string textSchengen = "[ ] Schengen";
|
||||||
|
string textPAX = "[ ] PAX";
|
||||||
|
|
||||||
|
if (message.Elements.Count > 0)
|
||||||
|
{
|
||||||
|
PAS firstPAS = message.Elements[0] as PAS;
|
||||||
|
if (firstPAS.NotificationSchengen ?? false)
|
||||||
|
textSchengen = "[X] Schengen";
|
||||||
|
if (firstPAS.NotificationPAX ?? false)
|
||||||
|
textPAX = "[X] PAX";
|
||||||
|
}
|
||||||
|
|
||||||
Table table = AddGrayTable(document);
|
Table table = AddGrayTable(document);
|
||||||
table.Format.Font.Size = 9;
|
table.Format.Font.Size = 7;
|
||||||
|
|
||||||
|
|
||||||
Column column = table.AddColumn();
|
Column column = table.AddColumn();
|
||||||
column.Width = Unit.FromCentimeter(0.8);
|
column.Width = Unit.FromCentimeter(0.8);
|
||||||
column = table.AddColumn();
|
column = table.AddColumn();
|
||||||
column.Width = Unit.FromCentimeter(3);
|
column.Width = Unit.FromCentimeter(2);
|
||||||
column = table.AddColumn();
|
column = table.AddColumn();
|
||||||
column.Width = Unit.FromCentimeter(3);
|
column.Width = Unit.FromCentimeter(2);
|
||||||
column = table.AddColumn();
|
column = table.AddColumn();
|
||||||
column.Width = Unit.FromCentimeter(3);
|
column.Width = Unit.FromCentimeter(2);
|
||||||
|
column = table.AddColumn();
|
||||||
|
column.Width = Unit.FromCentimeter(2);
|
||||||
|
column = table.AddColumn();
|
||||||
|
column.Width = Unit.FromCentimeter(1.2);
|
||||||
|
column = table.AddColumn();
|
||||||
|
column.Width = Unit.FromCentimeter(1);
|
||||||
column = table.AddColumn();
|
column = table.AddColumn();
|
||||||
column.Width = Unit.FromCentimeter(2);
|
column.Width = Unit.FromCentimeter(2);
|
||||||
column = table.AddColumn();
|
column = table.AddColumn();
|
||||||
@ -599,15 +655,24 @@ namespace ENI2.Report
|
|||||||
column = table.AddColumn();
|
column = table.AddColumn();
|
||||||
column.Width = Unit.FromCentimeter(2);
|
column.Width = Unit.FromCentimeter(2);
|
||||||
column = table.AddColumn();
|
column = table.AddColumn();
|
||||||
column.Width = Unit.FromCentimeter(3);
|
column.Width = Unit.FromCentimeter(1.5);
|
||||||
column = table.AddColumn();
|
|
||||||
column.Width = Unit.FromCentimeter(1.8);
|
|
||||||
column = table.AddColumn();
|
column = table.AddColumn();
|
||||||
column.Width = Unit.FromCentimeter(1.5);
|
column.Width = Unit.FromCentimeter(1.5);
|
||||||
column = table.AddColumn();
|
column = table.AddColumn();
|
||||||
column.Width = Unit.FromCentimeter(1.5);
|
column.Width = Unit.FromCentimeter(1.5);
|
||||||
column = table.AddColumn();
|
column = table.AddColumn();
|
||||||
column.Width = Unit.FromCentimeter(0.5);
|
column.Width = Unit.FromCentimeter(0.5);
|
||||||
|
column = table.AddColumn();
|
||||||
|
column.Width = Unit.FromCentimeter(1.5);
|
||||||
|
column = table.AddColumn();
|
||||||
|
column.Width = Unit.FromCentimeter(1.5);
|
||||||
|
|
||||||
|
Row h1Row = table.AddRow();
|
||||||
|
h1Row.Cells[7].AddParagraph(textSchengen);
|
||||||
|
h1Row.Cells[7].MergeRight = 7;
|
||||||
|
h1Row.Cells[7].Shading.Color = Colors.LightGray;
|
||||||
|
h1Row.Cells[15].AddParagraph(textPAX);
|
||||||
|
h1Row.Cells[15].MergeRight = 1;
|
||||||
|
|
||||||
Row hRow = table.AddRow();
|
Row hRow = table.AddRow();
|
||||||
hRow.Cells[1].AddParagraph("Last name");
|
hRow.Cells[1].AddParagraph("Last name");
|
||||||
@ -618,10 +683,14 @@ namespace ENI2.Report
|
|||||||
hRow.Cells[6].AddParagraph("Nat.");
|
hRow.Cells[6].AddParagraph("Nat.");
|
||||||
hRow.Cells[7].AddParagraph("Id doc. type");
|
hRow.Cells[7].AddParagraph("Id doc. type");
|
||||||
hRow.Cells[8].AddParagraph("Id doc. number");
|
hRow.Cells[8].AddParagraph("Id doc. number");
|
||||||
hRow.Cells[9].AddParagraph("Visa number");
|
hRow.Cells[9].AddParagraph("Iss. state");
|
||||||
hRow.Cells[10].AddParagraph("Emb.");
|
hRow.Cells[10].AddParagraph("Exp. date");
|
||||||
hRow.Cells[11].AddParagraph("Disemb.");
|
hRow.Cells[11].AddParagraph("Visa number");
|
||||||
hRow.Cells[12].AddParagraph("T");
|
hRow.Cells[12].AddParagraph("Emb.");
|
||||||
|
hRow.Cells[13].AddParagraph("Disemb.");
|
||||||
|
hRow.Cells[14].AddParagraph("T");
|
||||||
|
hRow.Cells[15].AddParagraph("Em. care");
|
||||||
|
hRow.Cells[16].AddParagraph("Em. number");
|
||||||
|
|
||||||
for (int i = 0; i < message.Elements.Count; i++)
|
for (int i = 0; i < message.Elements.Count; i++)
|
||||||
{
|
{
|
||||||
@ -636,10 +705,14 @@ namespace ENI2.Report
|
|||||||
row.Cells[6].AddParagraph(pas.PassengerNationality ?? "");
|
row.Cells[6].AddParagraph(pas.PassengerNationality ?? "");
|
||||||
row.Cells[7].AddParagraph(pas.PassengerIdentityDocumentTypeDisplay);
|
row.Cells[7].AddParagraph(pas.PassengerIdentityDocumentTypeDisplay);
|
||||||
row.Cells[8].AddParagraph(pas.PassengerIdentityDocumentId ?? "");
|
row.Cells[8].AddParagraph(pas.PassengerIdentityDocumentId ?? "");
|
||||||
row.Cells[9].AddParagraph(pas.PassengerVisaNumber ?? "");
|
row.Cells[9].AddParagraph(pas.PassengerIdentityDocumentIssuingState ?? "");
|
||||||
row.Cells[10].AddParagraph(pas.PassengerPortOfEmbarkation ?? "");
|
row.Cells[10].AddParagraph(pas.PassengerIdentityDocumentExpiryDateDisplay);
|
||||||
row.Cells[11].AddParagraph(pas.PassengerPortOfDisembarkation ?? "");
|
row.Cells[11].AddParagraph(pas.PassengerVisaNumber ?? "");
|
||||||
row.Cells[12].AddParagraph(pas.PassengerInTransit ?? false ? "X" : "");
|
row.Cells[12].AddParagraph(pas.PassengerPortOfEmbarkation ?? "");
|
||||||
|
row.Cells[13].AddParagraph(pas.PassengerPortOfDisembarkation ?? "");
|
||||||
|
row.Cells[14].AddParagraph(pas.PassengerInTransit ?? false ? "X" : "");
|
||||||
|
row.Cells[15].AddParagraph(pas.EmergencyCare ?? "");
|
||||||
|
row.Cells[16].AddParagraph(pas.EmergencyContactNumber ?? "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
@ -1177,8 +1250,9 @@ namespace ENI2.Report
|
|||||||
|
|
||||||
private static void CreateWAS_RCPTTable(Document document, Message message)
|
private static void CreateWAS_RCPTTable(Document document, Message message)
|
||||||
{
|
{
|
||||||
foreach (WAS_RCPT was_rpct in message.Elements)
|
for (int i = 0; i < message.Elements.Count; i++)
|
||||||
{
|
{
|
||||||
|
WAS_RCPT was_rpct = (WAS_RCPT)message.Elements[i];
|
||||||
document.LastSection.AddParagraph("");
|
document.LastSection.AddParagraph("");
|
||||||
|
|
||||||
Table table = AddGrayTable(document);
|
Table table = AddGrayTable(document);
|
||||||
|
|||||||
BIN
ENI2/Resources/Logo.png
Normal file
BIN
ENI2/Resources/Logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.3 KiB |
BIN
ENI2/Resources/arrival_user.png
Normal file
BIN
ENI2/Resources/arrival_user.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.4 KiB |
BIN
ENI2/Resources/arrival_worker.png
Normal file
BIN
ENI2/Resources/arrival_worker.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.8 KiB |
BIN
ENI2/Resources/clock.png
Normal file
BIN
ENI2/Resources/clock.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.2 KiB |
BIN
ENI2/Resources/departure_user.png
Normal file
BIN
ENI2/Resources/departure_user.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.5 KiB |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user