Compare commits
627 Commits
release/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 | |||
| 98b2b0adba | |||
| ce5327821b | |||
| 8d94534021 | |||
| e726ff43ba | |||
| c9cf0f65c7 | |||
| ec179966f3 | |||
| e10ea34f1b | |||
| b9f8c8b667 | |||
| 81fbd7482f | |||
| 8d01c15396 | |||
| dc9329bedf | |||
| 8c8bc199dc | |||
| 654746b704 | |||
| f71c423b9a | |||
| 370158e0ec | |||
| c44a257209 | |||
| 3072796e55 | |||
| db5797c9dc | |||
| e016bff028 | |||
| 8a98db9588 | |||
| 7e23f5a98a | |||
| 97bad2fbc0 | |||
| 6fc09ad7da | |||
| 47336e0b8d | |||
| 967a34dc79 | |||
| e0c85b6576 | |||
| b175b17fec | |||
| 6f5e5b66e9 | |||
| f529fa9ac9 | |||
| 521786002b | |||
| 2aef20130b | |||
| bcf4c33478 | |||
| 4d9b430cd3 | |||
| 65e45f40b8 | |||
| d02fe72378 | |||
| d981bc4093 | |||
| c04099edb2 | |||
| 13472ebe91 | |||
| 2257a78326 | |||
| ed1f11c936 | |||
| 9f31b3cea4 | |||
| 6031b5df94 | |||
| a596e197e1 | |||
| 6d07baa4b0 | |||
| 1ab7641efe | |||
| 8862d8e83c | |||
| af1a071664 | |||
| 5f28c8c7ea | |||
| 2e91da8f3b | |||
| fc62386477 | |||
| f470fba78f | |||
| 1d222259bb | |||
| b94835ee4b | |||
| 114b9db663 | |||
| 304f4d7404 | |||
| 2faec717b8 | |||
| da475a4754 | |||
| 4c5893c75b | |||
| a58ecb68d1 | |||
| baa0a9297e | |||
| 1604b239b0 | |||
| 1f5209bcd3 | |||
| 50e7d7eb5a | |||
| 820d12611d | |||
| 00bc43790d | |||
| c761c8a304 | |||
| 2177e69d4c | |||
| 8cca412079 | |||
| 3dac392452 | |||
| e013591a40 | |||
| 1777a81772 | |||
| d5d0045adb | |||
| 09faf3ad81 | |||
| bfb5fd2f60 | |||
| bf80cb5fed | |||
| 9d53b3e251 | |||
| 8f0711d4b6 | |||
| ea6f8ac97a | |||
| ae1747f2f3 | |||
| f14e758c98 | |||
| 09220f1b9a | |||
| ee5884aa3f | |||
| 5118ed8aaf | |||
| f0d3f5cbb1 | |||
| 964e2aa967 | |||
| a0bcbe4ccf | |||
| d31cc825cb | |||
| 217dbcfcde | |||
| 894aadc2d9 | |||
| d63cb8034d | |||
| ad5f873d04 | |||
| c29a936fa2 | |||
| bd93f98460 | |||
| 177835440c | |||
| 652644bcb0 | |||
| 32ede83fd2 | |||
| 2522ec3461 | |||
| 9266fa90b4 | |||
| 18d52180b1 | |||
| 0fd1cb0cd9 | |||
| 0ae84839d1 | |||
| 7bfa85e96d | |||
| 133c2e6bcc | |||
| 693c89e599 | |||
| b4e403eb16 | |||
| c11027790e | |||
| 3cec894142 | |||
| d16e7a42d6 | |||
| ba2bf9833e | |||
| c59e9f7e76 | |||
| 02c619011c | |||
| ca58d091c5 | |||
| fe2db2fa6b | |||
| d0be323df2 | |||
| db27fc2eb0 | |||
| 8711a84686 | |||
| 0213e29842 | |||
| 4f1867e997 | |||
| 9e96d5b56c | |||
| abdefefe60 | |||
| bd1931b134 | |||
| 70bda5ee1d | |||
| e6ec05cdc0 | |||
| 764f09a878 | |||
| e3c09c6160 | |||
| 51efad579d | |||
| e44c92d0f9 | |||
| 958a71a2a7 | |||
| 2d255e2eef | |||
| 0d052723b9 | |||
| 47ea445716 | |||
| d1de68e9c8 | |||
| f593d66333 | |||
| bb5de64cab | |||
| d52d8b90bb | |||
| bd39d4dd14 | |||
| 25f9e2eeaa | |||
| 3722223c64 | |||
| 6513762adc | |||
| 35a8b50f68 | |||
| d96979a939 | |||
| a3019b7a30 | |||
| 67145c50c3 | |||
| 81ce189951 | |||
| 531fb351e0 | |||
| 940062b7d8 | |||
| f21341ad28 | |||
| df32cf6fc6 | |||
| 3845313bb3 | |||
| 2713db9937 | |||
| d3ded290f5 | |||
| f639241e43 | |||
| 6ca0a5dda9 | |||
| eb001c78bc | |||
| 3c6201bad7 | |||
| 76be225712 | |||
| 61d2ca7552 | |||
| 71000a4c24 | |||
| 6a5e719384 | |||
| fd8a809a0f | |||
| 6aa729164b | |||
| d585e4892f | |||
| 3613dedf4f | |||
| 1032766317 | |||
| 02135b0946 | |||
| 6382b082ba | |||
| 6138c99ba9 | |||
| 9d70c2a482 | |||
| 65094848be | |||
| f596a53a38 | |||
| e8a4fcb227 | |||
| cccc2aee3c | |||
| a434dd3f72 | |||
| d90897d5e1 | |||
| 83db340099 | |||
| 6e86ea2fa6 | |||
| 05d378536e | |||
| c3a7737975 | |||
| 7f1442657f | |||
| f1f18c9835 | |||
| ab357ff88d | |||
| 77ae4a7c40 | |||
| 4bbaa1db08 | |||
| d0324d8568 | |||
| ba8456b920 | |||
| 6721ecf9e2 | |||
| c2af7cbca1 | |||
| a3bd851f93 | |||
| 151f351ac2 | |||
| 9cb40ad699 | |||
| 0533b579b2 | |||
| 7a5442f2bd | |||
| c35ce294c5 | |||
| 6e38685531 | |||
| 264b367516 | |||
| 8e0fdfa4ff | |||
| d36d625681 | |||
| 7dcaebd32d | |||
| 9732060654 | |||
| d867c9567e | |||
| 2a4796daf4 | |||
| 7b87df2fd7 | |||
| 9353da42e5 | |||
| 5acd9b98b7 | |||
| 39a314eeba | |||
| d94a75d1a1 | |||
| 329d9f8a8b | |||
| 5b5fd61638 | |||
| 942b8f6dcb | |||
| 9b06decc43 | |||
| a7705ed8f3 | |||
| d223c0921b | |||
| 53ee443487 | |||
| 7276bc5cf7 | |||
| 3f6bdc7421 | |||
| aaa88db061 | |||
| 6ba287ad0c | |||
| 493a3dee8f | |||
| 5026e782ce | |||
| 1ec2c20901 | |||
| 966a311b53 | |||
| 176602c184 | |||
| 811d8c1eb4 | |||
| 9b73417963 | |||
| 277ac16198 | |||
| aed1877515 | |||
| 90af9c6f28 | |||
| 57849a776d | |||
| b7f651fe34 | |||
| f69b1656b7 | |||
| 8c521d16a1 | |||
| 521d7a3967 | |||
| ba8f65865b | |||
| f3381563ee | |||
| 10c4171190 | |||
| 03c31936de | |||
| dce64f9a8e | |||
| c8650210e7 | |||
| 6ae0d611c4 | |||
| 958f236ac0 | |||
| 0dbc688f8d | |||
| 15b21bb156 | |||
| b18fa5c21b | |||
| 9328998ff0 | |||
| 585c400510 | |||
| 26a752be35 | |||
| 4cf91200df | |||
| da7b586258 | |||
| 89d33a261d | |||
| 428ba1f91a | |||
| 2cff4b97b6 | |||
| 765c7c2503 | |||
| f68f4e56d9 | |||
| dd2c8723b0 | |||
| 503618a323 | |||
| e087419d64 | |||
| 20f1abe7c1 | |||
| 3fb2c519fc | |||
| badae00486 | |||
| 6cea222305 | |||
| 5bc00c8dea | |||
| 213b93f38b | |||
| f57c109472 | |||
| a666c0edb8 | |||
| 640a0564ab | |||
| fd34b2b23a | |||
| efba8793e9 | |||
| 7acdf273f3 | |||
| ee6d0a3dc2 | |||
| 59f51a0aff | |||
| 02f4c4397c | |||
| da95d5e800 | |||
| 27a18b3338 | |||
| 0fd4b9919a | |||
| f22c3d2f80 | |||
| bcdb6fea00 | |||
| 6f770c0290 | |||
| c9e931cd0d | |||
| 5db4e32381 | |||
| e728d2060c | |||
| 64d8a6dbe3 | |||
| af138d7047 | |||
| 7b2b68f484 | |||
| 5ee9e632c8 | |||
| 0decd7c4bb | |||
| 0440f46b84 | |||
| 5a3f430c4f | |||
| 96b593bbde | |||
| 35f18894ba | |||
| 2eae1a43bb | |||
| d23833414a | |||
| 66897668cc | |||
| 40dbb741ff | |||
| 04a086548a | |||
| c1a4540c86 | |||
| 5b588712de | |||
| 019fe81a8d | |||
| 0c3c8c7735 | |||
| c21cdacedd | |||
| 5b61ad7145 | |||
| 4d23599c13 | |||
| 286953e7d8 | |||
| a2289e303e | |||
| 4f839d4aba | |||
| 26dcd0edd2 | |||
| 76f10b7a89 | |||
| a6b055e76f |
@ -6,7 +6,7 @@
|
||||
</sectionGroup>
|
||||
</configSections>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
|
||||
</startup>
|
||||
<userSettings>
|
||||
<CoreDeleteTool.Properties.Settings>
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>CoreDeleteTool</RootNamespace>
|
||||
<AssemblyName>CoreDeleteTool</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<TargetFrameworkProfile />
|
||||
@ -80,6 +80,7 @@
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
|
||||
@ -8,7 +8,8 @@ namespace CoreDeleteTool
|
||||
{
|
||||
public partial class Main : Form
|
||||
{
|
||||
SortableBindingList<MessageCore> messageCores = new SortableBindingList<MessageCore>();
|
||||
|
||||
private readonly SortableBindingList<MessageCore> messageCores = new SortableBindingList<MessageCore>();
|
||||
|
||||
public Main()
|
||||
{
|
||||
@ -49,8 +50,7 @@ namespace CoreDeleteTool
|
||||
|
||||
for (int i = 0; i < this.dataGridView.SelectedRows.Count; i++)
|
||||
{
|
||||
MessageCore selectedCore = this.dataGridView.SelectedRows[i].DataBoundItem as MessageCore;
|
||||
if (selectedCore != null)
|
||||
if (this.dataGridView.SelectedRows[i].DataBoundItem is MessageCore selectedCore)
|
||||
{
|
||||
DBManager.Instance.DeleteCore(selectedCore);
|
||||
this.messageCores.Remove(selectedCore);
|
||||
|
||||
2
CoreDeleteTool/Properties/Resources.Designer.cs
generated
2
CoreDeleteTool/Properties/Resources.Designer.cs
generated
@ -19,7 +19,7 @@ namespace CoreDeleteTool.Properties {
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
2
CoreDeleteTool/Properties/Settings.Designer.cs
generated
2
CoreDeleteTool/Properties/Settings.Designer.cs
generated
@ -12,7 +12,7 @@ namespace CoreDeleteTool.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.1.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
BIN
CoreDeleteTool/application_delete.ico
Normal file
BIN
CoreDeleteTool/application_delete.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 95 KiB |
@ -1,20 +1,8 @@
|
||||
// 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 System.Windows.Controls;
|
||||
using System.Windows.Input;
|
||||
|
||||
namespace ENI2
|
||||
{
|
||||
@ -43,10 +31,9 @@ namespace ENI2
|
||||
{
|
||||
DataGrid grid = sender as DataGrid;
|
||||
if(grid?.SelectedItems?.Count == 1)
|
||||
{
|
||||
DataGridRow dgr = grid.ItemContainerGenerator.ContainerFromItem(grid.SelectedItem) as DataGridRow;
|
||||
MessageCore selectedCore = grid.SelectedItem as MessageCore;
|
||||
this.DisplayCore(selectedCore);
|
||||
{
|
||||
MessageCore selectedCore = grid.SelectedItem as MessageCore;
|
||||
this.DisplayCore(selectedCore);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -63,7 +50,7 @@ namespace ENI2
|
||||
{
|
||||
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
|
||||
-->
|
||||
<configuration>
|
||||
<configSections>
|
||||
<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 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>
|
||||
</configSections>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
|
||||
</startup>
|
||||
<applicationSettings>
|
||||
<ENI2.Properties.Settings>
|
||||
@ -26,30 +26,103 @@
|
||||
<value>1000</value>
|
||||
</setting>
|
||||
<setting name="LockingServerAddress" serializeAs="String">
|
||||
<value>http://192.168.2.24/LockingService/LockingService.svc</value>
|
||||
<!--value>http://heupferd/bsmd.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 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>Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=E:\DATA\DB\NSW.MDF;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=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>
|
||||
</ENI2.Properties.Settings>
|
||||
</applicationSettings>
|
||||
<userSettings>
|
||||
<ENI2.Properties.Settings>
|
||||
<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>
|
||||
</ENI2.Properties.Settings>
|
||||
</userSettings>
|
||||
<system.serviceModel>
|
||||
<bindings>
|
||||
<basicHttpBinding>
|
||||
<binding name="BasicHttpBinding_IService" maxReceivedMessageSize="2147483647"/>
|
||||
<binding name="BasicHttpBinding_IService" maxReceivedMessageSize="2147483647" />
|
||||
</basicHttpBinding>
|
||||
</bindings>
|
||||
<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>
|
||||
</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>
|
||||
|
||||
@ -6,6 +6,8 @@ using System.Windows;
|
||||
using System.Windows.Markup;
|
||||
|
||||
using bsmd.database;
|
||||
using log4net;
|
||||
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Input;
|
||||
using System;
|
||||
@ -13,13 +15,16 @@ using System.Net;
|
||||
using ENI2.LockingServiceReference;
|
||||
using ENI2.Util;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Office.Interop.Excel;
|
||||
using System.Drawing.Drawing2D;
|
||||
|
||||
namespace ENI2
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for App.xaml
|
||||
/// </summary>
|
||||
public partial class App : Application
|
||||
public partial class App : System.Windows.Application
|
||||
{
|
||||
// "global" statics, da gibt es sicher noch einen eleganteren Weg..
|
||||
private static ServiceClient _lockingServiceClient = null;
|
||||
@ -30,6 +35,8 @@ namespace ENI2
|
||||
private ManualResetEvent ResetSplashCreated;
|
||||
private Thread _splashThread;
|
||||
|
||||
private readonly ILog _log = LogManager.GetLogger(typeof(App).Name);
|
||||
|
||||
public App() : base()
|
||||
{
|
||||
this.Dispatcher.UnhandledException += Dispatcher_UnhandledException;
|
||||
@ -60,16 +67,18 @@ namespace ENI2
|
||||
|
||||
ResetSplashCreated.WaitOne();
|
||||
|
||||
base.OnStartup(e);
|
||||
base.OnStartup(e);
|
||||
|
||||
// set connectnion string to async loader
|
||||
DBManagerAsync.ConnectionString = ENI2.Properties.Settings.Default.ConnectionString;
|
||||
|
||||
// initialize static / localized lookups from sqlite database
|
||||
|
||||
string langKey = CultureInfo.CurrentCulture.TwoLetterISOLanguageName;
|
||||
|
||||
Dictionary<int, string> cargoHandlingDict = LocalizedLookup.getLADGCargoHandlingStrings(langKey);
|
||||
foreach (int key in cargoHandlingDict.Keys)
|
||||
LADG.CargoHandlingDict.Add(key, cargoHandlingDict[key]);
|
||||
|
||||
LADG.MVSHLocodes.AddRange(LocalizedLookup.getMVSHLocodes());
|
||||
EventManager.RegisterClassHandler(typeof(DatePicker), DatePicker.PreviewKeyDownEvent, new KeyEventHandler(this.DatePicker_PreviewKeyDown));
|
||||
CREW.NationalityDict = LocalizedLookup.getNationalities();
|
||||
STAT.VesselTypeDict = LocalizedLookup.getVesselTypes();
|
||||
@ -79,6 +88,9 @@ namespace ENI2
|
||||
LADG.CargoCodesNST = LocalizedLookup.getCargoCodesNST();
|
||||
LADG.CargoCodesNST3 = LocalizedLookup.getCargoCodesNST3();
|
||||
|
||||
// Load import value mappings
|
||||
Task.Run(async () => await ValueMapping.LoadDicts());
|
||||
|
||||
// Preload validation fields
|
||||
List<ValidationField> vFields = bsmd.database.ValidationRule.ValidationFields;
|
||||
RuleEngine.RegisterLocodeChecker(Util.GlobalStructures.IsValidLocode);
|
||||
@ -147,9 +159,9 @@ namespace ENI2
|
||||
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);
|
||||
MessageBox.Show(errorMessage, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
// TODO: Dieser Fehler muss irgendwohin gesendet / gespeichert werden
|
||||
Xceed.Wpf.Toolkit.MessageBox.Show(errorMessage, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
e.Handled = true;
|
||||
_log.Error(errorMessage);
|
||||
}
|
||||
|
||||
private void DatePicker_PreviewKeyDown(object sender, KeyEventArgs e)
|
||||
|
||||
@ -56,6 +56,33 @@
|
||||
</Grid>
|
||||
</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}" >
|
||||
|
||||
<Setter Property="OverridesDefaultStyle" Value="true" />
|
||||
|
||||
@ -1,13 +1,14 @@
|
||||
<UserControl x:Class="ENI2.VorgaengeControl"
|
||||
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"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="300" d:DesignWidth="300">
|
||||
<Grid Background="#FF9EF0E8">
|
||||
<Label x:Name="label" Content="Platzhalter für Vorgänge" HorizontalAlignment="Left" Margin="49,128,0,0" VerticalAlignment="Top"/>
|
||||
|
||||
</Grid>
|
||||
</UserControl>
|
||||
<UserControl x:Class="ENI2.Controls.BusyControl"
|
||||
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:p="clr-namespace:ENI2.Properties"
|
||||
xmlns:util="clr-namespace:ENI2.Util"
|
||||
xmlns:local="clr-namespace:ENI2.Controls"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="28" d:DesignWidth="28">
|
||||
<Grid>
|
||||
<Image Source="../Resources/bullet_ball_grey.png" x:Name="imageBall" />
|
||||
</Grid>
|
||||
</UserControl>
|
||||
44
ENI2/Controls/BusyControl.xaml.cs
Normal file
44
ENI2/Controls/BusyControl.xaml.cs
Normal file
@ -0,0 +1,44 @@
|
||||
// Copyright (c) 2023- schick Informatik
|
||||
//
|
||||
// Description: Idea to have a simple control that shows if the application is busy or not using a simple icon
|
||||
// that will be set according to a state
|
||||
//
|
||||
|
||||
using ENI2.Util;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace ENI2.Controls
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for BusyControl.xaml
|
||||
/// </summary>
|
||||
public partial class BusyControl : UserControl
|
||||
{
|
||||
UIHelper.BusyStateEnum _busyState = UIHelper.BusyStateEnum.NEUTRAL;
|
||||
|
||||
public BusyControl()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public UIHelper.BusyStateEnum BusyState
|
||||
{
|
||||
set
|
||||
{
|
||||
_busyState = value;
|
||||
//Dispatcher.Invoke(() =>
|
||||
//{
|
||||
switch (_busyState)
|
||||
{
|
||||
case UIHelper.BusyStateEnum.NEUTRAL: imageBall.Source = Properties.Resources.bullet_ball_grey.CreateBitmapSource(); break;
|
||||
case UIHelper.BusyStateEnum.BUSY: imageBall.Source = Properties.Resources.bullet_ball_yellow.CreateBitmapSource(); break;
|
||||
case UIHelper.BusyStateEnum.FAIL: imageBall.Source = Properties.Resources.bullet_ball_red.CreateBitmapSource(); break;
|
||||
case UIHelper.BusyStateEnum.SUCCESS: imageBall.Source = Properties.Resources.bullet_ball_green.CreateBitmapSource(); break;
|
||||
}
|
||||
//});
|
||||
}
|
||||
|
||||
get => _busyState;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -8,6 +8,7 @@ using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Animation;
|
||||
using System.Windows.Threading;
|
||||
|
||||
namespace ENI2.Controls
|
||||
{
|
||||
@ -161,8 +162,9 @@ namespace ENI2.Controls
|
||||
}
|
||||
if (!abort)
|
||||
{
|
||||
var tabControl = Parent as ItemsControl;
|
||||
tabControl.Items.Remove(this);
|
||||
var tabControl = Parent as TabControl;
|
||||
tabControl.SelectedItem = null;
|
||||
_ = Dispatcher.BeginInvoke(new Action(() => tabControl.Items.Remove(this)), DispatcherPriority.Background);
|
||||
}
|
||||
};
|
||||
dockPanel.Children.Add(closeButton);
|
||||
|
||||
@ -56,6 +56,7 @@ namespace ENI2.Controls
|
||||
// das hier bildet 1:1 das Kontext-Menü des ANSW ab
|
||||
|
||||
public event Action<DatabaseEntity> EditRequested;
|
||||
public event Action<List<DatabaseEntity>> MultiEditRequested;
|
||||
public event Action<DatabaseEntity> DeleteRequested;
|
||||
public event Action CreateRequested;
|
||||
public event Action RefreshGrid;
|
||||
@ -119,7 +120,7 @@ namespace ENI2.Controls
|
||||
{
|
||||
var grid = sender as ENIDataGrid;
|
||||
if (Key.Delete == e.Key)
|
||||
this.deleteItem(null, null);
|
||||
this.deleteItem(null, null);
|
||||
}
|
||||
}
|
||||
|
||||
@ -203,18 +204,24 @@ namespace ENI2.Controls
|
||||
{
|
||||
if((this.SelectedItems != null) && (this.SelectedItems.Count == 1) && !this.IsReadOnly)
|
||||
{
|
||||
DatabaseEntity selectedEntity = this.SelectedItems[0] as DatabaseEntity;
|
||||
if (selectedEntity != null)
|
||||
if (this.SelectedItems[0] is DatabaseEntity 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)
|
||||
{
|
||||
if ((this.SelectedItems != null) && (this.SelectedItems.Count == 1) )
|
||||
{
|
||||
DatabaseEntity selectedEntity = this.SelectedItems[0] as DatabaseEntity;
|
||||
if (selectedEntity != null)
|
||||
if (this.SelectedItems[0] is DatabaseEntity selectedEntity)
|
||||
this.PrintRequested?.Invoke(selectedEntity);
|
||||
}
|
||||
}
|
||||
@ -223,8 +230,7 @@ namespace ENI2.Controls
|
||||
{
|
||||
if ((this.SelectedItems != null) && (this.SelectedItems.Count == 1))
|
||||
{
|
||||
DatabaseEntity selectedEntity = this.SelectedItems[0] as DatabaseEntity;
|
||||
if (selectedEntity != null)
|
||||
if (this.SelectedItems[0] is DatabaseEntity selectedEntity)
|
||||
this.ExportRequested?.Invoke(selectedEntity);
|
||||
}
|
||||
}
|
||||
@ -233,8 +239,7 @@ namespace ENI2.Controls
|
||||
{
|
||||
if ((this.SelectedItems != null) && (this.SelectedItems.Count == 1))
|
||||
{
|
||||
DatabaseEntity selectedEntity = this.SelectedItems[0] as DatabaseEntity;
|
||||
if (selectedEntity != null)
|
||||
if (this.SelectedItems[0] is DatabaseEntity selectedEntity)
|
||||
this.ShowTextRequested?.Invoke(selectedEntity);
|
||||
}
|
||||
}
|
||||
@ -247,12 +252,10 @@ namespace ENI2.Controls
|
||||
{
|
||||
if (sender != null)
|
||||
{
|
||||
DataGrid grid = sender as DataGrid;
|
||||
if ((grid != null) && (grid.SelectedItems != null) && (grid.SelectedItems.Count == 1) && !this.IsReadOnly)
|
||||
if ((sender is DataGrid grid) && (grid.SelectedItems != null) && (grid.SelectedItems.Count == 1) && !this.IsReadOnly)
|
||||
{
|
||||
DataGridRow dgr = grid.ItemContainerGenerator.ContainerFromItem(grid.SelectedItem) as DataGridRow;
|
||||
DatabaseEntity selectedEntity = grid.SelectedItem as DatabaseEntity;
|
||||
if (selectedEntity != null)
|
||||
if (grid.SelectedItem is DatabaseEntity selectedEntity)
|
||||
this.EditRequested?.Invoke(selectedEntity);
|
||||
}
|
||||
}
|
||||
@ -264,7 +267,7 @@ namespace ENI2.Controls
|
||||
|
||||
private static T GetVisualChild<T>(Visual parent) where T : Visual
|
||||
{
|
||||
T child = default(T);
|
||||
T child = default;
|
||||
int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
|
||||
for (int i = 0; i < numVisuals; i++)
|
||||
{
|
||||
|
||||
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
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -10,7 +10,10 @@ using System.Text.RegularExpressions;
|
||||
|
||||
using Xceed.Wpf.Toolkit;
|
||||
|
||||
using bsmd.database;
|
||||
using ENI2.Util;
|
||||
using System.Windows.Data;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace ENI2.Controls
|
||||
{
|
||||
@ -46,13 +49,38 @@ namespace ENI2.Controls
|
||||
cancelButton.Click += (s, e) => { if (this.IsModal()) DialogResult = false; CancelClicked?.Invoke(); this.Close(); };
|
||||
addButton.Click += (s, e) => AddClicked?.Invoke();
|
||||
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);
|
||||
};
|
||||
}
|
||||
|
||||
public bool AddVisible
|
||||
{
|
||||
get { var addButton = (Button)Template.FindName("buttonAdd", this); return addButton.Visibility == Visibility.Visible; }
|
||||
set { var addButton = (Button)Template.FindName("buttonAdd", this); addButton.Visibility = value ? Visibility.Visible : Visibility.Hidden; }
|
||||
set
|
||||
{
|
||||
var addButton = (Button)Template.FindName("buttonAdd", this);
|
||||
if (addButton != null)
|
||||
{
|
||||
addButton.Visibility = value ? Visibility.Visible : Visibility.Hidden;
|
||||
}
|
||||
var okButton = (Button)Template.FindName("buttonOK", this);
|
||||
if (okButton != null)
|
||||
{
|
||||
if (okButton.Visibility == Visibility.Hidden)
|
||||
okButton.Width = 1; // we are in a DockPanel, try to collapse okButton to place addButton more to the right
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool OkVisible
|
||||
{
|
||||
get { var okButton = (Button)Template.FindName("buttonOK", this); return okButton.Visibility == Visibility.Visible; }
|
||||
set { var okButton = (Button)Template.FindName("buttonOK", this); okButton.Visibility = value ? Visibility.Visible : Visibility.Hidden; }
|
||||
}
|
||||
|
||||
private void Window_Closing(object sender, CancelEventArgs e)
|
||||
@ -82,8 +110,8 @@ namespace ENI2.Controls
|
||||
#region "BHV Spezial" Datetime Parsing..
|
||||
|
||||
protected void DateTimePicker_PreviewKeyUp(object sender, System.Windows.Input.KeyEventArgs e)
|
||||
{
|
||||
if ((sender is DateTimePicker thePicker) && rdt.IsMatch(thePicker.Text))
|
||||
{
|
||||
if ((sender is DateTimePicker thePicker) && !thePicker.Text.IsNullOrEmpty() && rdt.IsMatch(thePicker.Text))
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -96,11 +124,12 @@ namespace ENI2.Controls
|
||||
thePicker.Value = new DateTime(year, month, day, hour, minute, 0);
|
||||
}
|
||||
catch (FormatException) { }
|
||||
catch (ArgumentOutOfRangeException) { thePicker.Value = null; }
|
||||
}
|
||||
}
|
||||
|
||||
protected void DateTimePicker_PreviewKeyUpDate(object sender, System.Windows.Input.KeyEventArgs e)
|
||||
{
|
||||
{
|
||||
if ((sender is DatePicker thePicker) && rd.IsMatch(thePicker.Text))
|
||||
{
|
||||
try
|
||||
@ -108,10 +137,11 @@ namespace ENI2.Controls
|
||||
string timevalText = rd.Match(thePicker.Text).Captures[0].Value;
|
||||
int day = Int32.Parse(timevalText.Substring(0, 2));
|
||||
int month = Int32.Parse(timevalText.Substring(2, 2));
|
||||
int year = Int32.Parse(timevalText.Substring(4, 4));
|
||||
int year = Int32.Parse(timevalText.Substring(4, 4));
|
||||
thePicker.SelectedDate = new DateTime(year, month, day, 0, 0, 0);
|
||||
}
|
||||
catch (FormatException) { }
|
||||
catch (ArgumentOutOfRangeException) { thePicker.SelectedDate = null; }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -8,8 +8,8 @@ using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Media.Imaging;
|
||||
|
||||
using ENI2.Locode;
|
||||
using bsmd.database;
|
||||
using bsmd.ExcelReadService;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace ENI2.Controls
|
||||
@ -19,14 +19,25 @@ namespace ENI2.Controls
|
||||
/// </summary>
|
||||
public partial class LocodeControl : UserControl, INotifyPropertyChanged
|
||||
{
|
||||
|
||||
#region fields
|
||||
|
||||
private List<string> _locodeList = new List<string>();
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
private bool _comboSelect;
|
||||
private bool _comboSelect;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Construction
|
||||
|
||||
public LocodeControl()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Enums
|
||||
|
||||
protected enum LocodeState
|
||||
{
|
||||
@ -36,6 +47,15 @@ namespace ENI2.Controls
|
||||
AMBIGUOUS
|
||||
};
|
||||
|
||||
#endregion
|
||||
|
||||
public void SetFocus()
|
||||
{
|
||||
this.comboBoxLocode.Focus();
|
||||
}
|
||||
|
||||
#region Properties
|
||||
|
||||
/// <summary>
|
||||
/// used internally to load up drop down
|
||||
/// </summary>
|
||||
@ -59,6 +79,11 @@ namespace ENI2.Controls
|
||||
portName = LocodeDB.PortNameFromLocode(value); break;
|
||||
case RuleEngine.LocodeMode.SSN:
|
||||
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;
|
||||
this.SetLocodeStateImage(this.imageLocodeState, locodeState);
|
||||
@ -89,10 +114,10 @@ namespace ENI2.Controls
|
||||
// MessageBox.Show(string.Format("CoerceValue is fired : Value {0}", Value));
|
||||
return Value;
|
||||
}
|
||||
|
||||
|
||||
public RuleEngine.LocodeMode LocodeSource { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region static methods
|
||||
|
||||
public static readonly DependencyProperty LocodeValueProperty = DependencyProperty.Register("LocodeValue", typeof(string), typeof(LocodeControl),
|
||||
@ -144,6 +169,18 @@ namespace ENI2.Controls
|
||||
portname = LocodeDB.PortNameFromLocode(directLocode); break;
|
||||
case RuleEngine.LocodeMode.SSN:
|
||||
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();
|
||||
@ -171,6 +208,8 @@ namespace ENI2.Controls
|
||||
locodeEntries = LocodeDB.AllLocodesForCityNameAsEntries(lookupString); break;
|
||||
case RuleEngine.LocodeMode.SSN:
|
||||
locodeEntries = LocalizedLookup.SSNAllLocodesForCityNameAsEntries(lookupString); break;
|
||||
case RuleEngine.LocodeMode.OLD:
|
||||
locodeEntries = LocodeDB.AllLocodesForCityNameAsEntries(lookupString); break;
|
||||
}
|
||||
locodeEntries.Sort();
|
||||
|
||||
@ -220,6 +259,15 @@ namespace ENI2.Controls
|
||||
this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("LocodeList"));
|
||||
}
|
||||
|
||||
private void comboBoxLocode_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e)
|
||||
{
|
||||
if ((e.Key == System.Windows.Input.Key.Down) && !this.comboBoxLocode.IsDropDownOpen)
|
||||
{
|
||||
this.comboBoxLocode.IsDropDownOpen = true;
|
||||
e.Handled = true;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region private/protected methods
|
||||
@ -245,14 +293,6 @@ namespace ENI2.Controls
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private void comboBoxLocode_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e)
|
||||
{
|
||||
if((e.Key == System.Windows.Input.Key.Down) && !this.comboBoxLocode.IsDropDownOpen)
|
||||
{
|
||||
this.comboBoxLocode.IsDropDownOpen = true;
|
||||
e.Handled = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
118
ENI2/Controls/MaerskListControl.xaml
Normal file
118
ENI2/Controls/MaerskListControl.xaml
Normal file
@ -0,0 +1,118 @@
|
||||
<UserControl x:Class="ENI2.Controls.MaerskListControl"
|
||||
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:util="clr-namespace:ENI2.Util"
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
xmlns:col="clr-namespace:System.Collections;assembly=mscorlib"
|
||||
xmlns:p="clr-namespace:ENI2.Properties"
|
||||
xmlns:local="clr-namespace:ENI2.Controls"
|
||||
xmlns:db="clr-namespace:bsmd.database;assembly=bsmd.database"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="450" d:DesignWidth="900">
|
||||
<UserControl.Resources>
|
||||
<col:ArrayList x:Key="arrList">
|
||||
<col:DictionaryEntry Key="None" Value="0" />
|
||||
<col:DictionaryEntry Key="Maersk BRV/WHV" Value="1" />
|
||||
<col:DictionaryEntry Key="SeaGo BHV" Value="2" />
|
||||
<col:DictionaryEntry Key="SeaGo WHV" Value="4" />
|
||||
</col:ArrayList>
|
||||
</UserControl.Resources>
|
||||
<GroupBox Name="groupBoxRP" Header="{x:Static p:Resources.textPOLists}">
|
||||
<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="From" Grid.Column="0" />
|
||||
<DatePicker x:Name="dateTimePickerFrom" Margin="2" Grid.Column="1" SelectedDateChanged="dateTimePickerFrom_SelectedDateChanged"/>
|
||||
<Label Content="To" Grid.Column="2" />
|
||||
<DatePicker x:Name="dateTimePickerTo" Margin="2" Grid.Column="3" SelectedDateChanged="dateTimePickerFrom_SelectedDateChanged"/>
|
||||
<Button x:Name="buttonLoad" Grid.Column="4" Content="Load" Margin="2" Click="buttonLoad_Click" />
|
||||
<!--Button x:Name="buttonSave" Grid.Column="5" Content="Save" Margin="2" Click="buttonSave_Click" /-->
|
||||
<Button x:Name="buttonRequestIds" Grid.Column="6" Content="Request marked Ids" Margin="2" Click="buttonRequestIds_Click" />
|
||||
<Button x:Name="buttonRequestPlus3" Grid.Column="7" Content="Request +4" Margin="2" Click="buttonRequestIds_Click" />
|
||||
<Button x:Name="buttonImport" Grid.Column="9" Margin="2" Content="Import" Click="buttonImport_Click" />
|
||||
<Button x:Name="buttonExport" Grid.Column="10" Margin="2" Content="Export" Click="buttonExport_Click" />
|
||||
<local:BusyControl x:Name="busyControl" Grid.Column="5" />
|
||||
</Grid>
|
||||
<local:ENIDataGrid Grid.Row="1" Margin="2,8,2,2" x:Name="dataGridPOCores" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
||||
SelectionMode="Extended" AutoGenerateColumns="False" CellEditEnding="dataGridPOCores_CellEditEnding" CanUserAddRows="False"
|
||||
MouseDoubleClick="dataGridPOCores_MouseDoubleClick">
|
||||
<local:ENIDataGrid.RowStyle>
|
||||
<Style TargetType="DataGridRow">
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding Status}" Value="{x:Static db:MaerskData+MDStatus.ID}">
|
||||
<Setter Property="Background" Value="LightGreen"></Setter>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding Status}" Value="{x:Static db:MaerskData+MDStatus.NO_ID}">
|
||||
<Setter Property="Background" Value="LightPink"></Setter>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding Status}" Value="{x:Static db:MaerskData+MDStatus.UPDATED}">
|
||||
<Setter Property="Background" Value="LightYellow"></Setter>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding Status}" Value="{x:Static db:MaerskData+MDStatus.NO_ETA}">
|
||||
<Setter Property="Background" Value="LightCoral"></Setter>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding Status}" Value="{x:Static db:MaerskData+MDStatus.REQUESTING_ID}">
|
||||
<Setter Property="Background" Value="Yellow"></Setter>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding Status}" Value="{x:Static db:MaerskData+MDStatus.ID_ASSIGNED}">
|
||||
<Setter Property="Background" Value="GreenYellow"></Setter>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding Status}" Value="{x:Static db:MaerskData+MDStatus.NO_ID_AND_DUE}">
|
||||
<Setter Property="Background" Value="Red"></Setter>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding Status}" Value="{x:Static db:MaerskData+MDStatus.CANCELLED}">
|
||||
<Setter Property="Foreground" Value="DarkGray"/>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</local:ENIDataGrid.RowStyle>
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="Status" Binding="{Binding Status}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="ETA" Binding="{Binding ColA}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="ETD" Binding="{Binding ColB}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="Rotation name" Binding="{Binding ColC}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="Vessel code" Binding="{Binding ColD}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="Vessel name" Binding="{Binding ColE}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="IMO" Binding="{Binding ColF}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="Arr voy" Binding="{Binding ColG}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="Dep voy" Binding="{Binding ColH}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="Terminal name" Binding="{Binding ColI}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="Operator code" Binding="{Binding ColJ}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="Pro arr" Binding="{Binding ColK}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="Pro dep" Binding="{Binding ColL}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="Id" Binding="{Binding ColM}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="Remark" Binding="{Binding Remark, Mode=TwoWay}" x:Name="gridColumnRemark" />
|
||||
|
||||
<!--DataGridTextColumn x:Name="gridColumnPONumber" Header="PO number" Binding="{Binding PONumber, Mode=TwoWay}" IsReadOnly="False" /-->
|
||||
<!--DataGridComboBoxColumn x:Name="gridColumnGroup" Header="Group" IsReadOnly="False" SelectedValueBinding="{Binding Flags, Mode=TwoWay}"
|
||||
ItemsSource="{StaticResource arrList}" DisplayMemberPath="Key" SelectedValuePath="Value">
|
||||
</DataGridComboBoxColumn-->
|
||||
|
||||
<!--DataGridTextColumn Header="ETA" Binding="{Binding ETA_NOA_NOD, StringFormat=\{0:dd.MM.yyyy HH:mm\}, Converter={util:UtcToLocalDateTimeConverter}}" IsReadOnly="True" /-->
|
||||
|
||||
<!--DataGridTextColumn x:Name="gridColumnATA" Header="ATA" Binding="{Binding POATA, StringFormat=\{0:dd.MM.yyyy\}, Mode=TwoWay, Converter={util:UtcToLocalDateTimeConverter}}" IsReadOnly="False" /-->
|
||||
<!--DataGridTextColumn Header="ATD" Binding="{Binding ATD, StringFormat=\{0:dd.MM.yyyy HH:mm\}, Converter={util:UtcToLocalDateTimeConverter}}" IsReadOnly="True" /-->
|
||||
|
||||
</DataGrid.Columns>
|
||||
</local:ENIDataGrid>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
</UserControl>
|
||||
634
ENI2/Controls/MaerskListControl.xaml.cs
Normal file
634
ENI2/Controls/MaerskListControl.xaml.cs
Normal file
@ -0,0 +1,634 @@
|
||||
// Copyright (c) 2017 / 2023 schick Informatik
|
||||
// Description: Request dbh ids for Maersk data lists
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using Microsoft.Win32;
|
||||
|
||||
using bsmd.database;
|
||||
using ExcelDataReader;
|
||||
using System.Collections.ObjectModel;
|
||||
using ENI2.Excel;
|
||||
using ENI2.Locode;
|
||||
using ENI2.Util;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ENI2.Controls
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for MaerskListControl.xaml
|
||||
/// </summary>
|
||||
public partial class MaerskListControl : UserControl
|
||||
{
|
||||
|
||||
#region Fields
|
||||
|
||||
private readonly ObservableCollection<MaerskData> maerskDataList = new ObservableCollection<MaerskData>();
|
||||
private readonly DatabaseEntityWatchdog _dbWatchDog;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Construction
|
||||
|
||||
public MaerskListControl()
|
||||
{
|
||||
InitializeComponent();
|
||||
Loaded += POList_Loaded;
|
||||
this.dateTimePickerFrom.SelectedDate = DateTime.Today.AddDays(-14);
|
||||
this.dateTimePickerTo.SelectedDate = DateTime.Today.AddDays(14);
|
||||
this._dbWatchDog = new DatabaseEntityWatchdog();
|
||||
this._dbWatchDog.DatabaseEntityChanged += _dbWatchDog_DatabaseEntityChanged;
|
||||
this._dbWatchDog.VisitTransitIdUpdated += _dbWatchDog_VisitTransitIdUpdated;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Events
|
||||
|
||||
public delegate void DateChanged(DateTime date);
|
||||
|
||||
public event DateChanged FromDateChanged;
|
||||
|
||||
public event DateChanged ToDateChanged;
|
||||
|
||||
#endregion
|
||||
|
||||
#region DB Watchdog
|
||||
|
||||
private async void _dbWatchDog_VisitTransitIdUpdated(DatabaseEntity entity)
|
||||
{
|
||||
if (entity is MessageCore core)
|
||||
{
|
||||
foreach (MaerskData md in this.maerskDataList)
|
||||
{
|
||||
if ((md.MessageCore != null) && (md.MessageCore.Id == core.Id))
|
||||
{
|
||||
md.MessageCore = core;
|
||||
md.Status = MaerskData.MDStatus.ID;
|
||||
md.ColM = core.VisitId;
|
||||
if (core.PoC.Equals("DEBRE") && md.ColJ.Equals("MSK"))
|
||||
core.Flags = 1;
|
||||
if (core.PoC.Equals("DEWVN") && md.ColJ.Equals("MSK"))
|
||||
core.Flags = 1;
|
||||
if (core.PoC.Equals("DEBRE") && md.ColJ.Equals("SGL"))
|
||||
core.Flags = 2;
|
||||
if (core.PoC.Equals("DEWVN") && md.ColJ.Equals("SGL"))
|
||||
core.Flags = 3;
|
||||
await DBManagerAsync.SaveAsync(core);
|
||||
await DBManagerAsync.SaveAsync(md);
|
||||
_dbWatchDog.UnRegister(core);
|
||||
this.Dispatcher.Invoke(() =>
|
||||
{
|
||||
this.dataGridPOCores.Items.Refresh();
|
||||
if(_dbWatchDog.Idle)
|
||||
busyControl.BusyState = Util.UIHelper.BusyStateEnum.NEUTRAL;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void _dbWatchDog_DatabaseEntityChanged(DatabaseEntity entity)
|
||||
{
|
||||
if (entity is MessageCore core)
|
||||
System.Diagnostics.Trace.WriteLine($"Core state changed to {core.BSMDStatusInternal}");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Properties
|
||||
|
||||
/// <summary>
|
||||
/// Locode of the port that is concerned by this import list. Is to be set in the surrounding container:
|
||||
/// </summary>
|
||||
public string PortLocode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// synchronize selection props
|
||||
/// </summary>
|
||||
public DateTime? FromDate {
|
||||
get { return this.dateTimePickerFrom.SelectedDate; }
|
||||
set { this.dateTimePickerFrom.SelectedDate = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// synchronize selection props
|
||||
/// </summary>
|
||||
public DateTime? ToDate
|
||||
{
|
||||
get { return this.dateTimePickerTo.SelectedDate; }
|
||||
set { this.dateTimePickerTo.SelectedDate = value; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region events
|
||||
|
||||
public event MessageCore.MessageCoreSelectedHandler MessageCoreSelected;
|
||||
|
||||
#endregion
|
||||
|
||||
#region control event handler
|
||||
|
||||
private void POList_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
dataGridPOCores.ItemsSource = maerskDataList;
|
||||
}
|
||||
|
||||
private async void dataGridPOCores_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
|
||||
{
|
||||
|
||||
if (e.EditAction == DataGridEditAction.Commit)
|
||||
{
|
||||
if (e.Column == gridColumnRemark)
|
||||
{
|
||||
MaerskData maerskData = this.maerskDataList[e.Row.GetIndex()];
|
||||
|
||||
var el = e.EditingElement as System.Windows.Controls.TextBox;
|
||||
if (el.Text.Length > 100)
|
||||
{
|
||||
el.Text = el.Text.Trim().Substring(0, 100);
|
||||
}
|
||||
maerskData.Remark = el.Text;
|
||||
|
||||
if (maerskData.MessageCore != null)
|
||||
await DBManagerAsync.SaveAsync(maerskData);
|
||||
}
|
||||
/*
|
||||
if(e.Column == gridColumnGroup)
|
||||
{
|
||||
var el = e.EditingElement as ComboBox;
|
||||
DictionaryEntry selectedItem = (DictionaryEntry) el.SelectedItem;
|
||||
MessageCore.CoreFlags coreFlag = (MessageCore.CoreFlags) Enum.Parse(typeof(MessageCore.CoreFlags), selectedItem.Value.ToString());
|
||||
MessageCore editedCore = this.filteredResult[e.Row.GetIndex()];
|
||||
// clear all first
|
||||
editedCore.SetFlag(false, MessageCore.CoreFlags.MAERSK_BHV);
|
||||
editedCore.SetFlag(false, MessageCore.CoreFlags.SEAGO_BHV);
|
||||
editedCore.SetFlag(false, MessageCore.CoreFlags.SEAGO_WHV);
|
||||
editedCore.SetFlag(false, MessageCore.CoreFlags.HOEGH);
|
||||
if (coreFlag != MessageCore.CoreFlags.NONE)
|
||||
{
|
||||
editedCore.SetFlag(true, coreFlag);
|
||||
}
|
||||
// buttonSaveChanges.IsEnabled = true;
|
||||
editedCore.IsDirty = true;
|
||||
}
|
||||
if(e.Column == gridColumnATA)
|
||||
{
|
||||
var el = e.EditingElement as System.Windows.Controls.TextBox;
|
||||
if(DateTime.TryParse(el.Text, out DateTime localATA))
|
||||
{
|
||||
MessageCore editedCore = this.filteredResult[e.Row.GetIndex()];
|
||||
editedCore.ATA = DateTime.SpecifyKind(localATA, DateTimeKind.Local).ToUniversalTime();
|
||||
// buttonSaveChanges.IsEnabled = true;
|
||||
editedCore.IsDirty = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
el.Text = string.Empty;
|
||||
e.Cancel = true;
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region private methods
|
||||
|
||||
/// <summary>
|
||||
/// "Status" of a Maersk Data element is a momentary evaluation that is relevant for display purposes only
|
||||
/// It is not saved
|
||||
/// </summary>
|
||||
private void UpdateStatus(MaerskData md)
|
||||
{
|
||||
// here we set the following: NO_ID, NO_ID_AND_DUE, ID, NO_ETA and DONE
|
||||
// the other status are set during active processing
|
||||
if(md.ETA.HasValue)
|
||||
{
|
||||
if((md.ETA.Value - DateTime.Now).TotalSeconds > 0) // future
|
||||
{
|
||||
if(!md.ColM.IsNullOrEmpty() || ((md.MessageCore != null) && (!md.MessageCore.VisitId.IsNullOrEmpty())))
|
||||
{
|
||||
md.Status = MaerskData.MDStatus.ID;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(md.ETA.Value.IsNextXDays(4))
|
||||
{
|
||||
md.Status = MaerskData.MDStatus.NO_ID_AND_DUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
md.Status = MaerskData.MDStatus.NO_ID;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else // past
|
||||
{
|
||||
md.Status = MaerskData.MDStatus.DONE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// no ETA means done
|
||||
md.Status = MaerskData.MDStatus.NO_ETA;
|
||||
}
|
||||
|
||||
// if there is an declaration and it has been cancelled.. override the state to CANCELLED
|
||||
if (md.MessageCore != null && (md.MessageCore.Cancelled ?? false))
|
||||
md.Status = MaerskData.MDStatus.CANCELLED;
|
||||
|
||||
}
|
||||
|
||||
|
||||
private async void PerformSearch()
|
||||
{
|
||||
busyControl.BusyState = Util.UIHelper.BusyStateEnum.BUSY;
|
||||
Dictionary<MessageCore.SearchFilterType, string> filterDict = new Dictionary<MessageCore.SearchFilterType, string>();
|
||||
|
||||
// Die Suche findet in dem eingestellten Intervall statt
|
||||
uint from = this.dateTimePickerFrom.SelectedDate.Value.ToUniversalTime().ToUnixTimeStamp();
|
||||
DateTime toDate = this.dateTimePickerTo.SelectedDate.Value.ToUniversalTime().Add(new TimeSpan(23, 59, 59));
|
||||
uint to = toDate.ToUnixTimeStamp();
|
||||
filterDict.Add(MessageCore.SearchFilterType.FILTER_ETA, string.Format("{0}:{1}", from.ToString() ?? "", to.ToString() ?? ""));
|
||||
|
||||
// suche auslösen
|
||||
List<MessageCore> searchResult = DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).GetMessageCoresWithFilters(filterDict);
|
||||
|
||||
// alle anderen Häfen weg
|
||||
searchResult.RemoveAll(item => (item.PoC == null) || (!item.PoC.Equals(PortLocode)));
|
||||
|
||||
// alles entfernen was keine Maersk Xtra-Data hat (=noch nicht schon einmal importiert wurde)
|
||||
foreach(MessageCore core in searchResult)
|
||||
{
|
||||
MaerskData md = await DBManagerAsync.LoadMaerskDataForCoreAsync(core.Id.Value);
|
||||
if(md != null)
|
||||
{
|
||||
md.MessageCore = core;
|
||||
md.MessageCoreId = core.Id.Value;
|
||||
this.UpdateStatus(md);
|
||||
if (!maerskDataList.Contains(md)) // DatabaseEntity implements IEquatable
|
||||
{
|
||||
this.maerskDataList.Add(md);
|
||||
if(!core.VisitId.IsNullOrEmpty() && md.ColM.IsNullOrEmpty())
|
||||
{
|
||||
md.ColM = core.VisitId; // this can happen if client is closed before an Id has been returned, so we have to manually set it here
|
||||
Task<int> saveResult = DBManagerAsync.SaveAsync(md); // actually we do not need to await this
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
this.TimeFilterItemSource();
|
||||
|
||||
this.dataGridPOCores.SelectedItem = null;
|
||||
busyControl.BusyState = Util.UIHelper.BusyStateEnum.NEUTRAL;
|
||||
}
|
||||
|
||||
private void TimeFilterItemSource()
|
||||
{
|
||||
List<MaerskData> removeList = new List<MaerskData>();
|
||||
foreach (MaerskData md in this.maerskDataList)
|
||||
{
|
||||
if (md.ETA.HasValue)
|
||||
{
|
||||
if (this.dateTimePickerFrom.SelectedDate.HasValue && (md.ETA.Value < this.dateTimePickerFrom.SelectedDate.Value))
|
||||
removeList.Add(md);
|
||||
|
||||
if (this.dateTimePickerTo.SelectedDate.HasValue) {
|
||||
|
||||
DateTime toDate = this.dateTimePickerTo.SelectedDate.Value.ToUniversalTime().Add(new TimeSpan(23, 59, 59));
|
||||
if(md.ETA.Value > toDate)
|
||||
removeList.Add(md);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach (MaerskData md in removeList)
|
||||
this.maerskDataList.Remove(md);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region button event handler
|
||||
|
||||
private void buttonLoad_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Util.UIHelper.SetBusyState();
|
||||
this.PerformSearch();
|
||||
}
|
||||
|
||||
private async void buttonImport_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
OpenFileDialog ofd = new OpenFileDialog
|
||||
{
|
||||
Filter = "Excel Files|*.xls;*.xlsx"
|
||||
};
|
||||
if (ofd.ShowDialog() ?? false)
|
||||
{
|
||||
FileStream stream;
|
||||
try
|
||||
{
|
||||
stream = File.Open(ofd.FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
using (IExcelDataReader reader = ExcelReaderFactory.CreateReader(stream))
|
||||
{
|
||||
List<MaerskData> importData = new List<MaerskData>();
|
||||
|
||||
bool isFirstRow = true;
|
||||
int currentRow = 0;
|
||||
bool imosAreOkay = true;
|
||||
|
||||
try
|
||||
{
|
||||
while (reader.Read())
|
||||
{
|
||||
currentRow++;
|
||||
|
||||
if (isFirstRow)
|
||||
{
|
||||
isFirstRow = false; // this must be a header row, skip
|
||||
continue;
|
||||
}
|
||||
|
||||
if (reader.FieldCount < 13)
|
||||
{
|
||||
throw new InvalidDataException("Sheet must have 13 columns of data");
|
||||
}
|
||||
|
||||
MaerskData md = new MaerskData();
|
||||
if (!reader.IsDBNull(0))
|
||||
{
|
||||
if (reader.GetFieldType(0) == typeof(DateTime))
|
||||
{
|
||||
md.ETA = reader.GetDateTime(0);
|
||||
md.ColA = md.ETA.ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
md.ColA = reader.GetString(0);
|
||||
if (DateTime.TryParse(md.ColA, out DateTime aDateTime))
|
||||
md.ETA = aDateTime;
|
||||
}
|
||||
}
|
||||
if (!reader.IsDBNull(1)) md.ColB = reader.ReadAsString(1);
|
||||
if (!reader.IsDBNull(2)) md.ColC = reader.ReadAsString(2);
|
||||
if (!reader.IsDBNull(3)) md.ColD = reader.ReadAsString(3);
|
||||
if (!reader.IsDBNull(4)) md.ColE = reader.ReadAsString(4);
|
||||
if (!reader.IsDBNull(5)) md.ColF = reader.ReadAsString(5);
|
||||
if (!reader.IsDBNull(6)) md.ColG = reader.ReadAsString(6);
|
||||
if (!reader.IsDBNull(7)) md.ColH = reader.ReadAsString(7);
|
||||
if (!reader.IsDBNull(8)) md.ColI = reader.ReadAsString(8);
|
||||
if (md.ColI != null)
|
||||
{
|
||||
if ((md.ColI.Contains("bremerhaven", StringComparison.OrdinalIgnoreCase) && this.PortLocode.Equals("DEWVN")) ||
|
||||
(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");
|
||||
}
|
||||
if (!reader.IsDBNull(9)) md.ColJ = reader.ReadAsString(9);
|
||||
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 (!reader.IsDBNull(10)) md.ColK = reader.ReadAsString(10);
|
||||
if (!reader.IsDBNull(11)) md.ColL = reader.ReadAsString(11);
|
||||
if (!reader.IsDBNull(12)) md.ColM = reader.ReadAsString(12);
|
||||
if (!reader.IsDBNull(13)) md.Remark = reader.ReadAsString(13);
|
||||
|
||||
if(!md.ColF.IsNullOrEmpty())
|
||||
{
|
||||
if (Int32.TryParse(md.ColF, out int imo))
|
||||
{
|
||||
if ((imo < 1000000) || (imo > 9999999))
|
||||
{
|
||||
imosAreOkay = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
imosAreOkay = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
imosAreOkay = false;
|
||||
}
|
||||
|
||||
if (!imosAreOkay)
|
||||
{
|
||||
MessageBox.Show($"Invalid IMO in row {currentRow}, aborting import", Properties.Resources.textCaptionError, MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
break;
|
||||
}
|
||||
|
||||
importData.Add(md);
|
||||
|
||||
if (isFirstRow) isFirstRow = false;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show("Error reading Excel: " + ex.Message, Properties.Resources.textCaptionError, MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
|
||||
if (imosAreOkay && importData.Count > 0)
|
||||
{
|
||||
busyControl.BusyState = Util.UIHelper.BusyStateEnum.BUSY;
|
||||
|
||||
foreach (MaerskData md in importData)
|
||||
{
|
||||
if (this.maerskDataList.Contains(md))
|
||||
{
|
||||
// update record with imported record
|
||||
MaerskData foundData = this.maerskDataList.First((m) => (m.ColF != null) ? m.ColF.Equals(md.ColF) : (md.ColF == null) &&
|
||||
(m.ColG != null) ? m.ColG.Equals(md.ColG) : (md.ColG == null) &&
|
||||
(m.ColH != null) ? m.ColH.Equals(md.ColH) : (md.ColH == null));
|
||||
|
||||
if ((foundData.MessageCore == null) || !(foundData.MessageCore.Cancelled ?? false))
|
||||
{
|
||||
if (foundData.ETA.HasValue && ((foundData.ETA.Value - DateTime.Now).TotalSeconds > 0) && foundData.Update(md))
|
||||
foundData.Status = MaerskData.MDStatus.UPDATED;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!md.ColM.IsNullOrEmpty())
|
||||
{
|
||||
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);
|
||||
maerskDataList.Add(md);
|
||||
}
|
||||
}
|
||||
this.TimeFilterItemSource();
|
||||
busyControl.BusyState = Util.UIHelper.BusyStateEnum.NEUTRAL;
|
||||
|
||||
this.dataGridPOCores.Items.Refresh();
|
||||
}
|
||||
}
|
||||
|
||||
stream.Close();
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonExport_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// Export of the current collection
|
||||
string predefFilename = string.Format("{0}_{1}.xlsx", this.PortLocode, DateTime.Today.ToString("yyyyMMdd"));
|
||||
SaveFileDialog sfd = new SaveFileDialog()
|
||||
{
|
||||
Filter = "Excel Files|*.xlsx;*.xls",
|
||||
FileName = predefFilename
|
||||
};
|
||||
if(sfd.ShowDialog() ?? false)
|
||||
{
|
||||
Util.UIHelper.SetBusyState();
|
||||
ExcelManager em = new ExcelManager();
|
||||
try
|
||||
{
|
||||
List<MaerskData> exportList = new List<MaerskData>(this.maerskDataList);
|
||||
em.ExportMaersk(exportList, sfd.FileName);
|
||||
Process.Start(sfd.FileName);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "Export failed", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async void buttonRequestIds_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// find all entries from now until 4 days into the future and track parallel requests
|
||||
List<MaerskData> requestList = new List<MaerskData>();
|
||||
if (sender == this.buttonRequestIds)
|
||||
{
|
||||
foreach (MaerskData md in this.dataGridPOCores.SelectedItems)
|
||||
{
|
||||
if (md.MessageCore?.VisitId.IsNullOrEmpty() == false) continue; // already requested
|
||||
if (md.ColM?.IsNullOrEmpty() == false) continue; // already something there
|
||||
requestList.Add(md);
|
||||
}
|
||||
}
|
||||
if(sender == this.buttonRequestPlus3)
|
||||
{
|
||||
foreach(MaerskData md in this.maerskDataList)
|
||||
{
|
||||
if(((md.MessageCore == null) && md.ColM.IsNullOrEmpty()) ||
|
||||
((md.MessageCore != null) && md.MessageCore.VisitId.IsNullOrEmpty()))
|
||||
{
|
||||
if (md.ETA.HasValue && md.ETA.Value.IsNextXDays(4))
|
||||
requestList.Add(md);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(requestList.Count == 0)
|
||||
{
|
||||
MessageBox.Show("No valid rows selected", "Warning", MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
||||
}
|
||||
else
|
||||
{
|
||||
busyControl.BusyState = Util.UIHelper.BusyStateEnum.BUSY;
|
||||
|
||||
foreach (MaerskData md in requestList)
|
||||
{
|
||||
md.Status = MaerskData.MDStatus.REQUESTING_ID;
|
||||
|
||||
// create MessageCore and message classes
|
||||
md.MessageCore = new MessageCore();
|
||||
md.MessageCore.InitialHIS = Message.NSWProvider.DBH_MAERSK;
|
||||
md.MessageCore.IMO = md.ColF;
|
||||
md.MessageCore.ETA = md.ETA;
|
||||
md.MessageCore.IsTransit = false;
|
||||
md.MessageCore.PoC = this.PortLocode;
|
||||
md.MessageCore.Portname = LocodeDB.PortNameFromLocode(md.MessageCore.PoC);
|
||||
md.MessageCore.BSMDStatusInternal = MessageCore.BSMDStatus.TOSEND;
|
||||
md.MessageCore.Incoming = true;
|
||||
md.MessageCore.DefaultReportingPartyId = App.UserId.Value;
|
||||
await DBManagerAsync.SaveAsync(md.MessageCore);
|
||||
md.MessageCoreId = md.MessageCore.Id.Value;
|
||||
await DBManagerAsync.SaveAsync(md);
|
||||
|
||||
// Meldeklassen für neuen Anlauf erzeugen
|
||||
// TODO: pre-set certain fields taken from Maersk data
|
||||
await bsmd.database.Util.CreateMessagesForCoreAsync(md.MessageCore, null);
|
||||
|
||||
// watchdog registrieren
|
||||
this._dbWatchDog.Register(md.MessageCore);
|
||||
}
|
||||
}
|
||||
this.dataGridPOCores.Items.Refresh();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region grid event handler
|
||||
|
||||
private void dataGridPOCores_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
|
||||
{
|
||||
if (sender != null)
|
||||
{
|
||||
DataGrid grid = sender as DataGrid;
|
||||
if (grid?.SelectedItems?.Count == 1)
|
||||
{
|
||||
MaerskData md = grid.SelectedItem as MaerskData;
|
||||
if(md.MessageCore != null) {
|
||||
Util.UIHelper.SetBusyState();
|
||||
this.MessageCoreSelected?.Invoke(md.MessageCore, DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].ShipcallDisplayMode);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region DateTime picker event handler
|
||||
|
||||
private void dateTimePickerFrom_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
|
||||
if (sender == dateTimePickerFrom)
|
||||
this.FromDateChanged?.Invoke(dateTimePickerFrom.SelectedDate.Value);
|
||||
|
||||
if (sender == dateTimePickerTo)
|
||||
this.ToDateChanged?.Invoke(dateTimePickerTo.SelectedDate.Value);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
24
ENI2/Controls/MaerskOverviewControl.xaml
Normal file
24
ENI2/Controls/MaerskOverviewControl.xaml
Normal file
@ -0,0 +1,24 @@
|
||||
<UserControl x:Class="ENI2.Controls.MaerskOverviewControl"
|
||||
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="450" d:DesignWidth="800">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Label Grid.Row="0" Content="Maersk lists" />
|
||||
<TabControl x:Name="tabControlMaersk" Grid.Row="1">
|
||||
<TabItem Name="tabItemBRV" Header="DEBRV">
|
||||
<local:MaerskListControl x:Name="brvListControl" />
|
||||
</TabItem>
|
||||
<TabItem Name="tabItemWVN" Header="DEWVN">
|
||||
<local:MaerskListControl x:Name="wvnListControl" />
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
51
ENI2/Controls/MaerskOverviewControl.xaml.cs
Normal file
51
ENI2/Controls/MaerskOverviewControl.xaml.cs
Normal file
@ -0,0 +1,51 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace ENI2.Controls
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for MaerskOverviewControl.xaml
|
||||
/// </summary>
|
||||
public partial class MaerskOverviewControl : UserControl
|
||||
{
|
||||
public MaerskOverviewControl()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.brvListControl.PortLocode = "DEBRV";
|
||||
this.wvnListControl.PortLocode = "DEWVN";
|
||||
|
||||
this.brvListControl.FromDateChanged += BrvListControl_FromDateChanged;
|
||||
this.brvListControl.ToDateChanged += BrvListControl_ToDateChanged;
|
||||
this.wvnListControl.FromDateChanged += WvnListControl_FromDateChanged;
|
||||
this.wvnListControl.ToDateChanged += WvnListControl_ToDateChanged;
|
||||
}
|
||||
|
||||
private void WvnListControl_ToDateChanged(System.DateTime date)
|
||||
{
|
||||
this.brvListControl.ToDate = date;
|
||||
}
|
||||
|
||||
private void WvnListControl_FromDateChanged(System.DateTime date)
|
||||
{
|
||||
this.brvListControl.FromDate = date;
|
||||
}
|
||||
|
||||
private void BrvListControl_ToDateChanged(System.DateTime date)
|
||||
{
|
||||
this.wvnListControl.ToDate = date;
|
||||
}
|
||||
|
||||
private void BrvListControl_FromDateChanged(System.DateTime date)
|
||||
{
|
||||
this.wvnListControl.FromDate = date;
|
||||
}
|
||||
|
||||
public List<MaerskListControl> ListControls
|
||||
{
|
||||
get
|
||||
{
|
||||
return new List<MaerskListControl>() { this.brvListControl, this.wvnListControl };
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,56 +0,0 @@
|
||||
<UserControl x:Class="ENI2.Controls.POListControl"
|
||||
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:util="clr-namespace:ENI2.Util"
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
xmlns:col="clr-namespace:System.Collections;assembly=mscorlib"
|
||||
xmlns:p="clr-namespace:ENI2.Properties"
|
||||
xmlns:local="clr-namespace:ENI2.Controls"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="450" d:DesignWidth="800">
|
||||
<UserControl.Resources>
|
||||
<col:ArrayList x:Key="arrList">
|
||||
<col:DictionaryEntry Key="None" Value="0" />
|
||||
<col:DictionaryEntry Key="Maersk BRV/WHV" Value="1" />
|
||||
<col:DictionaryEntry Key="SeaGo BHV" Value="2" />
|
||||
<col:DictionaryEntry Key="SeaGo WHV" Value="4" />
|
||||
</col:ArrayList>
|
||||
</UserControl.Resources>
|
||||
<GroupBox Name="groupBoxRP" Header="{x:Static p:Resources.textPOLists}">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Label Content="Calendar week" />
|
||||
<xctk:DoubleUpDown x:Name="doubleUpDownCalendarWeek" VerticalContentAlignment="Center" VerticalAlignment="Center"
|
||||
HorizontalAlignment="Stretch" Margin="2" Value="01" ValueChanged="doubleUpDownCalendarWeek_ValueChanged"/>
|
||||
<Label Content="Type" />
|
||||
<ComboBox x:Name="comboBoxFilterType" Margin="2" SelectionChanged="comboBoxFilterType_SelectionChanged" Width="100" />
|
||||
|
||||
<Button x:Name="buttonExcelExport" Margin="2" Click="buttonExcelExport_Click" Content="Export Excel" Width="100" />
|
||||
<Button x:Name="buttonSaveChanges" Margin="2" Click="buttonSaveChanges_Click" Content="Save changes" Width="100" IsEnabled="False" />
|
||||
</StackPanel>
|
||||
<local:ENIDataGrid Grid.Row="1" Margin="2,8,2,2" x:Name="dataGridPOCores" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
||||
SelectionMode="Single" AutoGenerateColumns="False" CellEditEnding="dataGridPOCores_CellEditEnding" CanUserAddRows="False">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="IMO/ENI" Binding="{Binding IMOENIDisplay}" IsReadOnly="True" />
|
||||
<DataGridTextColumn x:Name="gridColumnPONumber" Header="PO number" Binding="{Binding PONumber, Mode=TwoWay}" IsReadOnly="False" />
|
||||
<DataGridComboBoxColumn x:Name="gridColumnGroup" Header="Group" IsReadOnly="False" SelectedValueBinding="{Binding Flags, Mode=TwoWay}"
|
||||
ItemsSource="{StaticResource arrList}" DisplayMemberPath="Key" SelectedValuePath="Value">
|
||||
</DataGridComboBoxColumn>
|
||||
<DataGridTextColumn Header="Ship name" Binding="{Binding Shipname}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="ETA" Binding="{Binding ETA_NOA_NOD, StringFormat=\{0:dd.MM.yyyy HH:mm\}, Converter={util:UtcToLocalDateTimeConverter}}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="ETD" Binding="{Binding ETD_NOA_NOD, StringFormat=\{0:dd.MM.yyyy HH:mm\}, Converter={util:UtcToLocalDateTimeConverter}}" IsReadOnly="True" />
|
||||
<DataGridTextColumn x:Name="gridColumnATA" Header="ATA" Binding="{Binding POATA, StringFormat=\{0:dd.MM.yyyy\}, Mode=TwoWay, Converter={util:UtcToLocalDateTimeConverter}}" IsReadOnly="False" />
|
||||
<DataGridTextColumn Header="ATD" Binding="{Binding ATD, StringFormat=\{0:dd.MM.yyyy HH:mm\}, Converter={util:UtcToLocalDateTimeConverter}}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="Hafen" Binding="{Binding PortnameDisplay}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="Id" Binding="{Binding DisplayId}" IsReadOnly="True" />
|
||||
</DataGrid.Columns>
|
||||
</local:ENIDataGrid>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
</UserControl>
|
||||
@ -1,278 +0,0 @@
|
||||
// Copyright (c) 2017 schick Informatik
|
||||
// Description: PO Nummer Übersicht. Ergänzung Nummern. Excel Export
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using Microsoft.Win32;
|
||||
|
||||
using Microsoft.Office.Interop.Excel;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
using bsmd.database;
|
||||
|
||||
namespace ENI2.Controls
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for POListControl.xaml
|
||||
/// </summary>
|
||||
public partial class POListControl : UserControl
|
||||
{
|
||||
|
||||
#region Fields
|
||||
|
||||
private readonly string[] _comboBoxEntries =
|
||||
{
|
||||
"All",
|
||||
"Maersk BRV/WHV",
|
||||
"SeaGo BHV",
|
||||
"SeaGo WHV"
|
||||
};
|
||||
|
||||
private List<MessageCore> searchResult = new List<MessageCore>();
|
||||
private readonly List<MessageCore> filteredResult = new List<MessageCore>();
|
||||
|
||||
#endregion
|
||||
|
||||
#region Construction
|
||||
|
||||
public POListControl()
|
||||
{
|
||||
InitializeComponent();
|
||||
Loaded += POList_Loaded;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region control event handler
|
||||
|
||||
private void POList_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.comboBoxFilterType.ItemsSource = this._comboBoxEntries;
|
||||
this.doubleUpDownCalendarWeek.Value = bsmd.database.Util.GetIso8601WeekOfYear(DateTime.Now);
|
||||
this.dataGridPOCores.ItemsSource = this.filteredResult;
|
||||
}
|
||||
|
||||
private void buttonExcelExport_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (this.filteredResult.Count == 0) return;
|
||||
|
||||
OpenFileDialog ofd = new OpenFileDialog
|
||||
{
|
||||
Filter = "Excel Files|*.xls;*.xlsx"
|
||||
};
|
||||
if (ofd.ShowDialog() ?? false)
|
||||
{
|
||||
try
|
||||
{
|
||||
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
|
||||
excelApp.DisplayAlerts = false;
|
||||
Workbook workBook = excelApp.Workbooks.Open(ofd.FileName);
|
||||
Worksheet workSheet = workBook.Worksheets[1];
|
||||
|
||||
int rowIndex = 3;
|
||||
foreach(MessageCore core in this.filteredResult)
|
||||
{
|
||||
workSheet.Cells[rowIndex, 7].Value = core.Shipname;
|
||||
workSheet.Cells[rowIndex, 10].Value = core.PoC.Substring(2);
|
||||
if(core.POATA.HasValue)
|
||||
workSheet.Cells[rowIndex, 11].Value = core.POATA.Value.ToShortDateString();
|
||||
workSheet.Cells[rowIndex, 13].Value = core.PONumber;
|
||||
rowIndex++;
|
||||
}
|
||||
|
||||
workBook.Save();
|
||||
workBook.Close();
|
||||
Marshal.ReleaseComObject(workBook);
|
||||
excelApp.Quit();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonSaveChanges_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
foreach(MessageCore messageCore in this.filteredResult)
|
||||
{
|
||||
if (messageCore.IsDirty)
|
||||
{
|
||||
DBManager.Instance.Save(messageCore);
|
||||
messageCore.IsDirty = false;
|
||||
// load ATA for this Core
|
||||
/* DAS ATA WIRD JETZT NICHT MEHR IN DIE MELDEKLASSE GESPEICHERT
|
||||
Message ataMessage = DBManager.Instance.GetMessage(messageCore, Message.NotificationClass.ATA);
|
||||
if(ataMessage?.Elements.Count == 1)
|
||||
{
|
||||
if(messageCore.ATA != ((ATA)ataMessage.Elements[0]).ATAPortOfCall)
|
||||
{
|
||||
((ATA)ataMessage.Elements[0]).ATAPortOfCall = messageCore.ATA;
|
||||
DBManager.Instance.Save(ataMessage.Elements[0]);
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
this.buttonSaveChanges.IsEnabled = false;
|
||||
}
|
||||
|
||||
private void doubleUpDownCalendarWeek_ValueChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
|
||||
{
|
||||
if (!this.IsLoaded) return;
|
||||
this.comboBoxFilterType.SelectedIndex = -1;
|
||||
this.PerformSearch();
|
||||
}
|
||||
|
||||
private void comboBoxFilterType_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
this.dataGridPOCores.ItemsSource = null;
|
||||
if (this.comboBoxFilterType.SelectedIndex == -1) return;
|
||||
|
||||
this.filteredResult.Clear();
|
||||
foreach (MessageCore core in this.searchResult)
|
||||
{
|
||||
switch (this.comboBoxFilterType.SelectedIndex)
|
||||
{
|
||||
case 0: this.filteredResult.Add(core); break;
|
||||
case 1: if (core.IsFlagSet(MessageCore.CoreFlags.MAERSK_BHV)) this.filteredResult.Add(core); break;
|
||||
case 2: if (core.IsFlagSet(MessageCore.CoreFlags.SEAGO_BHV)) this.filteredResult.Add(core); break;
|
||||
case 3: if (core.IsFlagSet(MessageCore.CoreFlags.SEAGO_WHV)) this.filteredResult.Add(core); break;
|
||||
case 4: if (core.IsFlagSet(MessageCore.CoreFlags.HOEGH)) this.filteredResult.Add(core); break;
|
||||
}
|
||||
}
|
||||
this.dataGridPOCores.ItemsSource = this.filteredResult;
|
||||
}
|
||||
|
||||
private void dataGridPOCores_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
|
||||
{
|
||||
if (e.EditAction == DataGridEditAction.Commit)
|
||||
{
|
||||
if (e.Column == gridColumnPONumber)
|
||||
{
|
||||
// validate for "true" number
|
||||
var el = e.EditingElement as System.Windows.Controls.TextBox;
|
||||
if (!el.Text.IsDigitsOnly())
|
||||
{
|
||||
el.Text = string.Empty;
|
||||
e.Cancel = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
buttonSaveChanges.IsEnabled = true;
|
||||
MessageCore editedCore = this.filteredResult[e.Row.GetIndex()];
|
||||
editedCore.IsDirty = true;
|
||||
}
|
||||
}
|
||||
if(e.Column == gridColumnGroup)
|
||||
{
|
||||
var el = e.EditingElement as ComboBox;
|
||||
DictionaryEntry selectedItem = (DictionaryEntry) el.SelectedItem;
|
||||
MessageCore.CoreFlags coreFlag = (MessageCore.CoreFlags) Enum.Parse(typeof(MessageCore.CoreFlags), selectedItem.Value.ToString());
|
||||
MessageCore editedCore = this.filteredResult[e.Row.GetIndex()];
|
||||
// clear all first
|
||||
editedCore.SetFlag(false, MessageCore.CoreFlags.MAERSK_BHV);
|
||||
editedCore.SetFlag(false, MessageCore.CoreFlags.SEAGO_BHV);
|
||||
editedCore.SetFlag(false, MessageCore.CoreFlags.SEAGO_WHV);
|
||||
editedCore.SetFlag(false, MessageCore.CoreFlags.HOEGH);
|
||||
if (coreFlag != MessageCore.CoreFlags.NONE)
|
||||
{
|
||||
editedCore.SetFlag(true, coreFlag);
|
||||
}
|
||||
buttonSaveChanges.IsEnabled = true;
|
||||
editedCore.IsDirty = true;
|
||||
}
|
||||
if(e.Column == gridColumnATA)
|
||||
{
|
||||
var el = e.EditingElement as System.Windows.Controls.TextBox;
|
||||
if(DateTime.TryParse(el.Text, out DateTime localATA))
|
||||
{
|
||||
MessageCore editedCore = this.filteredResult[e.Row.GetIndex()];
|
||||
editedCore.ATA = DateTime.SpecifyKind(localATA, DateTimeKind.Local).ToUniversalTime();
|
||||
buttonSaveChanges.IsEnabled = true;
|
||||
editedCore.IsDirty = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
el.Text = string.Empty;
|
||||
e.Cancel = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region private methods
|
||||
|
||||
private void PerformSearch()
|
||||
{
|
||||
this.dataGridPOCores.ItemsSource = null;
|
||||
this.filteredResult.Clear();
|
||||
|
||||
if (!this.doubleUpDownCalendarWeek.Value.HasValue) return;
|
||||
|
||||
Dictionary<MessageCore.SearchFilterType, string> filterDict = new Dictionary<MessageCore.SearchFilterType, string>();
|
||||
|
||||
DateTime start = bsmd.database.Util.FirstDateOfWeekISO8601(DateTime.Now.Year, (int)this.doubleUpDownCalendarWeek.Value);
|
||||
DateTime end = start.Add(new TimeSpan(6, 23, 59, 59));
|
||||
|
||||
// Die Suche findet in einem erweiterten Intervall statt, da später wenn möglich nach ATA gefiltert wird
|
||||
uint from = start.Subtract(new TimeSpan(10, 0, 0, 0)).ToUniversalTime().ToUnixTimeStamp();
|
||||
uint to = end.Add(new TimeSpan(5, 0, 0, 0)).ToUniversalTime().ToUnixTimeStamp();
|
||||
filterDict.Add(MessageCore.SearchFilterType.FILTER_ETA, string.Format("{0}:{1}", from.ToString() ?? "", to.ToString() ?? ""));
|
||||
|
||||
Util.UIHelper.SetBusyState();
|
||||
|
||||
// suche auslösen
|
||||
this.searchResult = DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).GetMessageCoresWithFilters(filterDict);
|
||||
// alle anderen Häfen weg
|
||||
this.searchResult.RemoveAll(item => !item.PoC.Equals("DEBRV") && !item.PoC.Equals("DEWHV") && !item.PoC.Equals("DEWVN"));
|
||||
|
||||
// rückwärts iterieren um nach ETA und ATA zu filtern
|
||||
if (this.searchResult.Count > 0)
|
||||
{
|
||||
for (int i = this.searchResult.Count - 1; i >= 0; i--)
|
||||
{
|
||||
MessageCore messageCore = this.searchResult[i];
|
||||
if (messageCore.ATA.HasValue)
|
||||
{
|
||||
if ((messageCore.ATA.Value < start) || (messageCore.ATA.Value > end))
|
||||
{
|
||||
this.searchResult.RemoveAt(i);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!messageCore.POATA.HasValue)
|
||||
{
|
||||
messageCore.POATA = messageCore.ATA;
|
||||
messageCore.IsDirty = true;
|
||||
this.buttonSaveChanges.IsEnabled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((messageCore.ETA.Value < start) || (messageCore.ETA.Value > end)) this.searchResult.RemoveAt(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
searchResult.Sort((x, y) => DateTime.Compare(x.ATA ?? DateTime.MaxValue, y.ATA ?? DateTime.MaxValue));
|
||||
|
||||
this.dataGridPOCores.SelectedItem = null;
|
||||
this.filteredResult.AddRange(searchResult);
|
||||
this.dataGridPOCores.ItemsSource = this.filteredResult;
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
@ -20,6 +20,7 @@
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textLogin}" Binding="{Binding Logon}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textEMail}" Binding="{Binding UserEMail}" IsReadOnly="True" Width="0.2*" />
|
||||
<DataGridCheckBoxColumn Header="{x:Static p:Resources.textAdministrator}" Binding="{Binding IsAdmin}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridCheckBoxColumn Header="{x:Static p:Resources.textEditor}" Binding="{Binding IsEditor}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textCreated}" Binding="{Binding Created}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textChanged}" Binding="{Binding Changed}" IsReadOnly="True" Width="0.1*" />
|
||||
</DataGrid.Columns>
|
||||
|
||||
@ -59,7 +59,7 @@ namespace ENI2.Controls
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(selectedParty);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#region grid event handler
|
||||
@ -98,13 +98,13 @@ namespace ENI2.Controls
|
||||
{
|
||||
ReportingParty rp = new ReportingParty();
|
||||
EditReportingPartyDialog ebd = new EditReportingPartyDialog();
|
||||
ebd.ReportingParty = rp;
|
||||
ebd.ReportingParty = rp;
|
||||
|
||||
if (ebd.ShowDialog() ?? false)
|
||||
{
|
||||
DBManager.Instance.GetReportingPartyDict().Add(Guid.NewGuid(), rp);
|
||||
this.ReportingParties.Add(rp);
|
||||
this.dataGridReportingParties.Items.Refresh();
|
||||
this.dataGridReportingParties.Items.Refresh();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -16,12 +16,8 @@
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<StackPanel Grid.Row="0" Orientation="Horizontal">
|
||||
<Label Content="Excel:" />
|
||||
<Label Name="labelStatusExcel" Content="?" FontWeight="Bold" />
|
||||
<Label Content="Transmitter:" />
|
||||
<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"/>
|
||||
</StackPanel>
|
||||
<local:ENIDataGrid Grid.Row="1"
|
||||
|
||||
@ -27,13 +27,14 @@ namespace ENI2.Controls
|
||||
private readonly static ILog _log = LogManager.GetLogger("ServerStatus");
|
||||
private ProgressBar _updateProgressBar;
|
||||
private TextBlock _updateTextBlock;
|
||||
private bool _isUpdating = false;
|
||||
private readonly static Dictionary<Guid, string> coreIdVisitIdMap = new Dictionary<Guid, string>();
|
||||
|
||||
public ServerStatusControl()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.dataGridStatus.ItemsSource = this.entries;
|
||||
this.Loaded += ServerStatusControl_Loaded;
|
||||
|
||||
}
|
||||
|
||||
private void ServerStatusControl_Loaded(object sender, System.Windows.RoutedEventArgs e)
|
||||
@ -43,6 +44,8 @@ namespace ENI2.Controls
|
||||
|
||||
internal void Update(LockingServiceReference.ServerStatus serverStatus)
|
||||
{
|
||||
if (this._isUpdating) return;
|
||||
_isUpdating = true;
|
||||
int totalNum = serverStatus.IMPFiles.Length + serverStatus.READYFiles.Length + serverStatus.CORRUPTFiles.Length;
|
||||
entries.Clear();
|
||||
BackgroundWorker bgWorker = new BackgroundWorker();
|
||||
@ -95,24 +98,20 @@ namespace ENI2.Controls
|
||||
|
||||
System.Windows.Application.Current.Dispatcher.Invoke(delegate {
|
||||
foreach (StatusEntry se in tmpList)
|
||||
entries.Add(se);
|
||||
entries.Add(se);
|
||||
});
|
||||
};
|
||||
|
||||
bgWorker.RunWorkerCompleted += (o, e) =>
|
||||
{
|
||||
{
|
||||
|
||||
// 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;
|
||||
this.labelStatusTransmitter.Content = transmitter.ToString();
|
||||
|
||||
this.busyIndicator.IsBusy = false;
|
||||
|
||||
_isUpdating = false;
|
||||
};
|
||||
|
||||
this.busyIndicator.IsBusy = true;
|
||||
@ -147,15 +146,23 @@ namespace ENI2.Controls
|
||||
|
||||
string guidString = m.Groups[2].Value;
|
||||
|
||||
string idString = "";
|
||||
if (!guidIdDict.ContainsKey(guidString))
|
||||
{
|
||||
string idString = "";
|
||||
if (Guid.TryParse(m.Groups[2].Value, out Guid coreId))
|
||||
{
|
||||
MessageCore aCore = DBManager.Instance.GetMessageCoreById(coreId);
|
||||
if (aCore != null)
|
||||
if (!coreIdVisitIdMap.ContainsKey(coreId))
|
||||
{
|
||||
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;
|
||||
|
||||
@ -8,12 +8,13 @@ using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.ComponentModel;
|
||||
using ENI2.Util;
|
||||
using System.Windows.Data;
|
||||
|
||||
namespace ENI2.Controls
|
||||
{
|
||||
|
||||
[TemplatePart(Name = "buttonRefresh", Type = typeof(Button))]
|
||||
[TemplatePart(Name = "buttonClose", Type = typeof(Button))]
|
||||
[TemplatePart(Name = "buttonClose", Type = typeof(Button))]
|
||||
public class StatusWindowBase : Window
|
||||
{
|
||||
|
||||
@ -34,9 +35,23 @@ namespace ENI2.Controls
|
||||
|
||||
closeButton.Click += (s, e) => { if (this.IsModal()) DialogResult = true; CloseClicked?.Invoke(); this.Close(); };
|
||||
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
|
||||
{
|
||||
@ -50,5 +65,16 @@ namespace ENI2.Controls
|
||||
// this.SetPlacement(..)
|
||||
}
|
||||
|
||||
public void BringUp()
|
||||
{
|
||||
if (!IsVisible) this.Show();
|
||||
if (WindowState == WindowState.Minimized)
|
||||
WindowState = WindowState.Normal;
|
||||
Activate();
|
||||
Topmost = true; // k.a. ob dieser grauenhafte Hack notwendig ist..
|
||||
Topmost = false;
|
||||
System.Diagnostics.Trace.WriteLine("XXX");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
//check if the parent matches the type we're looking for
|
||||
T parent = parentObject as T;
|
||||
if (parent != null)
|
||||
if (parentObject is T parent)
|
||||
return parent;
|
||||
else
|
||||
return FindParent<T>(parentObject);
|
||||
|
||||
@ -33,6 +33,7 @@ namespace ENI2
|
||||
private DependencyPropertyDescriptor _dpComboboxValue;
|
||||
private DependencyPropertyDescriptor _dpNumericUpdown;
|
||||
private DependencyPropertyDescriptor _dpIntUpdown;
|
||||
|
||||
private readonly Dictionary<Object, Message.NotificationClass> _controlClassDict = new Dictionary<object, Message.NotificationClass>();
|
||||
private readonly Dictionary<Message.NotificationClass, Message> _typeMessageDict = new Dictionary<Message.NotificationClass, Message>();
|
||||
|
||||
@ -69,7 +70,7 @@ namespace ENI2
|
||||
/// <summary>
|
||||
/// Damit kann ein Listenelement eine Validierung der gesamten Anmeldung auslösen (inkl. Highlighting) (auf Knopfdruck)
|
||||
/// </summary>
|
||||
public event Action RequestValidate;
|
||||
public event Action<bool> RequestValidate;
|
||||
|
||||
/// <summary>
|
||||
/// Alle Meldeklassen die auf "zu versenden" stehen werden validiert und falls die Validierung scheitert auf "SUSPEND" gestellt
|
||||
@ -89,7 +90,7 @@ namespace ENI2
|
||||
/// <summary>
|
||||
/// Eine in der Detailansicht enthaltene Meldeklasse hat sich geändert
|
||||
/// </summary>
|
||||
public event Action<Message.NotificationClass> NotificationClassChanged;
|
||||
public event Action<Message.NotificationClass?> NotificationClassChanged;
|
||||
|
||||
/// <summary>
|
||||
/// 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));
|
||||
_dpComboboxValue = DependencyPropertyDescriptor.FromProperty(ComboBox.SelectedValueProperty, typeof(ComboBox));
|
||||
_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)
|
||||
{
|
||||
@ -160,9 +160,9 @@ namespace ENI2
|
||||
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()
|
||||
@ -185,6 +185,17 @@ namespace ENI2
|
||||
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)
|
||||
|
||||
protected void RegisterTextboxChange(TextBox textBox, Message.NotificationClass notificationClass)
|
||||
@ -246,7 +257,7 @@ namespace ENI2
|
||||
{
|
||||
this._dpIntUpdown.AddValueChanged(intUpDown, this.controlContentChanged);
|
||||
this._controlClassDict[intUpDown] = notificationClass;
|
||||
}
|
||||
}
|
||||
|
||||
protected void SublistElementChanged(Message.NotificationClass notificationClass)
|
||||
{
|
||||
@ -258,16 +269,21 @@ namespace ENI2
|
||||
{
|
||||
_typeMessageDict[notificationClass].IsDirty = true;
|
||||
// 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..
|
||||
|
||||
protected void DateTimePicker_PreviewKeyUp(object sender, System.Windows.Input.KeyEventArgs e)
|
||||
{
|
||||
{
|
||||
if ((sender is DateTimePicker thePicker) && rdt.IsMatch(thePicker.Text))
|
||||
{
|
||||
try
|
||||
@ -280,7 +296,9 @@ namespace ENI2
|
||||
int minute = Int32.Parse(timevalText.Substring(10, 2));
|
||||
thePicker.Value = new DateTime(year, month, day, hour, minute, 0);
|
||||
}
|
||||
catch (FormatException) { }
|
||||
catch (Exception) {
|
||||
thePicker.Value = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -296,7 +314,9 @@ namespace ENI2
|
||||
int year = Int32.Parse(timevalText.Substring(4, 4));
|
||||
thePicker.SelectedDate = new DateTime(year, month, day, 0, 0, 0);
|
||||
}
|
||||
catch (FormatException) { }
|
||||
catch (Exception) {
|
||||
thePicker.SelectedDate = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -329,9 +349,7 @@ namespace ENI2
|
||||
GlobalStructures.FilterCombobox(cmb, e.Key);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
#region IHighlightControlContainer implementation
|
||||
|
||||
|
||||
@ -15,10 +15,10 @@
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="220" />
|
||||
<ColumnDefinition Width="220" x:Name="leftColumnDefinition"/>
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
|
||||
<xctk:AutoSelectTextBox x:Name="shipNameLabel" Grid.Row="0" Grid.Column="0" VerticalContentAlignment="Center" FontWeight="Bold" IsReadOnly="True" BorderThickness="0" AutoSelectBehavior="OnFocus" />
|
||||
<Grid Grid.Row="0" Grid.Column="1">
|
||||
<Grid.ColumnDefinitions>
|
||||
@ -26,7 +26,11 @@
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<xctk:AutoSelectTextBox x:Name="displayIdLabel" Width="Auto" VerticalContentAlignment="Center" FontWeight="Bold" IsReadOnly="True" BorderThickness="0" AutoSelectBehavior="OnFocus" />
|
||||
<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" />
|
||||
<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" />
|
||||
</StackPanel>
|
||||
<Button Name="buttonSave" Grid.Column="1" Grid.Row="0" Margin="2" Click="buttonSave_Click" BorderThickness="0" Background="Transparent" Visibility="Hidden">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Image Source="./Resources/floppy_disk_edit.png" Margin="0,0,5,0" Height="24" />
|
||||
|
||||
@ -14,6 +14,9 @@ using ENI2.DetailViewControls;
|
||||
using ENI2.Util;
|
||||
|
||||
using ENI2.EditControls;
|
||||
using System.Windows.Input;
|
||||
using System.Linq;
|
||||
using ENI2.SheetDisplayControls;
|
||||
|
||||
namespace ENI2
|
||||
{
|
||||
@ -28,7 +31,7 @@ namespace ENI2
|
||||
private readonly List<MessageGroup> _listBoxList = new List<MessageGroup>();
|
||||
private List<Message> _messages;
|
||||
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 HighlightService highlightService = new HighlightService();
|
||||
|
||||
@ -40,7 +43,7 @@ namespace ENI2
|
||||
|
||||
#region Properties
|
||||
|
||||
public MessageCore Core { get; private set; }
|
||||
public MessageCore Core { get; private set; }
|
||||
|
||||
public bool LockedByOtherUser { get; set; }
|
||||
|
||||
@ -62,7 +65,7 @@ namespace ENI2
|
||||
get
|
||||
{
|
||||
// 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.
|
||||
// TODO: Hier wird noch ein Flag benötigt, dass die erfolgte Anzeige des Warndialogs speichert
|
||||
List<string> result = new List<string>();
|
||||
@ -71,7 +74,7 @@ namespace ENI2
|
||||
{
|
||||
if (((aMessage.InternalStatus == Message.BSMDStatus.UPDATED) ||
|
||||
(aMessage.InternalStatus == Message.BSMDStatus.SAVED)) && // ||
|
||||
// (aMessage.InternalStatus == Message.BSMDStatus.EXCEL)) &&
|
||||
// (aMessage.InternalStatus == Message.BSMDStatus.EXCEL)) &&
|
||||
!aMessage.UnsentMessageWarningShown)
|
||||
{
|
||||
aMessage.UnsentMessageWarningShown = true;
|
||||
@ -79,7 +82,7 @@ namespace ENI2
|
||||
result.Add(aMessage.MessageNotificationClassDisplay);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@ -105,43 +108,115 @@ namespace ENI2
|
||||
}
|
||||
}
|
||||
|
||||
public bool HasCriticalInfoMissing(out string messageText, string locode)
|
||||
{
|
||||
messageText = "";
|
||||
// Hier haben wir Logik für Spezialfälle, z.B. dass für BRE und BRV bestimmte Meldeklassen gesendet werden *müssen*
|
||||
|
||||
switch (locode)
|
||||
{
|
||||
case "DEBRV":
|
||||
case "DEBRE":
|
||||
{
|
||||
foreach (Message aMessage in _messages)
|
||||
{
|
||||
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; }
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region Construction
|
||||
|
||||
public DetailRootControl(MessageCore aCore)
|
||||
public DetailRootControl(MessageCore aCore, ReportingParty.ShipcallDisplayModeEnum displayMode)
|
||||
{
|
||||
Core = aCore;
|
||||
InitializeComponent();
|
||||
shipNameLabel.Text = aCore.Shipname;
|
||||
shipEMailLabel.Text = aCore.HerbergEmailContactReportingVessel;
|
||||
displayIdLabel.Text = aCore.DisplayId;
|
||||
|
||||
|
||||
// Listbox befüllen
|
||||
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" });
|
||||
// Unterscheidung in welchem Darstellungs-Mode der Anlauf dargestellt wird (Classic oder Formblatt)
|
||||
|
||||
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;
|
||||
|
||||
_messages = DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).GetMessagesForCore(Core, DBManager.MessageLoad.ALL);
|
||||
List<Message> missingMessages = bsmd.database.Util.CreateMessagesForCore(Core, _messages, this.LockedBy);
|
||||
_messages.AddRange(missingMessages);
|
||||
|
||||
BindingOperations.EnableCollectionSynchronization(_messages, this.messageListLock);
|
||||
Dispatcher.BeginInvoke((Action)(() => this.listBoxMessages.SelectedIndex = 0));
|
||||
Dispatcher.BeginInvoke((System.Action)(() => this.listBoxMessages.SelectedIndex = 0));
|
||||
|
||||
RoutedCommand saveCmd = new RoutedCommand();
|
||||
saveCmd.InputGestures.Add(new KeyGesture(Key.S, ModifierKeys.Control));
|
||||
CommandBindings.Add(new CommandBinding(saveCmd, this.buttonSave_Click));
|
||||
|
||||
RoutedCommand saveAllCmd = new RoutedCommand();
|
||||
saveAllCmd.InputGestures.Add(new KeyGesture(Key.A, ModifierKeys.Control));
|
||||
CommandBindings.Add(new CommandBinding(saveAllCmd, this.buttonSaveAll_Click));
|
||||
|
||||
RoutedCommand reloadCmd = new RoutedCommand();
|
||||
reloadCmd.InputGestures.Add(new KeyGesture(Key.R, ModifierKeys.Control));
|
||||
CommandBindings.Add(new CommandBinding(reloadCmd, this.ShortCutReload));
|
||||
|
||||
RoutedCommand validateCmd = new RoutedCommand();
|
||||
validateCmd.InputGestures.Add(new KeyGesture(Key.F, ModifierKeys.Control));
|
||||
CommandBindings.Add(new CommandBinding(validateCmd, this.ShortCutValidate));
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
@ -151,7 +226,8 @@ namespace ENI2
|
||||
public void CoreChanged(MessageCore newCore)
|
||||
{
|
||||
this.Core = newCore;
|
||||
Application.Current.Dispatcher.Invoke(delegate
|
||||
this.ReloadCore();
|
||||
System.Windows.Application.Current.Dispatcher.Invoke(delegate
|
||||
{
|
||||
if(controlCache.ContainsKey(Properties.Resources.textOverview))
|
||||
{
|
||||
@ -197,6 +273,8 @@ namespace ENI2
|
||||
// Spezial-Balkon für die Wiederverwendung von HAZD / HAZA als ein Control (es tut mir leid :D)
|
||||
if (mg.MessageGroupName.Equals(Properties.Resources.textDGDeparture))
|
||||
((DangerousGoodsDetailControl)detailControl).IsDeparture = true;
|
||||
if (mg.MessageGroupName.Equals(Properties.Resources.text11DangerousCargoDeparture))
|
||||
((DangerousCargoControl)detailControl).IsDeparture = true;
|
||||
detailControl.Core = Core;
|
||||
detailControl.Messages = _messages;
|
||||
detailControl.LockedByOtherUser = this.LockedByOtherUser;
|
||||
@ -209,7 +287,7 @@ namespace ENI2
|
||||
}
|
||||
};
|
||||
|
||||
detailControl.RequestReload += DetailControl_RequestReload;
|
||||
detailControl.RequestReload += DetailControl_RequestReload;
|
||||
detailControl.NotificationClassChanged += DetailControl_NotificationClassChanged;
|
||||
detailControl.ResetControlCache += DetailControl_ResetControlCache;
|
||||
detailControl.RequestValidate += DetailControl_RequestValidate;
|
||||
@ -222,7 +300,7 @@ namespace ENI2
|
||||
detailControl.SetEnabled(isEnabled);
|
||||
|
||||
if (!isEnabled && (detailControl is OverViewDetailControl control) && !(Core.Cancelled ?? false))
|
||||
control.ShowLockedBy(this.LockedBy);
|
||||
control.ShowLockedBy(this.LockedBy);
|
||||
|
||||
controlCache.Add(mg.MessageGroupName, detailControl);
|
||||
this.buttonSave.Visibility = Visibility.Hidden;
|
||||
@ -256,7 +334,7 @@ namespace ENI2
|
||||
MessageCore newCore = new MessageCore();
|
||||
cdd.NewCore = newCore;
|
||||
cdd.OldCore = this.Core;
|
||||
|
||||
|
||||
cdd.Closed += (senderDialog, closeArgs) =>
|
||||
{
|
||||
CopyDeclarationDialog closedDialog = senderDialog as CopyDeclarationDialog;
|
||||
@ -289,19 +367,19 @@ namespace ENI2
|
||||
|
||||
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)
|
||||
{
|
||||
List<Message> existingMessages = DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).GetMessagesForCore(existingCore, DBManager.MessageLoad.ALL);
|
||||
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.TRANSIT))
|
||||
{
|
||||
MessageBox.Show(Properties.Resources.textMessagesAlreadySent, Properties.Resources.textCaptionError, MessageBoxButton.OK, MessageBoxImage.Stop);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// delete all existing data of core
|
||||
@ -314,8 +392,8 @@ namespace ENI2
|
||||
|
||||
// Bearbeitungsinformationen für bestehende ID-Beantragung beibehalten, falls bereits vorhanden
|
||||
|
||||
if(existingCore.IsTransit &&
|
||||
(existingMessage.MessageNotificationClass == Message.NotificationClass.TRANSIT) &&
|
||||
if(existingCore.IsTransit &&
|
||||
(existingMessage.MessageNotificationClass == Message.NotificationClass.TRANSIT) &&
|
||||
(existingMessage.InternalStatus == Message.BSMDStatus.CONFIRMED))
|
||||
{
|
||||
skipCopyTransit = true;
|
||||
@ -347,7 +425,7 @@ namespace ENI2
|
||||
|
||||
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>();
|
||||
foreach (Message oldMessage in this._messages)
|
||||
{
|
||||
@ -360,11 +438,11 @@ namespace ENI2
|
||||
if (oldMessage.MessageNotificationClass == Message.NotificationClass.ATD) continue;
|
||||
if (oldMessage.MessageNotificationClass == Message.NotificationClass.NOA_NOD) continue;
|
||||
|
||||
bool isAndienKlasse = ((oldMessage.MessageNotificationClass == Message.NotificationClass.AGNT) ||
|
||||
bool isAndienKlasse = (oldMessage.MessageNotificationClass == Message.NotificationClass.AGNT) ||
|
||||
(oldMessage.MessageNotificationClass == Message.NotificationClass.STAT) ||
|
||||
(oldMessage.MessageNotificationClass == Message.NotificationClass.INFO) ||
|
||||
(oldMessage.MessageNotificationClass == Message.NotificationClass.HAZA) ||
|
||||
(oldMessage.MessageNotificationClass == Message.NotificationClass.HAZD));
|
||||
(oldMessage.MessageNotificationClass == Message.NotificationClass.HAZD);
|
||||
|
||||
if (!cdd.CopyAll && !isAndienKlasse) continue;
|
||||
|
||||
@ -373,8 +451,9 @@ namespace ENI2
|
||||
newMessage.MessageCoreId = newCore.Id;
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(newMessage);
|
||||
newMessage.SaveElements();
|
||||
}
|
||||
}
|
||||
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).LoadXtraData(newCore); // reload data from DB and set all rel properites
|
||||
this.OnOpenNewCoreRequested(newCore);
|
||||
}
|
||||
};
|
||||
@ -385,12 +464,12 @@ namespace ENI2
|
||||
{
|
||||
this.LockedByOtherUser = true; // fake flag
|
||||
|
||||
// clear existing controls
|
||||
// clear existing controls
|
||||
this.detailView.Children.Clear();
|
||||
this.controlCache.Clear();
|
||||
|
||||
// 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)
|
||||
@ -402,12 +481,13 @@ namespace ENI2
|
||||
|
||||
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);
|
||||
if (result == MessageBoxResult.Yes)
|
||||
{
|
||||
|
||||
Util.UIHelper.SetBusyState();
|
||||
int currentMainTabIndex = -1;
|
||||
|
||||
if (this.detailView.Children[0] is DetailBaseControl currentControl)
|
||||
{
|
||||
@ -422,10 +502,24 @@ namespace ENI2
|
||||
// ggf. hat sich die Ticketnr geändert..
|
||||
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)
|
||||
@ -434,28 +528,33 @@ namespace ENI2
|
||||
{
|
||||
if ((message.Status == Message.MessageStatus.ACCEPTED) &&
|
||||
((message.InternalStatus == Message.BSMDStatus.CONFIRMED) || (message.InternalStatus == Message.BSMDStatus.VIOLATION)))
|
||||
{
|
||||
message.InternalStatus = Message.BSMDStatus.UPDATED;
|
||||
message.Status = null; // reset send status
|
||||
}
|
||||
else
|
||||
{
|
||||
message.InternalStatus = Message.BSMDStatus.SAVED;
|
||||
}
|
||||
|
||||
string userName = "?";
|
||||
if(App.UserId.HasValue && DBManager.Instance.GetReportingPartyDict().ContainsKey(App.UserId.Value))
|
||||
{
|
||||
userName = DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].Logon;
|
||||
}
|
||||
}
|
||||
message.ChangedBy = string.Format("{0} at {1}", userName, DateTime.Now);
|
||||
message.IsDirty = false;
|
||||
message.UnsentMessageWarningShown = false;
|
||||
message.UnconfirmedMessageWarningShown = false;
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(message);
|
||||
|
||||
message.SaveElements();
|
||||
|
||||
message.SaveElements();
|
||||
|
||||
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..
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(currentControl.Core);
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(currentControl.Core);
|
||||
}
|
||||
|
||||
if(message.MessageNotificationClass == Message.NotificationClass.STAT)
|
||||
@ -470,12 +569,13 @@ namespace ENI2
|
||||
|
||||
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);
|
||||
if (result == MessageBoxResult.Yes)
|
||||
{
|
||||
|
||||
Util.UIHelper.SetBusyState();
|
||||
int currentMainTabIndex = -1;
|
||||
|
||||
foreach (Message message in this._messages)
|
||||
{
|
||||
@ -486,16 +586,33 @@ namespace ENI2
|
||||
if (currentControl is OverViewDetailControl)
|
||||
{
|
||||
// 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.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..?
|
||||
this.buttonSaveAll.Visibility = Visibility.Visible;
|
||||
@ -540,6 +657,16 @@ namespace ENI2
|
||||
}
|
||||
*/
|
||||
|
||||
private void ShortCutReload(object sender, ExecutedRoutedEventArgs e)
|
||||
{
|
||||
this.DetailControl_RequestReload(this.Core.Id.Value);
|
||||
}
|
||||
|
||||
private void ShortCutValidate(object sender, ExecutedRoutedEventArgs e)
|
||||
{
|
||||
this.DetailControl_RequestValidate(true);
|
||||
}
|
||||
|
||||
private void DetailControl_RequestReload(Guid id)
|
||||
{
|
||||
/// core und messages neu laden
|
||||
@ -557,8 +684,17 @@ namespace ENI2
|
||||
this.detailView.Children.Clear();
|
||||
this.controlCache.Clear();
|
||||
|
||||
// return to "new" overview
|
||||
Dispatcher.BeginInvoke((Action)(() => this.listBoxMessages_SelectionChanged(this, null)));
|
||||
int currentIndex = this.listBoxMessages.SelectedIndex;
|
||||
|
||||
// return to "new" overview
|
||||
Dispatcher.BeginInvoke((System.Action)(() =>
|
||||
{
|
||||
this.listBoxMessages_SelectionChanged(this, null);
|
||||
shipNameLabel.Text = this.Core.Shipname;
|
||||
shipEMailLabel.Text = this.Core.HerbergEmailContactReportingVessel;
|
||||
this.listBoxMessages.SelectedIndex = currentIndex;
|
||||
}
|
||||
));
|
||||
|
||||
// if the entity has been highlighted (through remote change detection), reset this here
|
||||
this.OnHighlightReset();
|
||||
@ -588,7 +724,7 @@ namespace ENI2
|
||||
}
|
||||
|
||||
// NOA_NOD vor ATA vor ATD Versendereihenfolge sicherstellen
|
||||
if ((this.Core.InitialHIS == Message.NSWProvider.DUDR) || (this.Core.InitialHIS == Message.NSWProvider.DUDR_TEST))
|
||||
if (this.Core.InitialHIS == Message.NSWProvider.DUDR)
|
||||
{
|
||||
bool noa_nod_queued_or_sent = false;
|
||||
bool ata_queued_or_sent = false;
|
||||
@ -614,7 +750,7 @@ namespace ENI2
|
||||
{
|
||||
aMessage.InternalStatus = Message.BSMDStatus.SUSPENDED;
|
||||
aMessage.ChangedBy = "";
|
||||
aMessage.StatusInfo = string.Format("Validation error: NOA_NOD must be sent before ATA");
|
||||
aMessage.StatusInfo = string.Format("Validation error 142: NOA_NOD must be sent before ATA");
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(aMessage);
|
||||
}
|
||||
}
|
||||
@ -625,15 +761,15 @@ namespace ENI2
|
||||
{
|
||||
aMessage.InternalStatus = Message.BSMDStatus.SUSPENDED;
|
||||
aMessage.ChangedBy = "";
|
||||
aMessage.StatusInfo = string.Format("Validation error: NOA_NOD must be sent before ATD");
|
||||
aMessage.StatusInfo = string.Format("Validation error 142: NOA_NOD must be sent before ATD");
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(aMessage);
|
||||
}
|
||||
|
||||
if (!ata_queued_or_sent)
|
||||
if ((!ata_queued_or_sent ) && !DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].IsAdmin)
|
||||
{
|
||||
aMessage.InternalStatus = Message.BSMDStatus.SUSPENDED;
|
||||
aMessage.ChangedBy = "";
|
||||
aMessage.StatusInfo = string.Format("Validation error: ATA must be sent before ATD");
|
||||
aMessage.StatusInfo = string.Format("Validation error 143: ATA must be sent before ATD");
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(aMessage);
|
||||
}
|
||||
}
|
||||
@ -641,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)
|
||||
{
|
||||
vViolations = new List<MessageViolation>();
|
||||
vErrors = new List<MessageError>();
|
||||
|
||||
|
||||
// TODO: clear highlighting
|
||||
|
||||
Util.UIHelper.SetBusyState();
|
||||
@ -659,11 +795,26 @@ namespace ENI2
|
||||
foreach (Message aMessage in _messages)
|
||||
{
|
||||
if (!aMessage.EvaluateForValidation(this.Core.IsTransit)) continue;
|
||||
|
||||
|
||||
List<MessageError> errors = new List<MessageError>();
|
||||
List<MessageViolation> violations = new List<MessageViolation>();
|
||||
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);
|
||||
|
||||
if (messageGroup != null)
|
||||
@ -672,18 +823,28 @@ namespace ENI2
|
||||
me.MessageGroupName = messageGroup;
|
||||
foreach (MessageViolation mv in violations)
|
||||
mv.MessageGroupName = messageGroup;
|
||||
}
|
||||
}
|
||||
|
||||
vErrors.AddRange(errors);
|
||||
vViolations.AddRange(violations);
|
||||
}
|
||||
|
||||
#region 12.11.18 / 6.3.21: globale Plausi-Prüfungen
|
||||
Message crewMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.CREW);
|
||||
Message pasMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.PAS);
|
||||
#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.CREWA);
|
||||
Message crewdMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.CREWD);
|
||||
Message pasaMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.PASA);
|
||||
Message pasdMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.PASD);
|
||||
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 noanodMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.NOA_NOD);
|
||||
Message mdhMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.MDH);
|
||||
Message was_rcptMessage = _messages.Find(message => message.MessageNotificationClass == Message.NotificationClass.WAS_RCPT);
|
||||
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
|
||||
|
||||
@ -691,26 +852,182 @@ namespace ENI2
|
||||
{
|
||||
POBA poba = pobaMessage.Elements[0] as POBA;
|
||||
|
||||
if (crewMessage.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;
|
||||
vViolations.Add(mv);
|
||||
}
|
||||
|
||||
if(pasMessage.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;
|
||||
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
|
||||
|
||||
#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.
|
||||
|
||||
if(crewaMessage.Elements.Count > 0)
|
||||
{
|
||||
CREW crewaFirst = crewaMessage.Elements[0] as CREW;
|
||||
bool crewaIsSchengen = crewaFirst.NotificationSchengen ?? false;
|
||||
if (!((crewaFirst.NotificationPAX ?? false) || crewaIsSchengen)) // mindestens eins der beiden
|
||||
{
|
||||
vErrors.Add(RuleEngine.CreateError(ValidationCode.V181, "Pax / Schengen: one must be set", null, Properties.Resources.textOverview, null, "CREWA")); ;
|
||||
}
|
||||
}
|
||||
|
||||
if (crewdMessage != null)
|
||||
{
|
||||
if (crewdMessage.Elements.Count > 0)
|
||||
{
|
||||
CREWD crewdFirst = crewdMessage.Elements[0] as CREWD;
|
||||
bool crewdIsSchengen = crewdFirst.NotificationSchengen ?? false;
|
||||
if (!((crewdFirst.NotificationPAX ?? false) || crewdIsSchengen)) // mindestens eins der beiden
|
||||
{
|
||||
vErrors.Add(RuleEngine.CreateError(ValidationCode.V181, "Pax / Schengen: one must be set", null, Properties.Resources.textOverview, null, "CREWD")); ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(pasaMessage.Elements.Count > 0)
|
||||
{
|
||||
PAS pasFirst = pasaMessage.Elements[0] as PAS;
|
||||
bool pasIsSchengen = pasFirst.NotificationSchengen ?? false;
|
||||
bool pasIsPAX = pasFirst.NotificationPAX ?? false;
|
||||
if (!(pasIsPAX || pasIsSchengen)) // mindestens eins der beiden
|
||||
{
|
||||
vErrors.Add(RuleEngine.CreateError (ValidationCode.V201, "Pax / Schengen: one must be set", null, Properties.Resources.textOverview, null, "PASA"));
|
||||
}
|
||||
}
|
||||
|
||||
if (pasdMessage != null)
|
||||
{
|
||||
if (pasdMessage.Elements.Count > 0)
|
||||
{
|
||||
PASD pasdFirst = pasdMessage.Elements[0] as PASD;
|
||||
bool pasdIsSchengen = pasdFirst.NotificationSchengen ?? false;
|
||||
bool pasdIsPAX = pasdFirst.NotificationPAX ?? false;
|
||||
if (!(pasdIsPAX || pasdIsSchengen)) // mindestens eins der beiden
|
||||
{
|
||||
vErrors.Add(RuleEngine.CreateError(ValidationCode.V201, "Pax / Schengen: one must be set", null, Properties.Resources.textOverview, null, "PASD"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#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
|
||||
|
||||
#region 4.1.23 no CREW effects warning for DE
|
||||
if (crewaMessage != null)
|
||||
{
|
||||
MessageViolation mv = crewaMessage.ViolationList.Find((x) => x.PropertyName.Equals("Effects") && (x.ViolationCode == (int)ValidationCode.TRUNCATE));
|
||||
if ((mv != null) && !Core.IsDK)
|
||||
crewaMessage.ViolationList.Remove(mv);
|
||||
}
|
||||
|
||||
if(crewdMessage != null)
|
||||
{
|
||||
MessageViolation mvd = crewdMessage.ViolationList.Find((x) => x.PropertyName.Equals("Effects") && (x.ViolationCode == (int)ValidationCode.TRUNCATE));
|
||||
if ((mvd != null) && !Core.IsDK)
|
||||
crewdMessage.ViolationList.Remove(mvd);
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region WAS_RCPT double numbers
|
||||
|
||||
Dictionary<string, string> identDict = new Dictionary<string, string>();
|
||||
|
||||
foreach (WAS_RCPT was_rcpt in was_rcptMessage.Elements.Cast<WAS_RCPT>())
|
||||
{
|
||||
if (!was_rcpt.IdentificationNumber.IsNullOrEmpty())
|
||||
{
|
||||
// auf doppelte Ident Nummern prüfen
|
||||
if (identDict.ContainsKey(was_rcpt.IdentificationNumber))
|
||||
{
|
||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.V221, "Identification number", null, "WAS_RCPT", was_rcpt.Identifier, "WAS_RCPT");
|
||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||
vViolations.Add(mv);
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
identDict.Add(was_rcpt.IdentificationNumber, "");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Kiel Canal Timing Plausibility
|
||||
|
||||
if(!this.Core.IsTransit && (secMessage?.Elements.Count > 0) && (noanodMessage?.Elements.Count > 0))
|
||||
if (!this.Core.IsTransit && (secMessage?.Elements.Count > 0) && (noanodMessage?.Elements.Count > 0))
|
||||
{
|
||||
SEC sec = secMessage.Elements[0] as SEC;
|
||||
NOA_NOD noa_nod = noanodMessage.Elements[0] as NOA_NOD;
|
||||
@ -784,6 +1101,117 @@ namespace ENI2
|
||||
|
||||
#endregion
|
||||
|
||||
#region SEC / MDH last port
|
||||
|
||||
{ // scope to hide sec
|
||||
// 5.1.22 "Generell zu Überprüfen wäre:
|
||||
// Sind alle Einträge aus SEC, die innerhalb der letzten 30 Tag liegen, gem. LoCode und ETD auch in der MDH-Liste enthalten ?"
|
||||
if ((secMessage.Elements[0] is SEC sec) && (mdhMessage.Elements[0] is MDH mdh))
|
||||
{
|
||||
NOA_NOD noa_nod = noanodMessage.Elements[0] as NOA_NOD;
|
||||
DateTime refDate = DateTime.Now;
|
||||
if (this.Core.IsTransit)
|
||||
{
|
||||
if (noa_nod.ETAToKielCanal.HasValue)
|
||||
refDate = noa_nod.ETAToKielCanal.Value.Date;
|
||||
else
|
||||
refDate = this.Core.ETAKielCanal.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (noa_nod.ETAToPortOfCall.HasValue)
|
||||
refDate = noa_nod.ETAToPortOfCall.Value.Date;
|
||||
else
|
||||
refDate = this.Core.ETA.Value;
|
||||
}
|
||||
|
||||
foreach (LastTenPortFacilitiesCalled l10c in sec.LastTenPortFacilitesCalled)
|
||||
{
|
||||
if (!l10c.PortFacilityDateOfDeparture.HasValue) continue;
|
||||
if ((refDate - l10c.PortFacilityDateOfDeparture.Value).TotalDays < 31)
|
||||
{
|
||||
if (!l10c.PortFacilityPortLoCode.IsNullOrEmpty() && l10c.PortFacilityDateOfDeparture.HasValue) // this valid entry needs a match in mdh
|
||||
{
|
||||
bool matchIsFound = false;
|
||||
|
||||
foreach (PortOfCallLast30Days poc30d in mdh.PortOfCallLast30Days)
|
||||
{
|
||||
if (poc30d.PortOfCallLast30DaysDateOfDeparture.HasValue && !poc30d.PortOfCallLast30DaysLocode.IsNullOrEmpty())
|
||||
{
|
||||
if((poc30d.PortOfCallLast30DaysDateOfDeparture.Value.Date == l10c.PortFacilityDateOfDeparture.Value.Date) &&
|
||||
poc30d.PortOfCallLast30DaysLocode.Equals(l10c.PortFacilityPortLoCode, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
matchIsFound = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!matchIsFound)
|
||||
{
|
||||
string msg = string.Format("SEC / MDH last ports do not match (Locode, Date) at {0}", l10c.Identifier);
|
||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.IMPLAUSIBLE, msg, null, "SEC/MDH comparison", null, "SEC");
|
||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||
vViolations.Add(mv);
|
||||
break; // report this only once..
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Waste disposal service provider for DEHAM
|
||||
|
||||
if ((!this.Core.DisplayId.IsNullOrEmpty() && this.Core.DisplayId.StartsWith("DEHAM")) ||
|
||||
this.Core.PoC.Equals("DEHAM"))
|
||||
{
|
||||
if (wasMessage.Elements.Count > 0)
|
||||
{
|
||||
WAS was = wasMessage.Elements[0] as WAS;
|
||||
if ((!was.WasteDisposalValidExemption ?? true) && (was.WasteDisposalServiceProvider.Count == 0))
|
||||
{
|
||||
MessageViolation mv = RuleEngine.CreateViolation(ValidationCode.NOT_NULL, "Check waste disposal service provider", null, "WAS service provider", null, "WAS");
|
||||
mv.MessageGroupName = Properties.Resources.textOverview;
|
||||
vViolations.Add(mv);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#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
|
||||
|
||||
foreach (MessageError me in vErrors)
|
||||
@ -830,29 +1258,37 @@ namespace ENI2
|
||||
{
|
||||
if(this._errorListDialog == null)
|
||||
{
|
||||
this._errorListDialog = new ErrorListDialog();
|
||||
this._errorListDialog = new ErrorListDialog();
|
||||
this._errorListDialog.Closed += (o, e) => this._errorListDialog = null;
|
||||
this._errorListDialog.Loaded += (o, e) => this._errorListDialog.RefreshVisible = true;
|
||||
this._errorListDialog.ErrorSelected += _errorListDialog_ErrorSelected;
|
||||
this._errorListDialog.RefreshClicked += _errorListDialog_RefreshClicked;
|
||||
this._errorListDialog.RefreshClicked += _errorListDialog_RefreshClicked;
|
||||
this._errorListDialog.Show();
|
||||
}
|
||||
this._errorListDialog.Errors = vErrors;
|
||||
}
|
||||
else
|
||||
{
|
||||
this._errorListDialog.BringUp();
|
||||
}
|
||||
this._errorListDialog.Errors = vErrors;
|
||||
}
|
||||
|
||||
if (vViolations.Count > 0)
|
||||
{
|
||||
if(this._violationListDialog == null)
|
||||
{
|
||||
this._violationListDialog = new ViolationListDialog();
|
||||
this._violationListDialog = new ViolationListDialog();
|
||||
this._violationListDialog.Closed += (o, e) => this._violationListDialog = null;
|
||||
this._violationListDialog.Loaded += (o, e) => this._violationListDialog.RefreshVisible = true;
|
||||
this._violationListDialog.ViolationSelected += _errorListDialog_ErrorSelected;
|
||||
this._violationListDialog.RefreshClicked += _errorListDialog_RefreshClicked;
|
||||
this._violationListDialog.RefreshClicked += _errorListDialog_RefreshClicked;
|
||||
this._violationListDialog.Show();
|
||||
}
|
||||
_violationListDialog.Violations = vViolations;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this._violationListDialog.BringUp();
|
||||
}
|
||||
_violationListDialog.Violations = vViolations;
|
||||
}
|
||||
|
||||
if((vErrors.Count == 0) && (vViolations.Count == 0))
|
||||
{
|
||||
@ -864,7 +1300,7 @@ namespace ENI2
|
||||
|
||||
private void _errorListDialog_RefreshClicked()
|
||||
{
|
||||
DetailControl_RequestValidate();
|
||||
DetailControl_RequestValidate(true);
|
||||
}
|
||||
|
||||
private void _errorListDialog_ErrorSelected(DatabaseEntity obj)
|
||||
@ -910,8 +1346,11 @@ namespace ENI2
|
||||
|
||||
private DependencyObject GetContainerForMessageGroupName(string messageGroupName)
|
||||
{
|
||||
if (controlCache.ContainsKey(messageGroupName))
|
||||
return controlCache[messageGroupName];
|
||||
if (messageGroupName != null)
|
||||
{
|
||||
if (controlCache.ContainsKey(messageGroupName))
|
||||
return controlCache[messageGroupName];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -926,9 +1365,9 @@ namespace ENI2
|
||||
case Message.NotificationClass.BKRA:
|
||||
return Properties.Resources.textArrivalNotification;
|
||||
case Message.NotificationClass.BPOL:
|
||||
case Message.NotificationClass.CREW:
|
||||
case Message.NotificationClass.CREWA:
|
||||
case Message.NotificationClass.CREWD:
|
||||
case Message.NotificationClass.PAS:
|
||||
case Message.NotificationClass.PASA:
|
||||
case Message.NotificationClass.PASD:
|
||||
return Properties.Resources.textBorderPolice;
|
||||
case Message.NotificationClass.HAZA:
|
||||
@ -942,7 +1381,7 @@ namespace ENI2
|
||||
return Properties.Resources.textDepartureNotification;
|
||||
case Message.NotificationClass.MDH:
|
||||
return Properties.Resources.textMDH;
|
||||
case Message.NotificationClass.NOA_NOD:
|
||||
case Message.NotificationClass.NOA_NOD:
|
||||
case Message.NotificationClass.AGNT:
|
||||
return Properties.Resources.textPortCall;
|
||||
case Message.NotificationClass.NAME:
|
||||
@ -960,6 +1399,7 @@ namespace ENI2
|
||||
case Message.NotificationClass.TOWD:
|
||||
return Properties.Resources.textTowage;
|
||||
case Message.NotificationClass.WAS:
|
||||
case Message.NotificationClass.WAS_RCPT:
|
||||
return Properties.Resources.textWaste;
|
||||
}
|
||||
return null;
|
||||
|
||||
@ -71,8 +71,24 @@
|
||||
AutoGenerateColumns="False" Margin="0,5,0,0">
|
||||
<DataGrid.Columns>
|
||||
<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.textBunkerQuantity}" Binding="{Binding BunkerFuelQuantity_TNE, Mode=TwoWay}" IsReadOnly="True" Width="0.8*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textBunkerType}" Width="0.2*">
|
||||
<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>
|
||||
</enictrl:ENIDataGrid>
|
||||
</GroupBox>
|
||||
|
||||
@ -38,7 +38,8 @@ namespace ENI2.DetailViewControls
|
||||
this.RegisterIntegerUpDownChange(this.integerUpDownCrewMemberOnBoard, Message.NotificationClass.POBA);
|
||||
this.RegisterIntegerUpDownChange(this.integerUpDownPassengersOnBoard, 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;
|
||||
}
|
||||
|
||||
@ -165,24 +166,26 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private void copyBKR(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// aus dem aktuell selektierten IBC Element ein neues IBC Element machen und nach HAZD kopieren
|
||||
|
||||
foreach (BRKA brka in this.dataGridBKRA.Items)
|
||||
if (this.dataGridBKRA.SelectedItems != null)
|
||||
{
|
||||
BRKD copyBRKD = new BRKD();
|
||||
copyBRKD.MessageHeader = this._brkdMessage;
|
||||
copyBRKD.CopyFromBKRA(brka);
|
||||
copyBRKD.Identifier = DatabaseEntity.GetNewIdentifier(this._brkdMessage.Elements);
|
||||
this._brkdMessage.Elements.Add(copyBRKD);
|
||||
this.SublistElementChanged(Message.NotificationClass.BKRD);
|
||||
foreach (BRKA brka in this.dataGridBKRA.SelectedItems)
|
||||
{
|
||||
BRKD copyBRKD = new BRKD();
|
||||
copyBRKD.MessageHeader = this._brkdMessage;
|
||||
copyBRKD.CopyFromBKRA(brka);
|
||||
copyBRKD.Identifier = DatabaseEntity.GetNewIdentifier(this._brkdMessage.Elements);
|
||||
this._brkdMessage.Elements.Add(copyBRKD);
|
||||
this.SublistElementChanged(Message.NotificationClass.BKRD);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#region BKRA grid events
|
||||
|
||||
private void DataGridBKRA_CreateRequested()
|
||||
{
|
||||
this.dataGridBKRA.CancelEdit();
|
||||
this.dataGridBKRA.CancelEdit();
|
||||
EditBKRDialog ebd = new EditBKRDialog();
|
||||
ebd.BRKA = new BRKA();
|
||||
ebd.BRKA.Identifier = BRKA.GetNewIdentifier(this._bkraMessage.Elements);
|
||||
@ -215,6 +218,8 @@ namespace ENI2.DetailViewControls
|
||||
{
|
||||
if (obj is BRKA brka)
|
||||
{
|
||||
this.dataGridBKRA.CancelEdit();
|
||||
this.dataGridBKRA.CancelEdit();
|
||||
// are you sure dialog is in base class
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(brka);
|
||||
this._bkraMessage.Elements.Remove(brka);
|
||||
@ -225,8 +230,12 @@ namespace ENI2.DetailViewControls
|
||||
}
|
||||
|
||||
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();
|
||||
eld.IsDeparture = false;
|
||||
eld.BRKA = obj as BRKA;
|
||||
@ -236,7 +245,8 @@ namespace ENI2.DetailViewControls
|
||||
eld.CopyValuesToEntity();
|
||||
if(!_bkraMessage.Elements.Contains(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.Identifier = BRKA.GetNewIdentifier(this._bkraMessage.Elements);
|
||||
eld.BRKA.MessageHeader = _bkraMessage;
|
||||
@ -247,7 +257,8 @@ namespace ENI2.DetailViewControls
|
||||
{
|
||||
if (!_bkraMessage.Elements.Contains(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);
|
||||
}
|
||||
}
|
||||
@ -277,18 +288,7 @@ namespace ENI2.DetailViewControls
|
||||
if (this._tiefaMessage.HasViolations) this.tiefaGroupBox.BorderBrush = Brushes.Yellow;
|
||||
}
|
||||
|
||||
#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
|
||||
#endregion
|
||||
|
||||
#region special datetimepicker validation popup (OMG)
|
||||
|
||||
|
||||
@ -49,7 +49,7 @@
|
||||
</ScrollViewer>
|
||||
</GroupBox>
|
||||
</TabItem>
|
||||
<TabItem Header="{x:Static p:Resources.textTabCrewList}" Name="tabCrewList">
|
||||
<TabItem Header="{x:Static p:Resources.textCrewArrival}" Name="tabCrewArrival">
|
||||
<GroupBox Name="groupBoxCrewList" Header="{x:Static p:Resources.textTabCrewList}">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
@ -60,6 +60,14 @@
|
||||
<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"/>
|
||||
<Label Name="labelCrewEntryCount" Content="{x:Static p:Resources.textEntries}" />
|
||||
|
||||
<CheckBox Name="checkBoxCrewNotificationSchengen" IsThreeState="False" VerticalAlignment="Center" Margin="10,0,0,0" Click="checkBoxCrewNotificationSchengen_Click"/>
|
||||
<Label Name="labelCrewNotificationSchengen" Content="{x:Static p:Resources.textNotificationSchengen}" />
|
||||
<CheckBox Name="checkBoxCrewNotificationPAX" IsThreeState="False" VerticalAlignment="Center" Margin="10,0,0,0" Click="checkBoxCrewNotificationPAX_Click"/>
|
||||
<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" />
|
||||
|
||||
</StackPanel>
|
||||
<enictrl:ENIDataGrid Grid.Row="1" Grid.Column="0" x:Name="dataGridCrewList" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
||||
AutoGenerateColumns="False" Margin="0,5,0,0">
|
||||
@ -68,21 +76,65 @@
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textLastName}" Binding="{Binding CrewMemberLastName, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textFirstName}" Binding="{Binding CrewMemberFirstName, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textGender}" Binding="{Binding CrewMemberGenderDisplay}" 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.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.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*" />
|
||||
<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.textIdDocNumber}" Binding="{Binding CrewMemberIdentityDocumentId, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textVisaNumber}" Binding="{Binding CrewMemberVisaNumber, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textDocumentIssuingState}" Binding="{Binding CrewMemberIdentityDocumentIssuingState, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textDocumentExpiryDate}" Binding="{Binding CrewMemberIdentityDocumentExpiryDate, Mode=TwoWay, StringFormat=\{0:dd.MM.yyyy\}}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textVisaNumber}" Binding="{Binding CrewMemberVisaNumber, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<!--<DataGridTextColumn Header="{x:Static p:Resources.textEffects}" Binding="{Binding Effects, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />-->
|
||||
</DataGrid.Columns>
|
||||
</enictrl:ENIDataGrid>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
</TabItem>
|
||||
<TabItem Header="{x:Static p:Resources.textTabPassengerList}" Name="tabPassengerList">
|
||||
|
||||
<TabItem Header="{x:Static p:Resources.textCrewDeparture}" Name="tabCrewDeparture">
|
||||
<GroupBox Name="groupBoxCrewListDeparture" Header="{x:Static p:Resources.textTabCrewList}">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<StackPanel Grid.Row="0" Grid.Column="0" Orientation="Horizontal">
|
||||
<Button Name="buttonImportExcelCrewDeparture" Content="{x:Static p:Resources.textImportFromExcel}" Margin="2" Width="120" HorizontalAlignment="Left" VerticalAlignment="Center" Background="Transparent" Click="buttonImportExcelCrewDeparture_Click" />
|
||||
<TextBlock Margin="20, 0, 0, 0" Name="textBlockNumCrewEntriesDeparture" FontWeight="Bold" Text="{Binding Elements.Count}" VerticalAlignment="Center"/>
|
||||
<Label Name="labelCrewEntryCountDeparture" Content="{x:Static p:Resources.textEntries}" />
|
||||
<CheckBox Name="checkBoxCrewNotificationSchengenDeparture" IsThreeState="False" VerticalAlignment="Center" Margin="10,0,0,0" Click="checkBoxCrewNotificationSchengenDeparture_Click"/>
|
||||
<Label Name="labelCrewNotificationSchengenDeparture" Content="{x:Static p:Resources.textNotificationSchengen}" />
|
||||
<CheckBox Name="checkBoxCrewNotificationPAXDeparture" IsThreeState="False" VerticalAlignment="Center" Margin="10,0,0,0" Click="checkBoxCrewNotificationPAXDeparture_Click"/>
|
||||
<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" />
|
||||
</StackPanel>
|
||||
<enictrl:ENIDataGrid Grid.Row="1" Grid.Column="0" x:Name="dataGridCrewListDeparture" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
||||
AutoGenerateColumns="False" Margin="0,5,0,0">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="" Binding="{Binding Identifier}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textLastName}" Binding="{Binding CrewMemberLastName, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textFirstName}" Binding="{Binding CrewMemberFirstName, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textGender}" Binding="{Binding CrewMemberGenderDisplay}" 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.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*" />
|
||||
<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.textIdDocNumber}" Binding="{Binding CrewMemberIdentityDocumentId, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textDocumentIssuingState}" Binding="{Binding CrewMemberIdentityDocumentIssuingState, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textDocumentExpiryDate}" Binding="{Binding CrewMemberIdentityDocumentExpiryDate, Mode=TwoWay, StringFormat=\{0:dd.MM.yyyy\}}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textVisaNumber}" Binding="{Binding CrewMemberVisaNumber, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
</DataGrid.Columns>
|
||||
</enictrl:ENIDataGrid>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
</TabItem>
|
||||
|
||||
<TabItem Header="{x:Static p:Resources.textPasArrival}" Name="tabPassengerList">
|
||||
<GroupBox Name="groupBoxPassengerList" Header="{x:Static p:Resources.textTabPassengerList}">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
@ -93,6 +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" />
|
||||
<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}" />
|
||||
<CheckBox Name="checkBoxPasNotificationSchengen" IsThreeState="False" VerticalAlignment="Center" Margin="10,0,0,0" Click="checkBoxPasNotificationSchengen_Click"/>
|
||||
<Label Name="labelPasNotificationSchengen" Content="{x:Static p:Resources.textNotificationSchengen}" />
|
||||
<CheckBox Name="checkBoxPasNotificationPAX" IsThreeState="False" VerticalAlignment="Center" Margin="10,0,0,0" Click="checkBoxPasNotificationPAX_Click"/>
|
||||
<Label Name="labelPasNotificationPAX" Content="{x:Static p:Resources.textNotificationPAX}" />
|
||||
<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>
|
||||
<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">
|
||||
@ -101,22 +159,72 @@
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textLastName}" Binding="{Binding PassengerLastName, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textFirstName}" Binding="{Binding PassengerFirstName, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textGender}" Binding="{Binding PassengerGenderDisplay}" 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.textPortOfEmbarkation}" Binding="{Binding PassengerPortOfEmbarkation}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textPortOfDisembarkation}" Binding="{Binding PassengerPortOfDisembarkation}" 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.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.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.textIdDocNumber}" Binding="{Binding PassengerIdentityDocumentId}" 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.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.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*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textEmergencyContactNumber}" Binding="{Binding EmergencyContactNumber, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
|
||||
</DataGrid.Columns>
|
||||
</enictrl:ENIDataGrid>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
</TabItem>
|
||||
|
||||
<TabItem Header="{x:Static p:Resources.textPasDeparture}" Name="tabPassengerListDeparture">
|
||||
<GroupBox Name="groupBoxPassengerListDeparture" Header="{x:Static p:Resources.textTabPassengerList}">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<StackPanel Grid.Row="0" Grid.Column="0" Orientation="Horizontal">
|
||||
<Button Name="buttonImportExcelPassengerDeparture" Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textImportFromExcel}" Margin="2" Width="120" HorizontalAlignment="Left" VerticalAlignment="Center" Background="Transparent" Click="buttonImportExcelPassengerDeparture_Click" />
|
||||
<TextBlock Margin="20, 0, 0, 0" Name="textBlockNumPasEntriesDeparture" FontWeight="Bold" Text="{Binding Elements.Count}" VerticalAlignment="Center"/>
|
||||
<Label Name="labelPasEntryCountDeparture" Content="{x:Static p:Resources.textEntries}" />
|
||||
<CheckBox Name="checkBoxPasNotificationSchengenDeparture" IsThreeState="False" VerticalAlignment="Center" Margin="10,0,0,0" Click="checkBoxPasNotificationSchengenDeparture_Click"/>
|
||||
<Label Name="labelPasNotificationSchengenDeparture" Content="{x:Static p:Resources.textNotificationSchengen}" />
|
||||
<CheckBox Name="checkBoxPasNotificationPAXDeparture" IsThreeState="False" VerticalAlignment="Center" Margin="10,0,0,0" Click="checkBoxPasNotificationPAXDeparture_Click"/>
|
||||
<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" />
|
||||
</StackPanel>
|
||||
<enictrl:ENIDataGrid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" x:Name="dataGridPassengerListDeparture" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
||||
AutoGenerateColumns="False" Margin="0,5,0,0">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="" Binding="{Binding Identifier}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textLastName}" Binding="{Binding PassengerLastName, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textFirstName}" Binding="{Binding PassengerFirstName, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textGender}" Binding="{Binding PassengerGenderDisplay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textPortOfEmbarkation}" Binding="{Binding PassengerPortOfEmbarkation}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textPortOfDisembarkation}" Binding="{Binding PassengerPortOfDisembarkation}" 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.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.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.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.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.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*" />
|
||||
</DataGrid.Columns>
|
||||
</enictrl:ENIDataGrid>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
</TabItem>
|
||||
|
||||
</TabControl>
|
||||
|
||||
</src:DetailBaseControl>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -28,6 +28,7 @@
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Name="textBlockMessageClass" FontWeight="DemiBold" Grid.Row="0" Grid.Column="0" HorizontalAlignment="Center" VerticalAlignment="Center" />
|
||||
<Button Content="{x:Static p:Resources.textNewDGItem}" Name="buttonNewItem" Margin="2" Click="buttonNewItem_Click" Grid.Row="0" Grid.Column="1" />
|
||||
<Label Content="{x:Static p:Resources.textDangerousGoodsOnBoard}" Grid.Column="0" Grid.Row="1" HorizontalContentAlignment="Right" Margin="0,0,10,0"/>
|
||||
<Label Content="{x:Static p:Resources.textVesselClass}" Grid.Column="0" Grid.Row="2" HorizontalContentAlignment="Right" Margin="0,0,10,0"/>
|
||||
<Label Content="{x:Static p:Resources.textDGManifestOnBoard}" Grid.Column="2" Grid.Row="1" HorizontalContentAlignment="Right" Margin="0,0,10,0"/>
|
||||
@ -63,13 +64,14 @@
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textSubsidiaryRisk}" Binding="{Binding SubsidiaryRiskText}" IsReadOnly="True" Width="auto" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textControlTemperature}" Binding="{Binding ControlTemperature_CEL, StringFormat={}{0:N2}}" IsReadOnly="True" Width="auto" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textEmergencyTemperature}" Binding="{Binding EmergencyTemperature_CEL, StringFormat={}{0:N2}}" IsReadOnly="True" Width="auto" />
|
||||
<DataGridCheckBoxColumn Header="{x:Static p:Resources.textMarinePollutant}" Binding="{Binding Class7Category}" IsReadOnly="True" Width="auto" />
|
||||
<DataGridCheckBoxColumn Header="{x:Static p:Resources.textMarinePollutant}" Binding="{Binding MarinePollutant}" IsReadOnly="True" Width="auto" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textNumberOfPackages}" Binding="{Binding NumberOfPackages}" IsReadOnly="True" Width="auto" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textPackageType}" Binding="{Binding PackageType}" IsReadOnly="True" Width="auto" />
|
||||
<DataGridCheckBoxColumn Header="{x:Static p:Resources.textLimitedQuantity}" Binding="{Binding LimitedQuantities}" IsReadOnly="True" Width="auto" />
|
||||
<DataGridCheckBoxColumn Header="{x:Static p:Resources.textExceptedQuantities}" Binding="{Binding ExceptedQuantities}" IsReadOnly="True" Width="auto" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textNetQuantity}" Binding="{Binding NetQuantity_KGM, StringFormat={}{0:N2}}" IsReadOnly="True" Width="auto" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textExceptedQuantities}" Binding="{Binding ExceptedQuantities, StringFormat={}{0:N2}}" IsReadOnly="True" Width="auto" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textGrossQuantity}" Binding="{Binding GrossQuantity_KGM, StringFormat={}{0:N2}}" IsReadOnly="True" Width="auto" />
|
||||
<!--DataGridTextColumn Header="{x:Static p:Resources.textExceptedQuantities}" Binding="{Binding ExceptedQuantities, StringFormat={}{0:N2}}" IsReadOnly="True" Width="auto" /-->
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textCargoVolume}" Binding="{Binding Volume_MTQ, StringFormat={}{0:N2}}" IsReadOnly="True" Width="auto" />
|
||||
<DataGridCheckBoxColumn Header="{x:Static p:Resources.textGeneralCargo}" Binding="{Binding GeneralCargoIBC}" IsReadOnly="True" Width="auto" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textContainerNo}" Binding="{Binding ContainerNumber}" IsReadOnly="True" Width="auto" />
|
||||
|
||||
@ -22,9 +22,19 @@ namespace ENI2.DetailViewControls
|
||||
public partial class DangerousGoodsDetailControl : DetailBaseControl
|
||||
{
|
||||
|
||||
private Message _hazMessage;
|
||||
private HAZ haz;
|
||||
private HAZ hazd; // referenz auf HAZD, falls das hier HAZA ist und wir Positionen kopieren wollen
|
||||
#region fields
|
||||
|
||||
private Message _hazaMessage;
|
||||
private Message _hazdMessage;
|
||||
|
||||
private HAZ haza;
|
||||
private HAZ hazd;
|
||||
|
||||
private NewDGItemDialog newDGDialog = null;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Construction
|
||||
|
||||
public DangerousGoodsDetailControl()
|
||||
{
|
||||
@ -32,6 +42,8 @@ namespace ENI2.DetailViewControls
|
||||
this.Loaded += DangerousGoodsDetailControl_Loaded;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private void DangerousGoodsDetailControl_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.RegisterCheckboxChange(this.checkBoxDangerousGoodsOnBoard, this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
@ -40,6 +52,9 @@ namespace ENI2.DetailViewControls
|
||||
this.RegisterComboboxIndexChange(this.comboBoxVesselClass, this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Flag if this control is used for arrival or departure
|
||||
/// </summary>
|
||||
public bool IsDeparture { get; set; }
|
||||
|
||||
public override void Initialize()
|
||||
@ -48,74 +63,60 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
foreach (Message aMessage in this.Messages)
|
||||
{
|
||||
if (IsDeparture)
|
||||
|
||||
if (aMessage.MessageNotificationClass == Message.NotificationClass.HAZD)
|
||||
{
|
||||
if (aMessage.MessageNotificationClass == Message.NotificationClass.HAZD) { this._hazMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
||||
}
|
||||
else
|
||||
{
|
||||
if (aMessage.MessageNotificationClass == Message.NotificationClass.HAZA)
|
||||
this._hazdMessage = aMessage;
|
||||
this.ControlMessages.Add(aMessage);
|
||||
if (aMessage.Elements.Count > 0)
|
||||
this.hazd = aMessage.Elements[0] as HAZ;
|
||||
if (this.hazd == null)
|
||||
{
|
||||
this._hazMessage = aMessage;
|
||||
this.ControlMessages.Add(aMessage);
|
||||
}
|
||||
if (aMessage.MessageNotificationClass == Message.NotificationClass.HAZD)
|
||||
{
|
||||
if (aMessage != null)
|
||||
{
|
||||
if (aMessage.Elements.Count > 0)
|
||||
this.hazd = aMessage.Elements[0] as HAZ;
|
||||
if (this.hazd == null)
|
||||
{
|
||||
this.hazd = new HAZ();
|
||||
this.hazd.MessageCore = this.Core;
|
||||
this.hazd.MessageHeader = aMessage;
|
||||
aMessage.Elements.Add(this.hazd);
|
||||
SublistElementChanged(Message.NotificationClass.HAZD);
|
||||
}
|
||||
this.ControlMessages.Add(aMessage);
|
||||
}
|
||||
this.hazd = new HAZ();
|
||||
this.hazd.MessageCore = this.Core;
|
||||
this.hazd.MessageHeader = aMessage;
|
||||
this.hazd.IsDeparture = true;
|
||||
aMessage.Elements.Add(this.hazd);
|
||||
SublistElementChanged(Message.NotificationClass.HAZD);
|
||||
}
|
||||
}
|
||||
if (aMessage.MessageNotificationClass == Message.NotificationClass.HAZA)
|
||||
{
|
||||
this._hazaMessage = aMessage;
|
||||
this.ControlMessages.Add(aMessage);
|
||||
if (aMessage.Elements.Count > 0)
|
||||
this.haza = aMessage.Elements[0] as HAZ;
|
||||
if (this.haza == null)
|
||||
{
|
||||
this.haza = new HAZ();
|
||||
this.haza.MessageCore = this.Core;
|
||||
this.haza.MessageHeader = aMessage;
|
||||
this.haza.IsDeparture = true;
|
||||
aMessage.Elements.Add(this.haza);
|
||||
SublistElementChanged(Message.NotificationClass.HAZA);
|
||||
}
|
||||
}
|
||||
|
||||
this.textBlockMessageClass.Text = IsDeparture ? "HAZD" : "HAZA";
|
||||
}
|
||||
|
||||
#region HAZ
|
||||
|
||||
if (this._hazMessage == null)
|
||||
{
|
||||
this._hazMessage = this.Core.CreateMessage(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
this.Messages.Add(this._hazMessage);
|
||||
}
|
||||
|
||||
HAZ haz = null;
|
||||
if (this._hazMessage.Elements.Count > 0)
|
||||
haz = this._hazMessage.Elements[0] as HAZ;
|
||||
if (haz == null)
|
||||
{
|
||||
haz = new HAZ();
|
||||
haz.MessageCore = this.Core;
|
||||
haz.MessageHeader = this._hazMessage;
|
||||
_hazMessage.Elements.Add(haz);
|
||||
}
|
||||
|
||||
this.haz = haz;
|
||||
#region HAZ
|
||||
|
||||
this.comboBoxVesselClass.ItemsSource = GlobalStructures.vesselClasses;
|
||||
|
||||
this.groupBoxHAZ.DataContext = haz;
|
||||
this.groupBoxHAZ.DataContext = this.IsDeparture ? hazd : haza;
|
||||
|
||||
this.dataGridIMDGItems.Initialize();
|
||||
this.dataGridIMDGItems.ItemsSource = this.haz.IMDGPositions;
|
||||
this.dataGridIMDGItems.Initialize();
|
||||
this.dataGridIMDGItems.ItemsSource = this.IsDeparture ? this.hazd.IMDGPositions : this.haza.IMDGPositions;
|
||||
CollectionView myCollectionView = (CollectionView)CollectionViewSource.GetDefaultView(dataGridIMDGItems.Items);
|
||||
((INotifyCollectionChanged)myCollectionView).CollectionChanged += DangerousGoodsDetailControl_CollectionChanged;
|
||||
this.dataGridIMDGItems.CreateRequested += DataGridIMDGItems_CreateRequested;
|
||||
this.dataGridIMDGItems.AddingNewItem += DataGridIMDGItems_AddingNewItem;
|
||||
this.dataGridIMDGItems.EditRequested += DataGridIMDGItems_EditRequested;
|
||||
this.dataGridIMDGItems.DeleteRequested += DataGridIMDGItems_DeleteRequested;
|
||||
this.dataGridIMDGItems.DeleteRequested += DataGridIMDGItems_DeleteRequested;
|
||||
|
||||
this.dataGridIBCItems.Initialize();
|
||||
this.dataGridIBCItems.ItemsSource = this.haz.IBCPositions;
|
||||
this.dataGridIBCItems.ItemsSource = this.IsDeparture ? this.hazd.IBCPositions : this.haza.IBCPositions;
|
||||
myCollectionView = (CollectionView)CollectionViewSource.GetDefaultView(dataGridIBCItems.Items);
|
||||
((INotifyCollectionChanged)myCollectionView).CollectionChanged += DangerousGoodsDetailControl_CollectionChanged;
|
||||
this.dataGridIBCItems.CreateRequested += DataGridIBCItems_CreateRequested;
|
||||
@ -124,7 +125,7 @@ namespace ENI2.DetailViewControls
|
||||
this.dataGridIBCItems.DeleteRequested += DataGridIBCItems_DeleteRequested;
|
||||
|
||||
this.dataGridIGCItems.Initialize();
|
||||
this.dataGridIGCItems.ItemsSource = this.haz.IGCPositions;
|
||||
this.dataGridIGCItems.ItemsSource = this.IsDeparture ? this.hazd.IGCPositions : this.haza.IGCPositions;
|
||||
myCollectionView = (CollectionView)CollectionViewSource.GetDefaultView(dataGridIGCItems.Items);
|
||||
((INotifyCollectionChanged)myCollectionView).CollectionChanged += DangerousGoodsDetailControl_CollectionChanged;
|
||||
this.dataGridIGCItems.CreateRequested += DataGridIGCItems_CreateRequested;
|
||||
@ -133,7 +134,7 @@ namespace ENI2.DetailViewControls
|
||||
this.dataGridIGCItems.DeleteRequested += DataGridIGCItems_DeleteRequested;
|
||||
|
||||
this.dataGridIMSBCItems.Initialize();
|
||||
this.dataGridIMSBCItems.ItemsSource = this.haz.IMSBCPositions;
|
||||
this.dataGridIMSBCItems.ItemsSource = this.IsDeparture ? this.hazd.IMSBCPositions : this.haza.IMSBCPositions;
|
||||
myCollectionView = (CollectionView)CollectionViewSource.GetDefaultView(dataGridIMSBCItems.Items);
|
||||
((INotifyCollectionChanged)myCollectionView).CollectionChanged += DangerousGoodsDetailControl_CollectionChanged;
|
||||
this.dataGridIMSBCItems.CreateRequested += DataGridIMSBCItems_CreateRequested;
|
||||
@ -142,7 +143,7 @@ namespace ENI2.DetailViewControls
|
||||
this.dataGridIMSBCItems.DeleteRequested += DataGridIMSBCItems_DeleteRequested;
|
||||
|
||||
this.dataGridMARPOLItems.Initialize();
|
||||
this.dataGridMARPOLItems.ItemsSource = this.haz.MARPOLPositions;
|
||||
this.dataGridMARPOLItems.ItemsSource = this.IsDeparture ? this.hazd.MARPOLPositions : this.haza.MARPOLPositions;
|
||||
myCollectionView = (CollectionView)CollectionViewSource.GetDefaultView(dataGridMARPOLItems.Items);
|
||||
((INotifyCollectionChanged)myCollectionView).CollectionChanged += DangerousGoodsDetailControl_CollectionChanged;
|
||||
this.dataGridMARPOLItems.CreateRequested += DataGridMARPOLItems_CreateRequested;
|
||||
@ -154,51 +155,53 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
#endregion
|
||||
|
||||
if (!this.haz.IsDeparture)
|
||||
{
|
||||
#region Extra Menüpunkte um Positionen nach HAZD zu kopieren
|
||||
#region Extra Menüpunkte um Positionen zwischen HAZA / HAZD zu kopieren
|
||||
|
||||
this.dataGridIBCItems.ContextMenu.Items.Add(new Separator());
|
||||
MenuItem copyIBCItem = new MenuItem();
|
||||
copyIBCItem.Header = Properties.Resources.textCopyToHAZD;
|
||||
copyIBCItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
|
||||
copyIBCItem.Click += new RoutedEventHandler(this.copyIBC);
|
||||
this.dataGridIBCItems.ContextMenu.Items.Add(copyIBCItem);
|
||||
this.dataGridIBCItems.ContextMenu.Items.Add(new Separator());
|
||||
MenuItem copyIBCItem = new MenuItem();
|
||||
copyIBCItem.Header = string.Format(Properties.Resources.textCopyTo, this.IsDeparture ? "HAZA" : "HAZD");
|
||||
copyIBCItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
|
||||
copyIBCItem.Click += new RoutedEventHandler(this.copyIBC);
|
||||
this.dataGridIBCItems.ContextMenu.Items.Add(copyIBCItem);
|
||||
|
||||
this.dataGridIGCItems.ContextMenu.Items.Add(new Separator());
|
||||
MenuItem copyItemIGC = new MenuItem();
|
||||
copyItemIGC.Header = Properties.Resources.textCopyToHAZD;
|
||||
copyItemIGC.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
|
||||
copyItemIGC.Click += new RoutedEventHandler(this.copyIGC);
|
||||
this.dataGridIGCItems.ContextMenu.Items.Add(copyItemIGC);
|
||||
this.dataGridIGCItems.ContextMenu.Items.Add(new Separator());
|
||||
MenuItem copyItemIGC = new MenuItem();
|
||||
copyItemIGC.Header = string.Format(Properties.Resources.textCopyTo, this.IsDeparture ? "HAZA" : "HAZD");
|
||||
copyItemIGC.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
|
||||
copyItemIGC.Click += new RoutedEventHandler(this.copyIGC);
|
||||
this.dataGridIGCItems.ContextMenu.Items.Add(copyItemIGC);
|
||||
|
||||
this.dataGridIMDGItems.ContextMenu.Items.Add(new Separator());
|
||||
MenuItem copyItemIMDG = new MenuItem();
|
||||
copyItemIMDG.Header = Properties.Resources.textCopyToHAZD;
|
||||
copyItemIMDG.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
|
||||
copyItemIMDG.Click += new RoutedEventHandler(this.copyIMDG);
|
||||
this.dataGridIMDGItems.ContextMenu.Items.Add(copyItemIMDG);
|
||||
this.dataGridIMDGItems.ContextMenu.Items.Add(new Separator());
|
||||
MenuItem copyItemIMDG = new MenuItem();
|
||||
copyItemIMDG.Header = string.Format(Properties.Resources.textCopyTo, this.IsDeparture ? "HAZA" : "HAZD");
|
||||
copyItemIMDG.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
|
||||
copyItemIMDG.Click += new RoutedEventHandler(this.copyIMDG);
|
||||
this.dataGridIMDGItems.ContextMenu.Items.Add(copyItemIMDG);
|
||||
|
||||
this.dataGridIMSBCItems.ContextMenu.Items.Add(new Separator());
|
||||
MenuItem copyItemIMSBC = new MenuItem();
|
||||
copyItemIMSBC.Header = Properties.Resources.textCopyToHAZD;
|
||||
copyItemIMSBC.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
|
||||
copyItemIMSBC.Click += new RoutedEventHandler(this.copyIMSBC);
|
||||
this.dataGridIMSBCItems.ContextMenu.Items.Add(copyItemIMSBC);
|
||||
this.dataGridIMSBCItems.ContextMenu.Items.Add(new Separator());
|
||||
MenuItem copyItemIMSBC = new MenuItem();
|
||||
copyItemIMSBC.Header = string.Format(Properties.Resources.textCopyTo, this.IsDeparture ? "HAZA" : "HAZD");
|
||||
copyItemIMSBC.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
|
||||
copyItemIMSBC.Click += new RoutedEventHandler(this.copyIMSBC);
|
||||
this.dataGridIMSBCItems.ContextMenu.Items.Add(copyItemIMSBC);
|
||||
|
||||
this.dataGridMARPOLItems.ContextMenu.Items.Add(new Separator());
|
||||
MenuItem copyItemMARPOL = new MenuItem();
|
||||
copyItemMARPOL.Header = Properties.Resources.textCopyToHAZD;
|
||||
copyItemMARPOL.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
|
||||
copyItemMARPOL.Click += new RoutedEventHandler(this.copyMARPOL);
|
||||
this.dataGridMARPOLItems.ContextMenu.Items.Add(copyItemMARPOL);
|
||||
this.dataGridMARPOLItems.ContextMenu.Items.Add(new Separator());
|
||||
MenuItem copyItemMARPOL = new MenuItem();
|
||||
copyItemMARPOL.Header = string.Format(Properties.Resources.textCopyTo, this.IsDeparture ? "HAZA" : "HAZD");
|
||||
copyItemMARPOL.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
|
||||
copyItemMARPOL.Click += new RoutedEventHandler(this.copyMARPOL);
|
||||
this.dataGridMARPOLItems.ContextMenu.Items.Add(copyItemMARPOL);
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
this._initialized = true;
|
||||
}
|
||||
}
|
||||
|
||||
public override int SelectedTabIndex
|
||||
{
|
||||
get { return this.tabControlPositions.SelectedIndex; }
|
||||
set { this.tabControlPositions.SelectedIndex = value; }
|
||||
}
|
||||
|
||||
#region SetEnabled
|
||||
|
||||
@ -224,17 +227,18 @@ namespace ENI2.DetailViewControls
|
||||
// aus dem aktuell selektierten MARPOL Element ein neues MARPOL Element machen und nach HAZD kopieren
|
||||
if (this.dataGridMARPOLItems.SelectedItems != null)
|
||||
{
|
||||
HAZ target_haz = this.IsDeparture ? this.haza : this.hazd;
|
||||
foreach (MARPOL_Annex_I_Position selectedMARPOL in this.dataGridMARPOLItems.SelectedItems)
|
||||
{
|
||||
MARPOL_Annex_I_Position copyMARPOL = new MARPOL_Annex_I_Position();
|
||||
copyMARPOL.MessageHeader = this.hazd.MessageHeader;
|
||||
copyMARPOL.HAZ = this.hazd;
|
||||
copyMARPOL.MessageHeader = target_haz.MessageHeader;
|
||||
copyMARPOL.HAZ = target_haz;
|
||||
copyMARPOL.CopyFromMARPOL(selectedMARPOL);
|
||||
copyMARPOL.Identifier = DatabaseEntity.GetNewIdentifier(this.hazd.MARPOLPositions, "MARPOL-");
|
||||
this.hazd.MARPOLPositions.Add(copyMARPOL);
|
||||
this.SublistElementChanged(Message.NotificationClass.HAZD);
|
||||
this.OnControlCacheReset(Properties.Resources.textDGDeparture);
|
||||
this.SetHAZGlobalFlags(this.hazd);
|
||||
copyMARPOL.Identifier = DatabaseEntity.GetNewIdentifier(target_haz.MARPOLPositions, "MARPOL-");
|
||||
target_haz.MARPOLPositions.Add(copyMARPOL);
|
||||
target_haz.NoDPGOnBoardOnArrival = false;
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZA : Message.NotificationClass.HAZD);
|
||||
this.OnControlCacheReset(this.IsDeparture ? Properties.Resources.textDGArrival : Properties.Resources.textDGDeparture);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -244,17 +248,18 @@ namespace ENI2.DetailViewControls
|
||||
// aus dem aktuell selektierten IMBSC Element ein neues IMBSC Element machen und nach HAZD kopieren
|
||||
if (this.dataGridIMSBCItems.SelectedItems != null)
|
||||
{
|
||||
HAZ target_haz = this.IsDeparture ? this.haza : this.hazd;
|
||||
foreach (IMSBCPosition selectedIMSBC in this.dataGridIMSBCItems.SelectedItems)
|
||||
{
|
||||
IMSBCPosition copyIMSBC = new IMSBCPosition();
|
||||
copyIMSBC.MessageHeader = this.hazd.MessageHeader;
|
||||
copyIMSBC.HAZ = this.hazd;
|
||||
copyIMSBC.MessageHeader = target_haz.MessageHeader;
|
||||
copyIMSBC.HAZ = target_haz;
|
||||
copyIMSBC.CopyFromIMSBC(selectedIMSBC);
|
||||
copyIMSBC.Identifier = DatabaseEntity.GetNewIdentifier(this.hazd.IMSBCPositions, "IMSBC-");
|
||||
this.hazd.IMSBCPositions.Add(copyIMSBC);
|
||||
this.SublistElementChanged(Message.NotificationClass.HAZD);
|
||||
this.OnControlCacheReset(Properties.Resources.textDGDeparture);
|
||||
this.SetHAZGlobalFlags(this.hazd);
|
||||
copyIMSBC.Identifier = DatabaseEntity.GetNewIdentifier(target_haz.IMSBCPositions, "IMSBC-");
|
||||
target_haz.IMSBCPositions.Add(copyIMSBC);
|
||||
target_haz.NoDPGOnBoardOnArrival = false;
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZA : Message.NotificationClass.HAZD);
|
||||
this.OnControlCacheReset(this.IsDeparture ? Properties.Resources.textDGArrival : Properties.Resources.textDGDeparture);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -264,17 +269,18 @@ namespace ENI2.DetailViewControls
|
||||
// aus dem aktuell selektierten IMDG Element ein neues IMDG Element machen und nach HAZD kopieren
|
||||
if (this.dataGridIMDGItems.SelectedItems != null)
|
||||
{
|
||||
HAZ target_haz = this.IsDeparture ? this.haza : this.hazd;
|
||||
foreach (IMDGPosition selectedIMDG in this.dataGridIMDGItems.SelectedItems)
|
||||
{
|
||||
IMDGPosition copyIMDG = new IMDGPosition();
|
||||
copyIMDG.MessageHeader = this.hazd.MessageHeader;
|
||||
copyIMDG.HAZ = this.hazd;
|
||||
copyIMDG.MessageHeader = target_haz.MessageHeader;
|
||||
copyIMDG.HAZ = target_haz;
|
||||
copyIMDG.CopyFromIMDG(selectedIMDG);
|
||||
copyIMDG.Identifier = DatabaseEntity.GetNewIdentifier(this.hazd.IMDGPositions, "IMDG-");
|
||||
this.hazd.IMDGPositions.Add(copyIMDG);
|
||||
this.SublistElementChanged(Message.NotificationClass.HAZD);
|
||||
this.OnControlCacheReset(Properties.Resources.textDGDeparture);
|
||||
this.SetHAZGlobalFlags(this.hazd);
|
||||
copyIMDG.Identifier = DatabaseEntity.GetNewIdentifier(target_haz.IMDGPositions, "IMDG-");
|
||||
target_haz.IMDGPositions.Add(copyIMDG);
|
||||
target_haz.NoDPGOnBoardOnArrival = false;
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZA : Message.NotificationClass.HAZD);
|
||||
this.OnControlCacheReset(this.IsDeparture ? Properties.Resources.textDGArrival : Properties.Resources.textDGDeparture);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -284,17 +290,18 @@ namespace ENI2.DetailViewControls
|
||||
// aus dem aktuell selektierten IGC Element ein neues IGC Element machen und nach HAZD kopieren
|
||||
if (this.dataGridIGCItems.SelectedItems != null)
|
||||
{
|
||||
HAZ target_haz = this.IsDeparture ? this.haza : this.hazd;
|
||||
foreach (IGCPosition selectedIGC in this.dataGridIGCItems.SelectedItems)
|
||||
{
|
||||
IGCPosition copyIGC = new IGCPosition();
|
||||
copyIGC.MessageHeader = this.hazd.MessageHeader;
|
||||
copyIGC.HAZ = this.hazd;
|
||||
copyIGC.MessageHeader = target_haz.MessageHeader;
|
||||
copyIGC.HAZ = target_haz;
|
||||
copyIGC.CopyFromIGC(selectedIGC);
|
||||
copyIGC.Identifier = DatabaseEntity.GetNewIdentifier(this.hazd.IGCPositions, "IGC-");
|
||||
this.hazd.IGCPositions.Add(copyIGC);
|
||||
this.SublistElementChanged(Message.NotificationClass.HAZD);
|
||||
this.OnControlCacheReset(Properties.Resources.textDGDeparture);
|
||||
this.SetHAZGlobalFlags(this.hazd);
|
||||
copyIGC.Identifier = DatabaseEntity.GetNewIdentifier(target_haz.IGCPositions, "IGC-");
|
||||
target_haz.IGCPositions.Add(copyIGC);
|
||||
target_haz.NoDPGOnBoardOnArrival = false;
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZA : Message.NotificationClass.HAZD);
|
||||
this.OnControlCacheReset(this.IsDeparture ? Properties.Resources.textDGArrival : Properties.Resources.textDGDeparture);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -304,59 +311,37 @@ namespace ENI2.DetailViewControls
|
||||
// aus dem aktuell selektierten IBC Element ein neues IBC Element machen und nach HAZD kopieren
|
||||
if (this.dataGridIBCItems.SelectedItems != null)
|
||||
{
|
||||
HAZ target_haz = this.IsDeparture ? this.haza : this.hazd;
|
||||
foreach (IBCPosition selectedIBC in this.dataGridIBCItems.SelectedItems)
|
||||
{
|
||||
if (selectedIBC != null)
|
||||
{
|
||||
IBCPosition copyIBC = new IBCPosition();
|
||||
copyIBC.MessageHeader = this.hazd.MessageHeader;
|
||||
copyIBC.HAZ = this.hazd;
|
||||
copyIBC.MessageHeader = target_haz.MessageHeader;
|
||||
copyIBC.HAZ = target_haz;
|
||||
copyIBC.CopyFromIBC(selectedIBC);
|
||||
copyIBC.Identifier = DatabaseEntity.GetNewIdentifier(this.hazd.IBCPositions, "IBC-");
|
||||
this.hazd.IBCPositions.Add(copyIBC);
|
||||
this.SublistElementChanged(Message.NotificationClass.HAZD);
|
||||
this.OnControlCacheReset(Properties.Resources.textDGDeparture);
|
||||
this.SetHAZGlobalFlags(this.hazd);
|
||||
copyIBC.Identifier = DatabaseEntity.GetNewIdentifier(target_haz.IBCPositions, "IBC-");
|
||||
target_haz.IBCPositions.Add(copyIBC);
|
||||
target_haz.NoDPGOnBoardOnArrival = false;
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZA : Message.NotificationClass.HAZD);
|
||||
this.OnControlCacheReset(this.IsDeparture ? Properties.Resources.textDGArrival : Properties.Resources.textDGDeparture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Beim Hinzufügen der allerersten Gefahrgutposition sollen die Flags vorbelegt werden
|
||||
/// </summary>
|
||||
void SetHAZGlobalFlags(HAZ theHAZ)
|
||||
{
|
||||
int totalCount = theHAZ.MARPOLPositions.Count + theHAZ.IMDGPositions.Count + theHAZ.IGCPositions.Count + theHAZ.IBCPositions.Count + theHAZ.IMSBCPositions.Count;
|
||||
if(totalCount == 1)
|
||||
{
|
||||
if (theHAZ == this.haz)
|
||||
{
|
||||
if (!(this.checkBoxDangerousGoodsOnBoard.IsChecked ?? false)) this.checkBoxDangerousGoodsOnBoard.IsChecked = true;
|
||||
// if (!(this.checkBoxDGManifestOnBoard.IsChecked ?? false)) this.checkBoxDGManifestOnBoard.IsChecked = true;
|
||||
if (this.checkBoxMoUBaltic.IsChecked ?? true) this.checkBoxMoUBaltic.IsChecked = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
theHAZ.NoDPGOnBoardOnArrival = false;
|
||||
// theHAZ.DPGManifestOnBoardOnArrival = true;
|
||||
theHAZ.MOUBaltic = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region MARPOL datagrid handlers
|
||||
|
||||
private void DataGridMARPOLItems_DeleteRequested(DatabaseEntity obj)
|
||||
{
|
||||
MARPOL_Annex_I_Position marpol = obj as MARPOL_Annex_I_Position;
|
||||
if (marpol != null)
|
||||
HAZ haz = this.IsDeparture ? hazd : haza;
|
||||
if (obj is MARPOL_Annex_I_Position marpol)
|
||||
{
|
||||
// are you sure dialog is in base class
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(marpol);
|
||||
this.haz.MARPOLPositions.Remove(marpol);
|
||||
haz.MARPOLPositions.Remove(marpol);
|
||||
DatabaseEntity.ResetIdentifiers(new List<DatabaseEntity>(haz.MARPOLPositions));
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
this.dataGridMARPOLItems.Items.Refresh();
|
||||
@ -367,6 +352,7 @@ namespace ENI2.DetailViewControls
|
||||
{
|
||||
EditMarpolDialog eld = new EditMarpolDialog();
|
||||
eld.MARPOL = obj as MARPOL_Annex_I_Position;
|
||||
HAZ haz = this.IsDeparture ? hazd : haza;
|
||||
|
||||
eld.AddClicked += () =>
|
||||
{
|
||||
@ -376,9 +362,9 @@ namespace ENI2.DetailViewControls
|
||||
this.dataGridMARPOLItems.Items.Refresh();
|
||||
eld.MARPOL = new MARPOL_Annex_I_Position();
|
||||
eld.Identifier = DatabaseEntity.GetNewIdentifier(haz.MARPOLPositions, "MARPOL-");
|
||||
eld.MARPOL.HAZ = this.haz;
|
||||
eld.MARPOL.HAZ = haz;
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
this.SetHAZGlobalFlags(this.haz);
|
||||
this.SetHAZGlobalFlags();
|
||||
};
|
||||
|
||||
if (eld.ShowDialog() ?? false)
|
||||
@ -386,7 +372,7 @@ namespace ENI2.DetailViewControls
|
||||
if (!haz.MARPOLPositions.Contains(eld.MARPOL))
|
||||
haz.MARPOLPositions.Add(eld.MARPOL);
|
||||
this.dataGridMARPOLItems.Items.Refresh();
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
}
|
||||
|
||||
}
|
||||
@ -398,10 +384,11 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private void DataGridMARPOLItems_CreateRequested()
|
||||
{
|
||||
HAZ haz = this.IsDeparture ? hazd : haza;
|
||||
EditMarpolDialog ebd = new EditMarpolDialog();
|
||||
ebd.MARPOL = new MARPOL_Annex_I_Position();
|
||||
ebd.MARPOL.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.MARPOLPositions, "MARPOL-");
|
||||
ebd.MARPOL.HAZ = this.haz;
|
||||
ebd.MARPOL.Identifier = DatabaseEntity.GetNewIdentifier(haz.MARPOLPositions, "MARPOL-");
|
||||
ebd.MARPOL.HAZ = haz;
|
||||
|
||||
ebd.AddClicked += () =>
|
||||
{
|
||||
@ -410,10 +397,10 @@ namespace ENI2.DetailViewControls
|
||||
haz.MARPOLPositions.Add(ebd.MARPOL);
|
||||
this.dataGridMARPOLItems.Items.Refresh();
|
||||
ebd.MARPOL = new MARPOL_Annex_I_Position();
|
||||
ebd.MARPOL.HAZ = this.haz;
|
||||
ebd.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.MARPOLPositions, "MARPOL-");
|
||||
ebd.MARPOL.HAZ = haz;
|
||||
ebd.Identifier = DatabaseEntity.GetNewIdentifier(haz.MARPOLPositions, "MARPOL-");
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
this.SetHAZGlobalFlags(this.haz);
|
||||
this.SetHAZGlobalFlags();
|
||||
};
|
||||
|
||||
if (ebd.ShowDialog() ?? false)
|
||||
@ -422,7 +409,7 @@ namespace ENI2.DetailViewControls
|
||||
haz.MARPOLPositions.Add(ebd.MARPOL);
|
||||
this.dataGridMARPOLItems.Items.Refresh();
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
this.SetHAZGlobalFlags(this.haz);
|
||||
this.SetHAZGlobalFlags();
|
||||
}
|
||||
}
|
||||
|
||||
@ -432,12 +419,12 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private void DataGridIMSBCItems_DeleteRequested(DatabaseEntity obj)
|
||||
{
|
||||
IMSBCPosition imsbc = obj as IMSBCPosition;
|
||||
if (imsbc != null)
|
||||
HAZ haz = this.IsDeparture ? hazd : haza;
|
||||
if (obj is IMSBCPosition imsbc)
|
||||
{
|
||||
// are you sure dialog is in base class
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(imsbc);
|
||||
this.haz.IMSBCPositions.Remove(imsbc);
|
||||
haz.IMSBCPositions.Remove(imsbc);
|
||||
DatabaseEntity.ResetIdentifiers(new List<DatabaseEntity>(haz.IMSBCPositions));
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
this.dataGridIMSBCItems.Items.Refresh();
|
||||
@ -446,6 +433,7 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private void DataGridIMSBCItems_EditRequested(DatabaseEntity obj)
|
||||
{
|
||||
HAZ haz = this.IsDeparture ? hazd : haza;
|
||||
EditIMSBCDialog eld = new EditIMSBCDialog();
|
||||
eld.IMSBC = obj as IMSBCPosition;
|
||||
|
||||
@ -456,10 +444,10 @@ namespace ENI2.DetailViewControls
|
||||
haz.IMSBCPositions.Add(eld.IMSBC);
|
||||
this.dataGridIMSBCItems.Items.Refresh();
|
||||
eld.IMSBC = new IMSBCPosition();
|
||||
eld.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.IMSBCPositions, "IMSBC-");
|
||||
eld.IMSBC.HAZ = this.haz;
|
||||
eld.Identifier = DatabaseEntity.GetNewIdentifier(haz.IMSBCPositions, "IMSBC-");
|
||||
eld.IMSBC.HAZ = haz;
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
this.SetHAZGlobalFlags(this.haz);
|
||||
this.SetHAZGlobalFlags();
|
||||
};
|
||||
|
||||
if (eld.ShowDialog() ?? false)
|
||||
@ -478,22 +466,23 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private void DataGridIMSBCItems_CreateRequested()
|
||||
{
|
||||
HAZ haz = this.IsDeparture ? hazd : haza;
|
||||
EditIMSBCDialog ebd = new EditIMSBCDialog();
|
||||
ebd.IMSBC = new IMSBCPosition();
|
||||
ebd.IMSBC.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.IMSBCPositions, "IMSBC-");
|
||||
ebd.IMSBC.HAZ = this.haz;
|
||||
ebd.IMSBC.Identifier = DatabaseEntity.GetNewIdentifier(haz.IMSBCPositions, "IMSBC-");
|
||||
ebd.IMSBC.HAZ = haz;
|
||||
|
||||
ebd.AddClicked += () =>
|
||||
{
|
||||
ebd.CopyValuesToEntity();
|
||||
if (!haz.IMSBCPositions.Contains(ebd.IMSBC))
|
||||
this.haz.IMSBCPositions.Add(ebd.IMSBC);
|
||||
haz.IMSBCPositions.Add(ebd.IMSBC);
|
||||
this.dataGridIMSBCItems.Items.Refresh();
|
||||
ebd.IMSBC = new IMSBCPosition();
|
||||
ebd.IMSBC.HAZ = this.haz;
|
||||
ebd.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.IMSBCPositions, "IMSBC-");
|
||||
ebd.IMSBC.HAZ = haz;
|
||||
ebd.Identifier = DatabaseEntity.GetNewIdentifier(haz.IMSBCPositions, "IMSBC-");
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
this.SetHAZGlobalFlags(this.haz);
|
||||
this.SetHAZGlobalFlags();
|
||||
};
|
||||
|
||||
if (ebd.ShowDialog() ?? false)
|
||||
@ -502,7 +491,7 @@ namespace ENI2.DetailViewControls
|
||||
haz.IMSBCPositions.Add(ebd.IMSBC);
|
||||
this.dataGridIMSBCItems.Items.Refresh();
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
this.SetHAZGlobalFlags(this.haz);
|
||||
this.SetHAZGlobalFlags();
|
||||
}
|
||||
}
|
||||
|
||||
@ -512,12 +501,12 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private void DataGridIGCItems_DeleteRequested(DatabaseEntity obj)
|
||||
{
|
||||
IGCPosition igc = obj as IGCPosition;
|
||||
if (igc != null)
|
||||
HAZ haz = this.IsDeparture ? hazd : haza;
|
||||
if (obj is IGCPosition igc)
|
||||
{
|
||||
// are you sure dialog is in base class
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(igc);
|
||||
this.haz.IGCPositions.Remove(igc);
|
||||
haz.IGCPositions.Remove(igc);
|
||||
DatabaseEntity.ResetIdentifiers(new List<DatabaseEntity>(haz.IGCPositions));
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
this.dataGridIGCItems.Items.Refresh();
|
||||
@ -526,6 +515,7 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private void DataGridIGCItems_EditRequested(DatabaseEntity obj)
|
||||
{
|
||||
HAZ haz = this.IsDeparture ? hazd : haza;
|
||||
EditIGCDialog eld = new EditIGCDialog();
|
||||
eld.IGC = obj as IGCPosition;
|
||||
|
||||
@ -536,10 +526,10 @@ namespace ENI2.DetailViewControls
|
||||
haz.IGCPositions.Add(eld.IGC);
|
||||
this.dataGridIGCItems.Items.Refresh();
|
||||
eld.IGC = new IGCPosition();
|
||||
eld.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.IGCPositions, "IGC-");
|
||||
eld.IGC.HAZ = this.haz;
|
||||
eld.Identifier = DatabaseEntity.GetNewIdentifier(haz.IGCPositions, "IGC-");
|
||||
eld.IGC.HAZ = haz;
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
this.SetHAZGlobalFlags(this.haz);
|
||||
this.SetHAZGlobalFlags();
|
||||
};
|
||||
|
||||
if (eld.ShowDialog() ?? false)
|
||||
@ -558,30 +548,31 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private void DataGridIGCItems_CreateRequested()
|
||||
{
|
||||
HAZ haz = this.IsDeparture ? hazd : haza;
|
||||
EditIGCDialog ebd = new EditIGCDialog();
|
||||
ebd.IGC = new IGCPosition();
|
||||
ebd.IGC.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.IGCPositions, "IGC-");
|
||||
ebd.IGC.HAZ = this.haz;
|
||||
ebd.IGC = new IGCPosition();
|
||||
ebd.IGC.Identifier = DatabaseEntity.GetNewIdentifier(haz.IGCPositions, "IGC-");
|
||||
ebd.IGC.HAZ = haz;
|
||||
|
||||
ebd.AddClicked += () =>
|
||||
{
|
||||
ebd.CopyValuesToEntity();
|
||||
if(!this.haz.IGCPositions.Contains(ebd.IGC))
|
||||
this.haz.IGCPositions.Add(ebd.IGC);
|
||||
if(!haz.IGCPositions.Contains(ebd.IGC))
|
||||
haz.IGCPositions.Add(ebd.IGC);
|
||||
this.dataGridIGCItems.Items.Refresh();
|
||||
ebd.IGC = new IGCPosition();
|
||||
ebd.IGC.HAZ = this.haz;
|
||||
ebd.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.IGCPositions, "IGC-");
|
||||
ebd.IGC.HAZ = haz;
|
||||
ebd.Identifier = DatabaseEntity.GetNewIdentifier(haz.IGCPositions, "IGC-");
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
};
|
||||
|
||||
if (ebd.ShowDialog() ?? false)
|
||||
{
|
||||
if(!this.haz.IGCPositions.Contains(ebd.IGC))
|
||||
if(!haz.IGCPositions.Contains(ebd.IGC))
|
||||
haz.IGCPositions.Add(ebd.IGC);
|
||||
this.dataGridIGCItems.Items.Refresh();
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
this.SetHAZGlobalFlags(this.haz);
|
||||
this.SetHAZGlobalFlags();
|
||||
}
|
||||
}
|
||||
|
||||
@ -591,12 +582,12 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private void DataGridIBCItems_DeleteRequested(DatabaseEntity obj)
|
||||
{
|
||||
IBCPosition ibc = obj as IBCPosition;
|
||||
if (ibc != null)
|
||||
HAZ haz = this.IsDeparture ? hazd : haza;
|
||||
if (obj is IBCPosition ibc)
|
||||
{
|
||||
// are you sure dialog is in base class
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(ibc);
|
||||
this.haz.IBCPositions.Remove(ibc);
|
||||
haz.IBCPositions.Remove(ibc);
|
||||
DatabaseEntity.ResetIdentifiers(new List<DatabaseEntity>(haz.IBCPositions));
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
this.dataGridIBCItems.Items.Refresh();
|
||||
@ -605,6 +596,7 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private void DataGridIBCItems_EditRequested(DatabaseEntity obj)
|
||||
{
|
||||
HAZ haz = this.IsDeparture ? hazd : haza;
|
||||
EditIBCDialog eld = new EditIBCDialog();
|
||||
eld.IBC = obj as IBCPosition;
|
||||
|
||||
@ -615,10 +607,10 @@ namespace ENI2.DetailViewControls
|
||||
haz.IBCPositions.Add(eld.IBC);
|
||||
this.dataGridIBCItems.Items.Refresh();
|
||||
eld.IBC = new IBCPosition();
|
||||
eld.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.IBCPositions, "IBC-");
|
||||
eld.IBC.HAZ = this.haz;
|
||||
eld.Identifier = DatabaseEntity.GetNewIdentifier(haz.IBCPositions, "IBC-");
|
||||
eld.IBC.HAZ = haz;
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
this.SetHAZGlobalFlags(this.haz);
|
||||
this.SetHAZGlobalFlags();
|
||||
};
|
||||
|
||||
if (eld.ShowDialog() ?? false)
|
||||
@ -637,30 +629,31 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private void DataGridIBCItems_CreateRequested()
|
||||
{
|
||||
HAZ haz = this.IsDeparture ? hazd : haza;
|
||||
EditIBCDialog ebd = new EditIBCDialog();
|
||||
ebd.IBC = new IBCPosition();
|
||||
ebd.IBC.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.IBCPositions, "IBC-");
|
||||
ebd.IBC.HAZ = this.haz;
|
||||
ebd.IBC.Identifier = DatabaseEntity.GetNewIdentifier(haz.IBCPositions, "IBC-");
|
||||
ebd.IBC.HAZ = haz;
|
||||
|
||||
ebd.AddClicked += () =>
|
||||
{
|
||||
ebd.CopyValuesToEntity();
|
||||
if(!this.haz.IBCPositions.Contains(ebd.IBC))
|
||||
this.haz.IBCPositions.Add(ebd.IBC);
|
||||
if(!haz.IBCPositions.Contains(ebd.IBC))
|
||||
haz.IBCPositions.Add(ebd.IBC);
|
||||
this.dataGridIBCItems.Items.Refresh();
|
||||
ebd.IBC = new IBCPosition();
|
||||
ebd.IBC.HAZ = this.haz;
|
||||
ebd.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.IBCPositions, "IBC-");
|
||||
ebd.IBC.HAZ = haz;
|
||||
ebd.Identifier = DatabaseEntity.GetNewIdentifier(haz.IBCPositions, "IBC-");
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
};
|
||||
|
||||
if (ebd.ShowDialog() ?? false)
|
||||
{
|
||||
if(!this.haz.IBCPositions.Contains(ebd.IBC))
|
||||
if(!haz.IBCPositions.Contains(ebd.IBC))
|
||||
haz.IBCPositions.Add(ebd.IBC);
|
||||
this.dataGridIBCItems.Items.Refresh();
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
this.SetHAZGlobalFlags(this.haz);
|
||||
this.SetHAZGlobalFlags();
|
||||
}
|
||||
}
|
||||
|
||||
@ -670,12 +663,12 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private void DataGridIMDGItems_DeleteRequested(DatabaseEntity obj)
|
||||
{
|
||||
IMDGPosition imdg = obj as IMDGPosition;
|
||||
if (imdg != null)
|
||||
HAZ haz = this.IsDeparture ? hazd : haza;
|
||||
if (obj is IMDGPosition imdg)
|
||||
{
|
||||
// are you sure dialog is in base class
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(imdg);
|
||||
this.haz.IMDGPositions.Remove(imdg);
|
||||
haz.IMDGPositions.Remove(imdg);
|
||||
DatabaseEntity.ResetIdentifiers(new List<DatabaseEntity>(haz.IMDGPositions));
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
this.dataGridIMDGItems.Items.Refresh();
|
||||
@ -684,6 +677,7 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private void DataGridIMDGItems_EditRequested(DatabaseEntity obj)
|
||||
{
|
||||
HAZ haz = this.IsDeparture ? hazd : haza;
|
||||
EditIMDGDialog eld = new EditIMDGDialog();
|
||||
eld.IMDG = obj as IMDGPosition;
|
||||
|
||||
@ -694,8 +688,8 @@ namespace ENI2.DetailViewControls
|
||||
haz.IMDGPositions.Add(eld.IMDG);
|
||||
this.dataGridIMDGItems.Items.Refresh();
|
||||
eld.IMDG = new IMDGPosition();
|
||||
eld.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.IMDGPositions, "IMDG-");
|
||||
eld.IMDG.HAZ = this.haz;
|
||||
eld.Identifier = DatabaseEntity.GetNewIdentifier(haz.IMDGPositions, "IMDG-");
|
||||
eld.IMDG.HAZ = haz;
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
};
|
||||
|
||||
@ -705,7 +699,7 @@ namespace ENI2.DetailViewControls
|
||||
haz.IMDGPositions.Add(eld.IMDG);
|
||||
this.dataGridIMDGItems.Items.Refresh();
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
this.SetHAZGlobalFlags(this.haz);
|
||||
this.SetHAZGlobalFlags();
|
||||
}
|
||||
}
|
||||
|
||||
@ -715,21 +709,22 @@ namespace ENI2.DetailViewControls
|
||||
}
|
||||
|
||||
private void DataGridIMDGItems_CreateRequested()
|
||||
{
|
||||
{
|
||||
HAZ haz = this.IsDeparture ? hazd : haza;
|
||||
EditIMDGDialog ebd = new EditIMDGDialog();
|
||||
ebd.IMDG = new IMDGPosition();
|
||||
ebd.IMDG.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.IMDGPositions, "IMDG-");
|
||||
ebd.IMDG.HAZ = this.haz;
|
||||
ebd.IMDG.Identifier = DatabaseEntity.GetNewIdentifier(haz.IMDGPositions, "IMDG-");
|
||||
ebd.IMDG.HAZ = haz;
|
||||
|
||||
ebd.AddClicked += () =>
|
||||
{
|
||||
ebd.CopyValuesToEntity();
|
||||
if(!this.haz.IMDGPositions.Contains(ebd.IMDG))
|
||||
this.haz.IMDGPositions.Add(ebd.IMDG);
|
||||
if(!haz.IMDGPositions.Contains(ebd.IMDG))
|
||||
haz.IMDGPositions.Add(ebd.IMDG);
|
||||
this.dataGridIMDGItems.Items.Refresh();
|
||||
ebd.IMDG = new IMDGPosition();
|
||||
ebd.IMDG.HAZ = this.haz;
|
||||
ebd.Identifier = DatabaseEntity.GetNewIdentifier(this.haz.IMDGPositions, "IMDG-");
|
||||
ebd.IMDG.HAZ = haz;
|
||||
ebd.Identifier = DatabaseEntity.GetNewIdentifier(haz.IMDGPositions, "IMDG-");
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
};
|
||||
|
||||
@ -739,7 +734,7 @@ namespace ENI2.DetailViewControls
|
||||
haz.IMDGPositions.Add(ebd.IMDG);
|
||||
this.dataGridIMDGItems.Items.Refresh();
|
||||
this.SublistElementChanged(this.IsDeparture ? Message.NotificationClass.HAZD : Message.NotificationClass.HAZA);
|
||||
this.SetHAZGlobalFlags(this.haz);
|
||||
this.SetHAZGlobalFlags();
|
||||
}
|
||||
}
|
||||
|
||||
@ -749,19 +744,23 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
public override void HighlightErrorMessageContainer()
|
||||
{
|
||||
if (this._hazMessage.HasErrors)
|
||||
Message hazMessage = this.IsDeparture ? _hazdMessage : _hazaMessage;
|
||||
if (hazMessage.HasErrors)
|
||||
{
|
||||
HighlightService.HighlightControl(this.groupBoxHAZ, HighlightService.HighlightStyle.ERROR, this._hazMessage);
|
||||
HighlightService.HighlightControl(this.groupBoxHAZ, HighlightService.HighlightStyle.ERROR, hazMessage);
|
||||
}
|
||||
}
|
||||
|
||||
public override void HighlightViolationMessageContainer()
|
||||
{
|
||||
if (this._hazMessage.HasViolations)
|
||||
HighlightService.HighlightControl(this.groupBoxHAZ, HighlightService.HighlightStyle.VIOLATION, this._hazMessage);
|
||||
Message hazMessage = this.IsDeparture ? _hazdMessage : _hazaMessage;
|
||||
if (hazMessage.HasViolations)
|
||||
HighlightService.HighlightControl(this.groupBoxHAZ, HighlightService.HighlightStyle.VIOLATION, hazMessage);
|
||||
}
|
||||
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
#region handle tab header info
|
||||
|
||||
private void DangerousGoodsDetailControl_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
|
||||
{
|
||||
@ -770,31 +769,144 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private void RefreshTabHeaders()
|
||||
{
|
||||
if (this.haz.IMDGPositions.Count > 0)
|
||||
this.tabIMDGItems.Header = string.Format("{0} ({1})", Properties.Resources.textIMDGItems, this.haz.IMDGPositions.Count);
|
||||
HAZ haz = this.IsDeparture ? hazd : haza;
|
||||
if (haz.IMDGPositions.Count > 0)
|
||||
this.tabIMDGItems.Header = string.Format("{0} ({1})", Properties.Resources.textIMDGItems, haz.IMDGPositions.Count);
|
||||
else
|
||||
this.tabIMDGItems.Header = Properties.Resources.textIMDGItems;
|
||||
|
||||
if (this.haz.IBCPositions.Count > 0)
|
||||
this.tabIBCItems.Header = string.Format("{0} ({1})", Properties.Resources.textIBCItems, this.haz.IBCPositions.Count);
|
||||
if (haz.IBCPositions.Count > 0)
|
||||
this.tabIBCItems.Header = string.Format("{0} ({1})", Properties.Resources.textIBCItems, haz.IBCPositions.Count);
|
||||
else
|
||||
this.tabIBCItems.Header = Properties.Resources.textIBCItems;
|
||||
|
||||
if (this.haz.IGCPositions.Count > 0)
|
||||
this.tabIGCItems.Header = string.Format("{0} ({1})", Properties.Resources.textIGCItems, this.haz.IGCPositions.Count);
|
||||
if (haz.IGCPositions.Count > 0)
|
||||
this.tabIGCItems.Header = string.Format("{0} ({1})", Properties.Resources.textIGCItems, haz.IGCPositions.Count);
|
||||
else
|
||||
this.tabIGCItems.Header = Properties.Resources.textIGCItems;
|
||||
|
||||
if (this.haz.IMSBCPositions.Count > 0)
|
||||
this.tabIMSBCItems.Header = string.Format("{0} ({1})", Properties.Resources.textIMSBCItems, this.haz.IMSBCPositions.Count);
|
||||
if (haz.IMSBCPositions.Count > 0)
|
||||
this.tabIMSBCItems.Header = string.Format("{0} ({1})", Properties.Resources.textIMSBCItems, haz.IMSBCPositions.Count);
|
||||
else
|
||||
this.tabIMSBCItems.Header = Properties.Resources.textIMSBCItems;
|
||||
|
||||
if (this.haz.MARPOLPositions.Count > 0)
|
||||
this.tabMarpolItems.Header = string.Format("{0} ({1})", Properties.Resources.textMARPOLItems, this.haz.MARPOLPositions.Count);
|
||||
if (haz.MARPOLPositions.Count > 0)
|
||||
this.tabMarpolItems.Header = string.Format("{0} ({1})", Properties.Resources.textMARPOLItems, haz.MARPOLPositions.Count);
|
||||
else
|
||||
this.tabMarpolItems.Header = Properties.Resources.textMARPOLItems;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region new sublist item button handler
|
||||
|
||||
private void buttonNewItem_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (newDGDialog != null)
|
||||
{
|
||||
newDGDialog.Activate();
|
||||
}
|
||||
else
|
||||
{
|
||||
newDGDialog = new NewDGItemDialog();
|
||||
newDGDialog.Closed += NewDGDialog_Closed;
|
||||
newDGDialog.OKClicked += NewDGDialog_OKClicked;
|
||||
newDGDialog.AddClicked += NewDGDialog_OKClicked;
|
||||
newDGDialog.Show();
|
||||
}
|
||||
}
|
||||
|
||||
private void NewDGDialog_Closed(object sender, EventArgs e)
|
||||
{
|
||||
newDGDialog = null;
|
||||
}
|
||||
|
||||
private void NewDGDialog_OKClicked()
|
||||
{
|
||||
HAZ haz = this.IsDeparture ? hazd : haza;
|
||||
|
||||
HAZPosTemplate selectedTemplate = this.newDGDialog.SelectedTemplate;
|
||||
|
||||
if (selectedTemplate != null)
|
||||
{
|
||||
// create new DG position based on template
|
||||
switch (selectedTemplate.TemplateType)
|
||||
{
|
||||
case HAZPosTemplate.SublistType.IBC:
|
||||
this.tabControlPositions.SelectedIndex = 1;
|
||||
IBCPosition ibcPos = new IBCPosition();
|
||||
ibcPos.FlashpointInformation = selectedTemplate.Flashpoint;
|
||||
ibcPos.Flashpoint_CEL = selectedTemplate.FP_IBC;
|
||||
ibcPos.SpecRef15_19 = selectedTemplate.SpecRef15_19;
|
||||
ibcPos.Hazards = selectedTemplate.Hazard;
|
||||
ibcPos.Identifier = DatabaseEntity.GetNewIdentifier(haz.IBCPositions, "IBC-");
|
||||
ibcPos.PollutionCategory = selectedTemplate.PollutionCategory;
|
||||
ibcPos.HAZ = haz;
|
||||
haz.IBCPositions.Add(ibcPos);
|
||||
this.dataGridIBCItems.Items.Refresh();
|
||||
this.DataGridIBCItems_EditRequested(ibcPos);
|
||||
break;
|
||||
case HAZPosTemplate.SublistType.IGC:
|
||||
this.tabControlPositions.SelectedIndex = 2;
|
||||
IGCPosition igcPos = new IGCPosition();
|
||||
igcPos.Identifier = DatabaseEntity.GetNewIdentifier(haz.IGCPositions, "IGC-");
|
||||
igcPos.UNNumber = selectedTemplate.UNNr;
|
||||
igcPos.IMOClass = selectedTemplate.IMOClass;
|
||||
igcPos.HAZ = haz;
|
||||
haz.IGCPositions.Add(igcPos);
|
||||
this.dataGridIGCItems.Items.Refresh();
|
||||
this.DataGridIGCItems_EditRequested(igcPos);
|
||||
break;
|
||||
case HAZPosTemplate.SublistType.IMSBC:
|
||||
this.tabControlPositions.SelectedIndex = 3;
|
||||
IMSBCPosition imsbcPos = new IMSBCPosition();
|
||||
imsbcPos.Identifier = DatabaseEntity.GetNewIdentifier(haz.IMSBCPositions, "IMSBC-");
|
||||
imsbcPos.IMOHazardClass = selectedTemplate.IMSBC_HAZ;
|
||||
imsbcPos.UNNumber = selectedTemplate.UNNr;
|
||||
imsbcPos.IMOClass = selectedTemplate.IMOClass;
|
||||
imsbcPos.MHB = selectedTemplate.MHB ?? false;
|
||||
imsbcPos.HAZ = haz;
|
||||
haz.IMSBCPositions.Add(imsbcPos);
|
||||
this.dataGridIMSBCItems.Items.Refresh();
|
||||
this.DataGridIMSBCItems_EditRequested(imsbcPos);
|
||||
break;
|
||||
case HAZPosTemplate.SublistType.MARPOL:
|
||||
this.tabControlPositions.SelectedIndex = 4;
|
||||
MARPOL_Annex_I_Position marpolPos = new MARPOL_Annex_I_Position();
|
||||
marpolPos.FlashpointInformation = selectedTemplate.Flashpoint;
|
||||
marpolPos.Identifier = DatabaseEntity.GetNewIdentifier(haz.MARPOLPositions, "MARPOL-");
|
||||
marpolPos.HAZ = haz;
|
||||
haz.MARPOLPositions.Add(marpolPos);
|
||||
this.dataGridMARPOLItems.Items.Refresh();
|
||||
this.DataGridMARPOLItems_EditRequested(marpolPos);
|
||||
break;
|
||||
}
|
||||
this.SetHAZGlobalFlags();
|
||||
}
|
||||
}
|
||||
|
||||
#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">
|
||||
<DataGrid.Columns>
|
||||
<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.textBunkerQuantity}" Binding="{Binding BunkerFuelQuantity_TNE, Mode=TwoWay}" IsReadOnly="True" Width="0.8*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textBunkerType}" Width="0.2*">
|
||||
<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>
|
||||
</enictrl:ENIDataGrid>
|
||||
</GroupBox>
|
||||
|
||||
@ -9,6 +9,7 @@ using bsmd.database;
|
||||
using ENI2.EditControls;
|
||||
using ENI2.Util;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Media.Imaging;
|
||||
|
||||
namespace ENI2.DetailViewControls
|
||||
{
|
||||
@ -22,6 +23,7 @@ namespace ENI2.DetailViewControls
|
||||
private Message _tiefdMessage;
|
||||
private Message _pobdMessage;
|
||||
private Message _bkrdMessage;
|
||||
private Message _brkaMessage;
|
||||
bool startupComplete = false;
|
||||
|
||||
public DepartureNotificationDetailControl()
|
||||
@ -38,6 +40,7 @@ namespace ENI2.DetailViewControls
|
||||
this.RegisterIntegerUpDownChange(this.integerUpDownPassengersOnBoard, Message.NotificationClass.POBD);
|
||||
this.RegisterIntegerUpDownChange(this.integerUpDownPersonsOnBoard, Message.NotificationClass.POBD);
|
||||
this.RegisterIntegerUpDownChange(this.integerUpDownStowawaysOnBoard, Message.NotificationClass.POBD);
|
||||
this.dataGridBKRD.CellEditEnding += (obj, ev) => { this.SublistElementChanged(Message.NotificationClass.BKRD); };
|
||||
startupComplete = true;
|
||||
}
|
||||
|
||||
@ -51,6 +54,7 @@ namespace ENI2.DetailViewControls
|
||||
if (aMessage.MessageNotificationClass == Message.NotificationClass.TIEFD) { this._tiefdMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
||||
if (aMessage.MessageNotificationClass == Message.NotificationClass.POBD) { this._pobdMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
||||
if (aMessage.MessageNotificationClass == Message.NotificationClass.BKRD) { this._bkrdMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
||||
if (aMessage.MessageNotificationClass == Message.NotificationClass.BKRA) { this._brkaMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
||||
}
|
||||
|
||||
#region ATD
|
||||
@ -147,6 +151,15 @@ namespace ENI2.DetailViewControls
|
||||
this.dataGridBKRD.DeleteRequested += DataGridBKRD_DeleteRequested;
|
||||
this.dataGridBKRD.CreateRequested += DataGridBKRD_CreateRequested;
|
||||
|
||||
// Extra Menüpunkt um alle Bunker Positionen nach BKRA zu kopieren
|
||||
|
||||
this.dataGridBKRD.ContextMenu.Items.Add(new Separator());
|
||||
MenuItem copyBKRItem = new MenuItem();
|
||||
copyBKRItem.Header = string.Format(Properties.Resources.textCopyTo, "BKRA");
|
||||
copyBKRItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
|
||||
copyBKRItem.Click += this.copyBKR;
|
||||
this.dataGridBKRD.ContextMenu.Items.Add(copyBKRItem);
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
@ -155,6 +168,8 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private void DataGridBKRD_CreateRequested()
|
||||
{
|
||||
this.dataGridBKRD.CancelEdit();
|
||||
this.dataGridBKRD.CancelEdit();
|
||||
EditBKRDialog ebd = new EditBKRDialog();
|
||||
ebd.IsDeparture = true;
|
||||
ebd.BRKD = new BRKD();
|
||||
@ -184,9 +199,11 @@ namespace ENI2.DetailViewControls
|
||||
}
|
||||
|
||||
private void DataGridBKRD_DeleteRequested(DatabaseEntity obj)
|
||||
{
|
||||
{
|
||||
if (obj is BRKD brkd)
|
||||
{
|
||||
this.dataGridBKRD.CancelEdit();
|
||||
this.dataGridBKRD.CancelEdit();
|
||||
// are you sure dialog is in base class
|
||||
this._bkrdMessage.Elements.Remove(brkd);
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(brkd);
|
||||
@ -198,6 +215,8 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private void DataGridBKRD_EditRequested(DatabaseEntity obj)
|
||||
{
|
||||
this.dataGridBKRD.CancelEdit(DataGridEditingUnit.Row);
|
||||
this.dataGridBKRD.CommitEdit(DataGridEditingUnit.Row, true);
|
||||
EditBKRDialog eld = new EditBKRDialog();
|
||||
eld.IsDeparture = true;
|
||||
eld.BRKD = obj as BRKD;
|
||||
@ -218,7 +237,8 @@ namespace ENI2.DetailViewControls
|
||||
{
|
||||
if (!_bkrdMessage.Elements.Contains(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);
|
||||
}
|
||||
}
|
||||
@ -228,6 +248,22 @@ namespace ENI2.DetailViewControls
|
||||
this.DataGridBKRD_CreateRequested();
|
||||
}
|
||||
|
||||
private void copyBKR(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (this.dataGridBKRD.SelectedItems != null)
|
||||
{
|
||||
foreach (BRKD brkd in this.dataGridBKRD.SelectedItems)
|
||||
{
|
||||
BRKA copyBRKA = new BRKA();
|
||||
copyBRKA.MessageHeader = this._brkaMessage;
|
||||
copyBRKA.CopyFromBKRD(brkd);
|
||||
copyBRKA.Identifier = DatabaseEntity.GetNewIdentifier(this._brkaMessage.Elements);
|
||||
this._brkaMessage.Elements.Add(copyBRKA);
|
||||
this.SublistElementChanged(Message.NotificationClass.BKRA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Highlighting
|
||||
@ -262,18 +298,7 @@ namespace ENI2.DetailViewControls
|
||||
HighlightService.HighlightControl(this.bkrdGroupBox, HighlightService.HighlightStyle.VIOLATION, this._bkrdMessage);
|
||||
}
|
||||
|
||||
#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
|
||||
#endregion
|
||||
|
||||
#region special datetimepicker validation popup (OMG)
|
||||
|
||||
|
||||
@ -7,6 +7,7 @@
|
||||
xmlns:local="clr-namespace:ENI2.DetailViewControls"
|
||||
xmlns:enictrl="clr-namespace:ENI2.Controls"
|
||||
xmlns:p="clr-namespace:ENI2.Properties"
|
||||
xmlns:util="clr-namespace:ENI2.Util"
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="600" d:DesignWidth="1024">
|
||||
@ -14,80 +15,80 @@
|
||||
<TabItem Header="{x:Static p:Resources.textMaritimeHealthDeclaration}" Name="tabMaritimeHealthDeclaration">
|
||||
<GroupBox Name="mdhGroupBox" Header="{x:Static p:Resources.textMDH}">
|
||||
<ScrollViewer PreviewMouseWheel="ScrollViewer_PreviewMouseWheel">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="3*" />
|
||||
<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="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="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textSimplificationAvailable}" Name="label_SimplificationAvailable" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="0" Content="{x:Static p:Resources.textPortOfHealth}" Name="label_PortOfHealth" Margin="0,0,10,0"/>
|
||||
<TextBlock Grid.Row="3" Grid.RowSpan="2" Text="{x:Static p:Resources.textPersonDiedOnBoard}" Name="textBlock_PersonsDiedOnBoard" Margin="0,0,10,0" TextWrapping="Wrap" Height="56" VerticalAlignment="Top"/>
|
||||
<TextBlock Grid.Row="5" Grid.RowSpan="2" Grid.Column="0" Text="{x:Static p:Resources.textDiseaseInfectiousNature}" Name="textBlock_diseaseInfectious" TextWrapping="Wrap" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="7" Grid.Column="0" Content="{x:Static p:Resources.textTotalNumberIllHigherThanExpected}" Name="label_TotalNumberHigher" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="8" Grid.Column="0" Content="{x:Static p:Resources.textSickPersonsOnBoard}" Name="label_SickPersonsOnBoard" Margin="0,0,10,0"/>
|
||||
<TextBlock Grid.Row="9" Grid.RowSpan="2" Grid.Column="0" Text="{x:Static p:Resources.textAwareofConditionInfectious}" Name="label_AwareOfCondition" Margin="0,0,10,0"/>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="3*" />
|
||||
<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="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="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textSimplificationAvailable}" Name="label_SimplificationAvailable" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="0" Content="{x:Static p:Resources.textPortOfHealth}" Name="label_PortOfHealth" Margin="0,0,10,0"/>
|
||||
<TextBlock Grid.Row="3" Grid.RowSpan="2" Text="{x:Static p:Resources.textPersonDiedOnBoard}" Name="textBlock_PersonsDiedOnBoard" Margin="0,0,10,0" TextWrapping="Wrap" Height="56" VerticalAlignment="Top"/>
|
||||
<TextBlock Grid.Row="5" Grid.RowSpan="2" Grid.Column="0" Text="{x:Static p:Resources.textDiseaseInfectiousNature}" Name="textBlock_diseaseInfectious" TextWrapping="Wrap" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="7" Grid.Column="0" Content="{x:Static p:Resources.textTotalNumberIllHigherThanExpected}" Name="label_TotalNumberHigher" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="8" Grid.Column="0" Content="{x:Static p:Resources.textSickPersonsOnBoard}" Name="label_SickPersonsOnBoard" Margin="0,0,10,0"/>
|
||||
<TextBlock Grid.Row="9" Grid.RowSpan="2" Grid.Column="0" Text="{x:Static p:Resources.textAwareofConditionInfectious}" Name="label_AwareOfCondition" Margin="0,0,10,0"/>
|
||||
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="11" Grid.Column="0" Content="{x:Static p:Resources.textStowaways}" Name="label_StowawaysOnBoard" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="12" Grid.Column="0" Content="{x:Static p:Resources.textSickAnimalsOrPets}" Name="label_SickAnimalsOrPets" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="13" Grid.Column="0" Content="{x:Static p:Resources.textSanitaryControlExemption}" Name="label_SanitaryControlExemption" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="14" Grid.Column="0" Content="{x:Static p:Resources.textPlaceOfIssue}" Name="label_PlaceOfIssue" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="15" Grid.Column="0" Content="{x:Static p:Resources.textReinspectionSanitaryControl}" Name="label_ReinspectionSanitaryControl" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="11" Grid.Column="0" Content="{x:Static p:Resources.textStowaways}" Name="label_StowawaysOnBoard" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="12" Grid.Column="0" Content="{x:Static p:Resources.textSickAnimalsOrPets}" Name="label_SickAnimalsOrPets" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="13" Grid.Column="0" Content="{x:Static p:Resources.textSanitaryControlExemption}" Name="label_SanitaryControlExemption" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="14" Grid.Column="0" Content="{x:Static p:Resources.textPlaceOfIssue}" Name="label_PlaceOfIssue" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="15" Grid.Column="0" Content="{x:Static p:Resources.textReinspectionSanitaryControl}" Name="label_ReinspectionSanitaryControl" Margin="0,0,10,0"/>
|
||||
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="3" Grid.Column="2" Content="{x:Static p:Resources.textNumberOfDeaths}" Name="label_NumberOfDeaths" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="7" Grid.Column="2" Content="{x:Static p:Resources.textNumberOfIl}" Name="label_NumberOfIllPersons" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="8" Grid.Column="2" Content="{x:Static p:Resources.textMedicalPractitionerConsulted}" Name="label_WasMedical" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="11" Grid.Column="2" Content="{x:Static p:Resources.textJoiningLocation}" Name="label_JoiningLocation" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="14" Grid.Column="2" Content="{x:Static p:Resources.textDateOfIssue}" Name="label_DateOfIssue" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="3" Grid.Column="2" Content="{x:Static p:Resources.textNumberOfDeaths}" Name="label_NumberOfDeaths" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="7" Grid.Column="2" Content="{x:Static p:Resources.textNumberOfIl}" Name="label_NumberOfIllPersons" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="8" Grid.Column="2" Content="{x:Static p:Resources.textMedicalPractitionerConsulted}" Name="label_WasMedical" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="11" Grid.Column="2" Content="{x:Static p:Resources.textJoiningLocation}" Name="label_JoiningLocation" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="14" Grid.Column="2" Content="{x:Static p:Resources.textDateOfIssue}" Name="label_DateOfIssue" Margin="0,0,10,0"/>
|
||||
|
||||
|
||||
<CheckBox Name="checkSimplification" IsChecked="{Binding MDHSimplification}" Grid.Row="0" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<enictrl:LocodeControl x:Name="locodePortWhereHealthDeclarationWasGiven" Grid.Row="1" Grid.Column="1" LocodeValue="{Binding PortOfCallWhereCompleteMDHNotified, Mode=TwoWay}" />
|
||||
<CheckBox Name="checkBoxHavePersonsDied" IsChecked="{Binding NonAccidentalDeathsDuringVoyage}" Grid.Row="3" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<xctk:IntegerUpDown Name="integerUpDownNumberOfDeaths" Grid.Row="3" Grid.Column="3" Value="{Binding NonAccidentalDeathsDuringVoyageCount}" Margin="2" ShowButtonSpinner="False" TextAlignment="Left"/>
|
||||
<CheckBox Name="checkBoxIsSuspectedInfectious" IsChecked="{Binding SuspisionInfectiousNature}" Grid.Row="5" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<CheckBox Name="checkBoxTotalNumberSickHigherThan" IsChecked="{Binding NumberOfIllPersonsHigherThanExpected}" Grid.Row="7" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<xctk:IntegerUpDown Name="integerUpDownNumberOfIllPersons" Grid.Row="7" Grid.Column="3" Value="{Binding NumberOfIllPersons}" Margin="2" ShowButtonSpinner="False" TextAlignment="Left"/>
|
||||
<CheckBox Name="checkBoxSickPersonsOnBoard" IsChecked="{Binding SickPersonsOnBoard}" Grid.Row="8" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<CheckBox Name="checkBoxWasMedicalConsulted" IsChecked="{Binding MedicalConsulted}" Grid.Row="8" Grid.Column="3" VerticalAlignment="Center"/>
|
||||
<CheckBox Name="checkBoxAwareOfConditions" IsChecked="{Binding AwareOfFurtherInfections}" Grid.Row="9" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<CheckBox Name="checkBoxStowawaysOnBoard" IsChecked="{Binding StowawaysDetected}" Grid.Row="11" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<TextBox Name="textBoxStowawaysJoiningLocation" Grid.Row="11" Grid.RowSpan="3" Grid.Column="3" MaxLength="100" Text="{Binding StowawaysJoiningLocationText}" Margin="2" VerticalContentAlignment="Top"/>
|
||||
<CheckBox Name="checkBoxSickAnimalsOrPets" IsChecked="{Binding SickAnimalOrPetOnBoard}" Grid.Row="12" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<CheckBox Name="checkBoxSanitaryControlExemption" IsChecked="{Binding ValidSanitaryControlExemptionOrCertificateOnBoard}" Grid.Row="13" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<TextBox Name="textBoxPlaceOfIssue" Grid.Row="14" Grid.Column="1" MaxLength="100" Text="{Binding PlaceOfIssue}" Margin="2" />
|
||||
<CheckBox Name="checkSimplification" IsChecked="{Binding MDHSimplification}" Grid.Row="0" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<enictrl:LocodeControl x:Name="locodePortWhereHealthDeclarationWasGiven" Grid.Row="1" Grid.Column="1" LocodeValue="{Binding PortOfCallWhereCompleteMDHNotified, Mode=TwoWay}" />
|
||||
<CheckBox Name="checkBoxHavePersonsDied" IsChecked="{Binding NonAccidentalDeathsDuringVoyage}" Grid.Row="3" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<xctk:IntegerUpDown Name="integerUpDownNumberOfDeaths" Grid.Row="3" Grid.Column="3" Value="{Binding NonAccidentalDeathsDuringVoyageCount}" Margin="2" ShowButtonSpinner="False" TextAlignment="Left"/>
|
||||
<CheckBox Name="checkBoxIsSuspectedInfectious" IsChecked="{Binding SuspisionInfectiousNature}" Grid.Row="5" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<CheckBox Name="checkBoxTotalNumberSickHigherThan" IsChecked="{Binding NumberOfIllPersonsHigherThanExpected}" Grid.Row="7" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<xctk:IntegerUpDown Name="integerUpDownNumberOfIllPersons" Grid.Row="7" Grid.Column="3" Value="{Binding NumberOfIllPersons}" Margin="2" ShowButtonSpinner="False" TextAlignment="Left"/>
|
||||
<CheckBox Name="checkBoxSickPersonsOnBoard" IsChecked="{Binding SickPersonsOnBoard}" Grid.Row="8" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<CheckBox Name="checkBoxWasMedicalConsulted" IsChecked="{Binding MedicalConsulted}" Grid.Row="8" Grid.Column="3" VerticalAlignment="Center"/>
|
||||
<CheckBox Name="checkBoxAwareOfConditions" IsChecked="{Binding AwareOfFurtherInfections}" Grid.Row="9" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<CheckBox Name="checkBoxStowawaysOnBoard" IsChecked="{Binding StowawaysDetected}" Grid.Row="11" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<TextBox Name="textBoxStowawaysJoiningLocation" Grid.Row="11" Grid.RowSpan="3" Grid.Column="3" MaxLength="100" Text="{Binding StowawaysJoiningLocationText}" Margin="2" VerticalContentAlignment="Top"/>
|
||||
<CheckBox Name="checkBoxSickAnimalsOrPets" IsChecked="{Binding SickAnimalOrPetOnBoard}" Grid.Row="12" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<CheckBox Name="checkBoxSanitaryControlExemption" IsChecked="{Binding ValidSanitaryControlExemptionOrCertificateOnBoard}" Grid.Row="13" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<TextBox Name="textBoxPlaceOfIssue" Grid.Row="14" Grid.Column="1" MaxLength="100" Text="{Binding PlaceOfIssue, Converter={util:TrimStringConverter}}" Margin="2" />
|
||||
<DatePicker Name="datePickerDateOfIssue" Grid.Row="14" Grid.Column="3" SelectedDate="{Binding DateOfIssue, Mode=TwoWay}" Margin="2" ContextMenu="{DynamicResource ClearContextMenu}" DisplayDateStart="1/1/1900" DisplayDateEnd="12/31/2199" PreviewKeyUp="DateTimePicker_PreviewKeyUpDate">
|
||||
<DatePicker.BlackoutDates>
|
||||
<CalendarDateRange Start="1/1/0001" End="12/31/1799"/>
|
||||
<CalendarDateRange Start="1/1/2199" End="1/1/9999"/>
|
||||
</DatePicker.BlackoutDates>
|
||||
</DatePicker>
|
||||
<CheckBox Name="checkBoxReinspectionSanitary" IsChecked="{Binding SanitaryControlReinspectionRequired}" Grid.Row="15" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
</Grid>
|
||||
<CheckBox Name="checkBoxReinspectionSanitary" IsChecked="{Binding SanitaryControlReinspectionRequired}" Grid.Row="15" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</GroupBox>
|
||||
</TabItem>
|
||||
@ -105,26 +106,26 @@
|
||||
</StackPanel>
|
||||
<enictrl:ENIDataGrid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" x:Name="dataGridPortOfCallLast30Days" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
||||
SelectionMode="Extended" AutoGenerateColumns="False" Margin="0,5,0,0">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="" Binding="{Binding Identifier}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textPortCall}" Binding="{Binding PortOfCallLast30DaysLocode, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textATDPortOfCall}" Binding="{Binding PortOfCallLast30DaysDateOfDeparture, StringFormat=d}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="" Binding="{Binding Identifier}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textPortCall}" Binding="{Binding PortOfCallLast30DaysLocode, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textATDPortOfCall}" Binding="{Binding PortOfCallLast30DaysDateOfDeparture, StringFormat=d}" IsReadOnly="True" Width="0.1*" />
|
||||
|
||||
<DataGridTemplateColumn IsReadOnly="True" Width="0.1*">
|
||||
<DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextWrapping="Wrap" Text="{x:Static p:Resources.textCrewMemberJoinTheShip}" FontSize="10"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<CheckBox IsChecked="{Binding PortOfCallLast30DaysCrewMembersJoined}" IsEnabled="False" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textCrewMembersJoinedGrid}" Binding="{Binding CrewMembersJoinedText, Mode=TwoWay}" IsReadOnly="True" Width="0.4*" />
|
||||
</DataGrid.Columns>
|
||||
</enictrl:ENIDataGrid>
|
||||
<DataGridTemplateColumn IsReadOnly="True" Width="0.1*">
|
||||
<DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextWrapping="Wrap" Text="{x:Static p:Resources.textCrewMemberJoinTheShip}" FontSize="10"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<CheckBox IsChecked="{Binding PortOfCallLast30DaysCrewMembersJoined}" IsEnabled="False" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textCrewMembersJoinedGrid}" Binding="{Binding CrewMembersJoinedText, Mode=TwoWay}" IsReadOnly="True" Width="0.4*" />
|
||||
</DataGrid.Columns>
|
||||
</enictrl:ENIDataGrid>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem Header="{x:Static p:Resources.textVisitsInfectedAreas}" Name="tabInfectedAreas">
|
||||
|
||||
@ -13,7 +13,6 @@ using ENI2.EditControls;
|
||||
using ENI2.Util;
|
||||
using bsmd.database;
|
||||
|
||||
using bsmd.ExcelReadService;
|
||||
using ExcelDataReader;
|
||||
|
||||
namespace ENI2.DetailViewControls
|
||||
@ -131,6 +130,12 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
}
|
||||
|
||||
public override int SelectedTabIndex
|
||||
{
|
||||
get { return this.mainFrame.SelectedIndex; }
|
||||
set { this.mainFrame.SelectedIndex = value; }
|
||||
}
|
||||
|
||||
#region SetEnabled
|
||||
|
||||
public override void SetEnabled(bool enabled)
|
||||
@ -602,18 +607,7 @@ namespace ENI2.DetailViewControls
|
||||
HighlightService.HighlightControl(this.mdhGroupBox, HighlightService.HighlightStyle.VIOLATION, this._mdhMessage);
|
||||
}
|
||||
|
||||
#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
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,10 +8,11 @@
|
||||
xmlns:enictrl="clr-namespace:ENI2.Controls"
|
||||
xmlns:p="clr-namespace:ENI2.Properties"
|
||||
xmlns:util="clr-namespace:ENI2.Util"
|
||||
xmlns:data="clr-namespace:bsmd.database;assembly=bsmd.database"
|
||||
xmlns:local="clr-namespace:ENI2.DetailViewControls"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="300" d:DesignWidth="800">
|
||||
<xctk:BusyIndicator Name="busyIndicator">
|
||||
d:DesignHeight="768" d:DesignWidth="1024">
|
||||
<xctk:BusyIndicator Name="busyIndicator">
|
||||
<xctk:BusyIndicator.ProgressBarStyle>
|
||||
<Style TargetType="ProgressBar">
|
||||
<Setter Property="Visibility" Value="Collapsed" />
|
||||
@ -24,96 +25,210 @@
|
||||
<Button Name="buttonStopWaiting" Content="{x:Static p:Resources.textStopWaiting}" Click="buttonStopWaiting_Click"/>
|
||||
</StackPanel>
|
||||
</xctk:BusyIndicator.BusyContent>
|
||||
|
||||
<GroupBox Name="visitTransitGroupBox" Header="{x:Static p:Resources.textVisitTransit}">
|
||||
<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}" 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}" 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" />
|
||||
<TextBox Name="textBoxTicketNo" Grid.Column="1" Grid.Row="4" Grid.ColumnSpan="2" Text="{Binding TicketNo, Mode=TwoWay}" 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" />
|
||||
<Button IsEnabled="True" Name="buttonStorno" Grid.Column="1" Grid.Row="6" Margin="2" Click="buttonStorno_Click" Content="{x:Static p:Resources.textCancelDeclaration}" Background="Red"/>
|
||||
<Button IsEnabled="True" Name="buttonCopy" Grid.Column="2" Grid.Row="6" Margin="2" Click="buttonCopy_Click" Content="{x:Static p:Resources.textCopyData}"/>
|
||||
<Button IsEnabled="False" Name="buttonSendPDF" Grid.Column="3" Grid.Row="6" Margin="2" Click="buttonSendPDF_Click" Content="{x:Static p:Resources.textCreatePDF}"/>
|
||||
<Button Name="buttonQueryHIS" Grid.Column="4" Grid.Row="6" Margin="2" Click="buttonQueryHIS_Click" Content="{x:Static p:Resources.textQueryHIS}"/>
|
||||
<StackPanel Orientation="Horizontal" Grid.Column="5" Grid.Row="6">
|
||||
<Button Name="buttonRefresh" Margin="2" Click="buttonRefresh_Click" BorderThickness="0" Background="Transparent" ToolTip="{x:Static p:Resources.textTooltipRefresh}">
|
||||
<GroupBox Name="visitTransitGroupBox" Header="{x:Static p:Resources.textOverview}">
|
||||
<ScrollViewer PreviewMouseWheel="ScrollViewer_PreviewMouseWheel">
|
||||
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="400" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<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 Orientation="Horizontal" Grid.Column="2" Grid.Row="11" Visibility="Hidden" Name="stackPanelLock">
|
||||
<Image Source="../Resources/lock.png" Margin="0,0,5,0" Height="24" />
|
||||
<TextBlock Name="textBlockLockUserName" VerticalAlignment="Center" />
|
||||
</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">
|
||||
<TextBlock Text="{x:Static p:Resources.textExcelImport}"></TextBlock>
|
||||
<Image Source="../Resources/excel.png" Margin="10,0,5,0" Height="16"/>
|
||||
</StackPanel>
|
||||
</Button>
|
||||
|
||||
<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 Name="buttonQueryHIS" Grid.Column="1" Grid.Row="18" Margin="2" Click="buttonQueryHIS_Click" Content="{x:Static p:Resources.textQueryHIS}"/>
|
||||
<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 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 Grid.Column="4" Grid.Row="7" Margin="2" Name="buttonExcelExport" Click="buttonExcelExport_Click">
|
||||
<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"/-->
|
||||
<TextBlock Text="{x:Static p:Resources.textExcelExport}"></TextBlock>
|
||||
<Image Source="../Resources/excel.png" Margin="10,0,5,0" Height="16"/>
|
||||
</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>
|
||||
<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}" />
|
||||
-->
|
||||
|
||||
|
||||
</Grid>
|
||||
<!-- Data Grid -->
|
||||
<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">
|
||||
<DataGrid.Resources>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Grid.Column="3" Grid.Row="7" Visibility="Hidden" Name="stackPanelLock">
|
||||
<Image Source="../Resources/lock.png" Margin="0,0,5,0" Height="24" />
|
||||
<TextBlock Name="textBlockLockUserName" VerticalAlignment="Center" />
|
||||
</StackPanel>
|
||||
<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>
|
||||
|
||||
<!-- Data Grid -->
|
||||
<DataGrid Grid.Row="9" Grid.ColumnSpan="6" Margin="0,8,0,0" x:Name="dataGridMessages" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" CanUserAddRows="False"
|
||||
SelectionMode="Extended" AutoGenerateColumns="False" MouseDoubleClick="dataGrid_MouseDoubleClick" PreviewKeyDown="dataGrid_PreviewKeyDown">
|
||||
<!-- 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>
|
||||
<Style TargetType="DataGridRow">
|
||||
<Style.Triggers>
|
||||
@ -123,168 +238,227 @@
|
||||
<Trigger Property="IsMouseOver" Value="True">
|
||||
<Setter Property="Background" Value="LightYellow" />
|
||||
</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>
|
||||
</DataGrid.RowStyle>
|
||||
<DataGrid.Columns>
|
||||
<DataGridTemplateColumn Header=" " Width="SizeToCells" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<!--Image Source="{Binding src:Util.ImageDict[ENINotificationDetailGroup]}" /-->
|
||||
<!--Image Source="{Binding Source={x:Static src:Util.ImageDict}, Path=[ENINotificationDetailGroup]}"></-->
|
||||
<Image Source="{Binding ENINotificationIconString, Converter={util:NullImageConverter}}" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
||||
<!--
|
||||
<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>
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
<Setter Property="Margin" Value="10,0,0,0" />
|
||||
</Style>
|
||||
</DataGridTextColumn.ElementStyle>
|
||||
</DataGridTextColumn>
|
||||
<DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image x:Name="imageHasSystemErrors"/>
|
||||
<DataTemplate.Triggers>
|
||||
<DataTrigger Binding="{Binding Path=HasSystemErrors}" Value="True">
|
||||
<Setter Property="Source" Value="/Resources/hand_red_card.png" TargetName="imageHasSystemErrors"/>
|
||||
</DataTrigger>
|
||||
</DataTemplate.Triggers>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image x:Name="imageHasErrors"/>
|
||||
<DataTemplate.Triggers>
|
||||
<DataTrigger Binding="{Binding Path=HasErrors}" Value="True">
|
||||
<Setter Property="Source" Value="/Resources/error.png" TargetName="imageHasErrors"/>
|
||||
</DataTrigger>
|
||||
</DataTemplate.Triggers>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image x:Name="imageHasViolations"/>
|
||||
<DataTemplate.Triggers>
|
||||
<DataTrigger Binding="{Binding Path=HasViolations}" Value="True">
|
||||
<Setter Property="Source" Value="/Resources/sign_warning.png" TargetName="imageHasViolations"/>
|
||||
</DataTrigger>
|
||||
</DataTemplate.Triggers>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<!--DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image x:Name="imageHasUpdate"/>
|
||||
<DataTemplate.Triggers>
|
||||
<DataTrigger Binding="{Binding Path=HasUpdates}" Value="True">
|
||||
<Setter Property="Source" Value="/Resources/recycle.png" TargetName="imageHasUpdate"/>
|
||||
</DataTrigger>
|
||||
</DataTemplate.Triggers>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</-->
|
||||
<!--DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image x:Name="imageHasReminder"/>
|
||||
<DataTemplate.Triggers>
|
||||
<DataTrigger Binding="{Binding Path=HasReminder}" Value="True">
|
||||
<Setter Property="Source" Value="/Resources/hand_point.png" TargetName="imageHasReminder"/>
|
||||
</DataTrigger>
|
||||
</DataTemplate.Triggers>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</-->
|
||||
<DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image x:Name="imageReset"/>
|
||||
<DataTemplate.Triggers>
|
||||
<DataTrigger Binding="{Binding Path=Reset}" Value="True">
|
||||
<Setter Property="Source" Value="/Resources/refresh.png" TargetName="imageReset"/>
|
||||
</DataTrigger>
|
||||
</DataTemplate.Triggers>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image x:Name="imageSendSuccess"/>
|
||||
<DataTemplate.Triggers>
|
||||
<DataTrigger Binding="{Binding Path=SendSuccess}" Value="True">
|
||||
<Setter Property="Source" Value="/Resources/bullet_ball_green.png" TargetName="imageSendSuccess"/>
|
||||
</DataTrigger>
|
||||
</DataTemplate.Triggers>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</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.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>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
</Grid>
|
||||
|
||||
<DataGridTemplateColumn Header=" " Width="SizeToCells" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<!--Image Source="{Binding src:Util.ImageDict[ENINotificationDetailGroup]}" /-->
|
||||
<!--Image Source="{Binding Source={x:Static src:Util.ImageDict}, Path=[ENINotificationDetailGroup]}"></-->
|
||||
<Image Source="{Binding ENINotificationIconString, Converter={util:NullImageConverter}}" Height="24" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textNotificationClass}" Binding="{Binding MessageNotificationClassDisplay}" IsReadOnly="True" Width="0.1*" FontWeight="Bold">
|
||||
<DataGridTextColumn.ElementStyle>
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
<Setter Property="Margin" Value="10,0,0,0" />
|
||||
</Style>
|
||||
</DataGridTextColumn.ElementStyle>
|
||||
</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.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image x:Name="imageHasSystemErrors"/>
|
||||
<DataTemplate.Triggers>
|
||||
<DataTrigger Binding="{Binding Path=HasSystemErrors}" Value="True">
|
||||
<Setter Property="Source" Value="/Resources/hand_red_card.png" TargetName="imageHasSystemErrors"/>
|
||||
</DataTrigger>
|
||||
</DataTemplate.Triggers>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image x:Name="imageHasErrors"/>
|
||||
<DataTemplate.Triggers>
|
||||
<DataTrigger Binding="{Binding Path=HasErrors}" Value="True">
|
||||
<Setter Property="Source" Value="/Resources/error.png" TargetName="imageHasErrors"/>
|
||||
</DataTrigger>
|
||||
</DataTemplate.Triggers>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image x:Name="imageHasViolations"/>
|
||||
<DataTemplate.Triggers>
|
||||
<DataTrigger Binding="{Binding Path=HasViolations}" Value="True">
|
||||
<Setter Property="Source" Value="/Resources/sign_warning.png" TargetName="imageHasViolations"/>
|
||||
</DataTrigger>
|
||||
</DataTemplate.Triggers>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<!--DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image x:Name="imageHasUpdate"/>
|
||||
<DataTemplate.Triggers>
|
||||
<DataTrigger Binding="{Binding Path=HasUpdates}" Value="True">
|
||||
<Setter Property="Source" Value="/Resources/recycle.png" TargetName="imageHasUpdate"/>
|
||||
</DataTrigger>
|
||||
</DataTemplate.Triggers>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</-->
|
||||
<!--DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image x:Name="imageHasReminder"/>
|
||||
<DataTemplate.Triggers>
|
||||
<DataTrigger Binding="{Binding Path=HasReminder}" Value="True">
|
||||
<Setter Property="Source" Value="/Resources/hand_point.png" TargetName="imageHasReminder"/>
|
||||
</DataTrigger>
|
||||
</DataTemplate.Triggers>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</-->
|
||||
<DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image x:Name="imageReset"/>
|
||||
<DataTemplate.Triggers>
|
||||
<DataTrigger Binding="{Binding Path=Reset}" Value="True">
|
||||
<Setter Property="Source" Value="/Resources/refresh.png" TargetName="imageReset"/>
|
||||
</DataTrigger>
|
||||
</DataTemplate.Triggers>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
||||
<DataGridTemplateColumn Header="" Width="SizeToCells" IsReadOnly="True">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image x:Name="imageSendSuccess"/>
|
||||
<DataTemplate.Triggers>
|
||||
<DataTrigger Binding="{Binding Path=SendSuccess}" Value="True">
|
||||
<Setter Property="Source" Value="/Resources/bullet_ball_green.png" TargetName="imageSendSuccess"/>
|
||||
</DataTrigger>
|
||||
</DataTemplate.Triggers>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textStatusInfo}" Binding="{Binding StatusInfo}" IsReadOnly="True" Width="0.2*">
|
||||
<DataGridTextColumn.ElementStyle>
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
</Style>
|
||||
</DataGridTextColumn.ElementStyle>
|
||||
</DataGridTextColumn>
|
||||
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</GroupBox>
|
||||
</xctk:BusyIndicator>
|
||||
|
||||
@ -11,9 +11,18 @@ using System.Timers;
|
||||
|
||||
using bsmd.database;
|
||||
using ENI2.EditControls;
|
||||
using ENI2.Excel;
|
||||
using ENI2.Report;
|
||||
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Media;
|
||||
using Microsoft.Win32;
|
||||
using System.Diagnostics;
|
||||
using System.ComponentModel;
|
||||
using static bsmd.database.Message;
|
||||
using PdfSharp.Fonts;
|
||||
using System.Linq;
|
||||
|
||||
namespace ENI2.DetailViewControls
|
||||
{
|
||||
@ -22,6 +31,9 @@ namespace ENI2.DetailViewControls
|
||||
/// </summary>
|
||||
public partial class OverViewDetailControl : DetailBaseControl
|
||||
{
|
||||
|
||||
#region Fields
|
||||
|
||||
private Message _message = null;
|
||||
private Message _ataMessage;
|
||||
private Message _atdMessage;
|
||||
@ -31,21 +43,29 @@ namespace ENI2.DetailViewControls
|
||||
private readonly object _collectionLock = new object();
|
||||
// private MessageSendStatusDialog mssd = null;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Construction
|
||||
|
||||
public OverViewDetailControl()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.Loaded += OverViewDetailControl_Loaded;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Initialize
|
||||
|
||||
private void OverViewDetailControl_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// die Controls nach Änderungen monitoren
|
||||
// diese Einträge gehen auf core
|
||||
this.RegisterTextboxChange(this.textBoxTicketNo, Message.NotificationClass.ATA);
|
||||
this.RegisterTextboxChange(this.textBoxDisplayId, Message.NotificationClass.ATA);
|
||||
this.RegisterTextboxChange(this.textBoxIMO, Message.NotificationClass.ATA);
|
||||
this.RegisterTextboxChange(this.textBoxENI, Message.NotificationClass.ATA);
|
||||
this.RegisterLocodeChange(this.locodePoC, Message.NotificationClass.ATA);
|
||||
this.textBoxTicketNo.TextChanged += CoreTextBox_TextChanged;
|
||||
this.textBoxDisplayId.TextChanged += CoreTextBox_TextChanged;
|
||||
this.textBoxIMO.TextChanged += CoreTextBox_TextChanged;
|
||||
this.textBoxENI.TextChanged += CoreTextBox_TextChanged;
|
||||
this.locodePoC.PropertyChanged += CoreLocode_LocodeChanged;
|
||||
|
||||
this.RegisterDateTimePickerChange(this.dateTimePickerATA, Message.NotificationClass.ATA);
|
||||
this.RegisterDateTimePickerChange(this.dateTimePickerATD, Message.NotificationClass.ATD);
|
||||
@ -53,22 +73,19 @@ namespace ENI2.DetailViewControls
|
||||
this.RegisterDateTimePickerChange(this.dateTimePickerETD, Message.NotificationClass.NOA_NOD);
|
||||
}
|
||||
|
||||
#region Initialize
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
bool iAmAdmin = DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].IsAdmin;
|
||||
|
||||
base.Initialize();
|
||||
Message.NotificationClass notificationClass = this.Core.IsTransit ? Message.NotificationClass.TRANSIT : Message.NotificationClass.VISIT;
|
||||
if (this.Messages == null) return;
|
||||
if (this.Core == null) return;
|
||||
|
||||
if(DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].IsAdmin)
|
||||
{
|
||||
this.textBoxENI.IsReadOnly = false;
|
||||
this.textBoxIMO.IsReadOnly = false;
|
||||
this.locodePoC.IsEnabled = true;
|
||||
this.textBoxDisplayId.IsReadOnly = false;
|
||||
}
|
||||
this.textBoxENI.IsReadOnly = !iAmAdmin;
|
||||
this.textBoxIMO.IsReadOnly = !iAmAdmin;
|
||||
this.locodePoC.IsEnabled = iAmAdmin;
|
||||
this.textBoxDisplayId.IsReadOnly = !iAmAdmin;
|
||||
|
||||
this.textBoxENI.DataContext = this.Core;
|
||||
this.textBoxIMO.DataContext = this.Core;
|
||||
@ -80,6 +97,7 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
this.comboBoxInitialHis.ItemsSource = Util.EnumHelper.GetAllValuesAndDescription(typeof(Message.NSWProvider));
|
||||
this.comboBoxInitialHis.DataContext = this.Core;
|
||||
this.buttonExcelImport.IsEnabled = !this.Core.DisplayId.IsNullOrEmpty();
|
||||
|
||||
Binding vtBinding = new Binding
|
||||
{
|
||||
@ -139,6 +157,7 @@ namespace ENI2.DetailViewControls
|
||||
vioItem.Click += this.buttonWarnings_Click;
|
||||
this.dataGridMessages.ContextMenu.Items.Add(vioItem);
|
||||
|
||||
/*
|
||||
MenuItem pdfItem = new MenuItem
|
||||
{
|
||||
Header = Properties.Resources.textCreatePDF,
|
||||
@ -146,6 +165,7 @@ namespace ENI2.DetailViewControls
|
||||
};
|
||||
pdfItem.Click += this.buttonCreatePDF_Click;
|
||||
this.dataGridMessages.ContextMenu.Items.Add(pdfItem);
|
||||
*/
|
||||
|
||||
MenuItem historyItem = new MenuItem
|
||||
{
|
||||
@ -158,7 +178,10 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
#endregion
|
||||
|
||||
#region lokale Meldeklassen
|
||||
#region lokale Meldeklassen
|
||||
|
||||
Message crewdMessage = null;
|
||||
Message pasdMessage = null;
|
||||
|
||||
foreach (Message aMessage in this.Messages)
|
||||
{
|
||||
@ -170,8 +193,12 @@ namespace ENI2.DetailViewControls
|
||||
this._atdMessage = aMessage;
|
||||
if (aMessage.MessageNotificationClass == Message.NotificationClass.NOA_NOD)
|
||||
this._noanodMessage = aMessage;
|
||||
if (aMessage.MessageNotificationClass == Message.NotificationClass.CREWD)
|
||||
crewdMessage = aMessage;
|
||||
if (aMessage.MessageNotificationClass == Message.NotificationClass.PASD)
|
||||
pasdMessage = aMessage;
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region init ATA
|
||||
@ -290,7 +317,9 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
BindingOperations.EnableCollectionSynchronization(this.Messages, _collectionLock);
|
||||
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
|
||||
this._initialized = true;
|
||||
}
|
||||
@ -325,6 +354,12 @@ namespace ENI2.DetailViewControls
|
||||
this.labelBSMDStatusInternal.DataContext = null;
|
||||
this.labelBSMDStatusInternal.DataContext = this.Core;
|
||||
this.labelBSMDStatusInternal.GetBindingExpression(Label.ContentProperty)?.UpdateTarget();
|
||||
|
||||
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));
|
||||
//ShowIdDialog sid = new ShowIdDialog(this.Core)
|
||||
//{
|
||||
@ -394,53 +429,58 @@ namespace ENI2.DetailViewControls
|
||||
mhd.MessageHistories = DBManager.Instance.GetMessageHistories(historyMessage.Id.Value);
|
||||
mhd.RequestReload += () => this.OnRequestReload(this.Core.Id.Value);
|
||||
mhd.Show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void contextSendMessage(object sender, RoutedEventArgs e)
|
||||
{
|
||||
{
|
||||
MessageBoxResult result = MessageBox.Show(Properties.Resources.textConfirmSend, Properties.Resources.textConfirm, MessageBoxButton.YesNo, MessageBoxImage.Question);
|
||||
if (result == MessageBoxResult.Yes)
|
||||
{
|
||||
bool somethingsNotSaved = false;
|
||||
foreach (Message selectedMessage in this.dataGridMessages.SelectedItems)
|
||||
this.SendMessages(this.dataGridMessages.SelectedItems.Cast<Message>());
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
if (MessageBox.Show(Properties.Resources.textUnsavedChangesSendAnyWay, Properties.Resources.textConfirmation, MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.No)
|
||||
return;
|
||||
}
|
||||
// komplette Anmeldung auf "zu versenden" stellen
|
||||
this.Core.BSMDStatusInternal = MessageCore.BSMDStatus.TOSEND;
|
||||
this.Core.DefaultReportingPartyId = App.UserId;
|
||||
|
||||
List<Message> watchList = new List<Message>();
|
||||
foreach (Message selectedMessage in this.dataGridMessages.SelectedItems)
|
||||
{
|
||||
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);
|
||||
}
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(this.Core); // löst auch den Watchdog aus
|
||||
this.OnRequestSendValidation();
|
||||
this.dataGridMessages.Items.Refresh();
|
||||
|
||||
// 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)
|
||||
{
|
||||
this.mssd = new MessageSendStatusDialog(this.Core);
|
||||
@ -460,7 +500,6 @@ namespace ENI2.DetailViewControls
|
||||
this.mssd.Activate(); // bring to foreground
|
||||
this.mssd.AddMessages(watchList);
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
private void contextResetMessage(object sender, RoutedEventArgs e)
|
||||
@ -531,7 +570,42 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private void buttonSendPDF_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
SelectImportClassesDialog sicd = new SelectImportClassesDialog();
|
||||
sicd.Messages = this.Messages;
|
||||
sicd.IsTransit = this.Core.IsTransit;
|
||||
if ((sicd.ShowDialog() ?? false) && (sicd.SelectedClasses.Count > 0))
|
||||
{
|
||||
string preferredFileName = string.Format("{0}_{1}.pdf", this.Core.Shipname, this.Core.DisplayId);
|
||||
// get here if user selected some classes
|
||||
SaveFileDialog sfd = new SaveFileDialog
|
||||
{
|
||||
Filter = "PDF Files|*.pdf",
|
||||
FileName = preferredFileName
|
||||
};
|
||||
if (sfd.ShowDialog() ?? false)
|
||||
{
|
||||
Util.UIHelper.SetBusyState();
|
||||
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
|
||||
if (rm.Create(sfd.FileName, this.Core, sicd.SelectedClasses, out string importResultText))
|
||||
{
|
||||
MessageBox.Show("Report created: " + sfd.FileName, "Success", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||
// Clipboard.SetText(sfd.FileName);
|
||||
Process.Start(sfd.FileName);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show(importResultText, "PDF create failed", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonQueryHIS_Click(object sender, RoutedEventArgs e)
|
||||
@ -559,6 +633,16 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
#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)
|
||||
{
|
||||
bool? statusFlag = DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).GetMessageCoreQueryStatusFlag(this.Core.Id.Value);
|
||||
@ -652,49 +736,6 @@ namespace ENI2.DetailViewControls
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonCreatePDF_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
bool cannotCreateReport = false;
|
||||
|
||||
for (int i = 0; i < this.Messages.Count; i++)
|
||||
{
|
||||
Message selectedMessage = this.Messages[i];
|
||||
|
||||
// 28.3. Diese Nachrichten sollten dabei nicht geprüft werden.. immer diese Spezialfälle
|
||||
if ((selectedMessage.MessageNotificationClass == Message.NotificationClass.VISIT) ||
|
||||
(selectedMessage.MessageNotificationClass == Message.NotificationClass.TRANSIT) ||
|
||||
(selectedMessage.MessageNotificationClass == Message.NotificationClass.CREWD) ||
|
||||
(selectedMessage.MessageNotificationClass == Message.NotificationClass.PASD) ||
|
||||
(selectedMessage.MessageNotificationClass == Message.NotificationClass.STO)) continue;
|
||||
|
||||
if ((selectedMessage.InternalStatus == Message.BSMDStatus.SENT) || (selectedMessage.InternalStatus == Message.BSMDStatus.TOSEND))
|
||||
{
|
||||
cannotCreateReport = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (cannotCreateReport)
|
||||
{
|
||||
MessageBox.Show("Cannot create report: some messages still in status TOSEND / SENT", Properties.Resources.textCaptionError, MessageBoxButton.OK, MessageBoxImage.Exclamation);
|
||||
return;
|
||||
}
|
||||
|
||||
for (int i = 0; i < this.dataGridMessages.SelectedItems.Count; i++)
|
||||
{
|
||||
Message selectedMessage = this.dataGridMessages.SelectedItems[i] as Message;
|
||||
selectedMessage.LastStatus = selectedMessage.InternalStatus;
|
||||
selectedMessage.InternalStatus = Message.BSMDStatus.REPORT;
|
||||
selectedMessage.ReportingPartyId = App.UserId; // wichtig damit der Richtige(!) die Mail mit dem PDF bekommt
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(selectedMessage);
|
||||
}
|
||||
|
||||
|
||||
this.Core.ReportStatus = MessageCore.ReportStatusEnum.SINGLE;
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(this.Core);
|
||||
this.dataGridMessages.Items.Refresh();
|
||||
}
|
||||
|
||||
private void buttonSystemErrors_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (this.dataGridMessages.SelectedItems.Count > 0)
|
||||
@ -710,18 +751,155 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private void buttonValidate_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.OnRequestValidate();
|
||||
this.OnRequestValidate(true);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region mouse wheel
|
||||
|
||||
private void ScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
|
||||
/// <summary>
|
||||
/// update class fields from named excel sheet
|
||||
/// </summary>
|
||||
private void buttonExcelImport_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
ScrollViewer scv = (ScrollViewer)sender;
|
||||
scv.ScrollToVerticalOffset(scv.VerticalOffset - e.Delta);
|
||||
e.Handled = true;
|
||||
SelectImportClassesDialog sicd = new SelectImportClassesDialog();
|
||||
sicd.IsTransit = this.Core.IsTransit;
|
||||
sicd.Messages = this.Messages;
|
||||
if((sicd.ShowDialog() ?? false) && (sicd.SelectedClasses.Count > 0))
|
||||
{
|
||||
// get here if user selected some classes
|
||||
OpenFileDialog ofd = new OpenFileDialog
|
||||
{
|
||||
Filter = "Excel Files|*.xls;*.xlsx"
|
||||
};
|
||||
if (ofd.ShowDialog() ?? false)
|
||||
{
|
||||
Util.UIHelper.SetBusyState();
|
||||
|
||||
ExcelManager em = new ExcelManager();
|
||||
// start importer
|
||||
if(em.Import(ofd.FileName, this.Core, sicd.SelectedClasses, out string importResultText))
|
||||
{
|
||||
// reload this core
|
||||
this.OnRequestReload(this.Core.Id.Value);
|
||||
|
||||
// validate all selected import classes (Finger with "selection")
|
||||
this.OnRequestValidate(true);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show(importResultText, "Import failed", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// export all classes to excel reference sheet
|
||||
/// </summary>
|
||||
private void buttonExcelExport_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
string filename = string.Format("{0}_{1}_ref.xlsx", this.Core.Shipname, this.Core.DisplayId);
|
||||
this.ExportData(filename, true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Export all classes in "new" sheet version (>= 7.0).. this to return the current format to the ships
|
||||
/// </summary>
|
||||
private void buttonFormblattNeu_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
string filename = string.Format("{0}_EU-NoAD-Data-Collecting-Tool-5_0.xlsx", this.Core.Shipname);
|
||||
this.ExportData(filename, false);
|
||||
}
|
||||
|
||||
private void ExportData(string filename, bool isRefSheet)
|
||||
{
|
||||
SaveFileDialog sfd = new SaveFileDialog()
|
||||
{
|
||||
Filter = "Excel Files|*.xls;*.xlsx",
|
||||
FileName = filename
|
||||
};
|
||||
if (sfd.ShowDialog() ?? false)
|
||||
{
|
||||
Util.UIHelper.SetBusyState();
|
||||
ExcelManager em = new ExcelManager();
|
||||
|
||||
try
|
||||
{
|
||||
em.Export(sfd.FileName, this.Core, this.Messages, out string resultMessage, isRefSheet);
|
||||
MessageBox.Show("Exported " + sfd.FileName, "Export successful", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||
Process.Start(sfd.FileName);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "Export failed", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonSendAll_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
SelectImportClassesDialog sicd = new SelectImportClassesDialog();
|
||||
List<Message.NotificationClass> readyToSendMessages = new List<Message.NotificationClass>();
|
||||
|
||||
// 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
|
||||
|
||||
@ -13,48 +13,48 @@
|
||||
d:DesignHeight="800" d:DesignWidth="1024">
|
||||
<GroupBox Name="groupBoxPre72H" Header="{x:Static p:Resources.textPre72hGroupBox}">
|
||||
<ScrollViewer PreviewMouseWheel="ScrollViewer_PreviewMouseWheel">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="102" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="102" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Label Content="{x:Static p:Resources.textTanker}" Grid.Column="0" Grid.Row="0" HorizontalContentAlignment="Right" Margin="0,0,10,0"/>
|
||||
<CheckBox Name="checkBoxTanker" IsChecked="{Binding Tanker}" Grid.Row="0" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<Label Content="{x:Static p:Resources.textTankerHullConfig}" Grid.Column="0" Grid.Row="1" HorizontalContentAlignment="Right" Margin="0,0,10,0"/>
|
||||
<ComboBox Grid.Row="1" Grid.Column="1" Name="comboBoxTankerHullConfig" Margin="2" SelectedIndex="{Binding TankerHullConfiguration, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, Converter={util:ByteConverter}}" IsEnabled="{Binding ElementName=checkBoxTanker, Path=IsChecked}" ContextMenu="{DynamicResource ClearContextMenu}"/>
|
||||
<Label Content="{x:Static p:Resources.textTankerCondition}" Grid.Column="0" Grid.Row="2" HorizontalContentAlignment="Right" Margin="0,0,10,0"/>
|
||||
<ComboBox Grid.Row="2" Grid.Column="1" Name="comboBoxConditionCargoBallastTanks" Margin="2" SelectedIndex="{Binding ConditionCargoBallastTanks, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, Converter={util:ByteConverter}}" IsEnabled="{Binding ElementName=checkBoxTanker, Path=IsChecked}" ContextMenu="{DynamicResource ClearContextMenu}"/>
|
||||
<Label Content="{x:Static p:Resources.textTankerNatureOfCargo}" Grid.Column="0" Grid.Row="3" HorizontalContentAlignment="Right" Margin="0,0,10,0"/>
|
||||
<TextBox Text="{Binding NatureOfCargo, Mode=TwoWay}" Name="textBoxNatureOfCargo" Grid.Column="1" Grid.Row="3" Margin="2,2,2,2" IsEnabled="{Binding ElementName=checkBoxTanker, Path=IsChecked}" VerticalContentAlignment="Center" MaxLength="99" />
|
||||
<Label Content="{x:Static p:Resources.textTankerVolumeOfCargo}" Grid.Column="0" Grid.Row="4" HorizontalContentAlignment="Right" Margin="0,0,10,0"/>
|
||||
<xctk:DoubleUpDown Grid.Row="4" Grid.Column="1" Name="doubleUpDownVolumeOfCargo" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2,2,2,2" FormatString="N3" Value="{Binding VolumeOfCargo, Mode=TwoWay}" IsEnabled="{Binding ElementName=checkBoxTanker, Path=IsChecked}" TextAlignment="Left"/>
|
||||
<Label Content="{x:Static p:Resources.textPlannedOperations}" Grid.Column="0" Grid.Row="5" HorizontalContentAlignment="Right" Margin="0,0,10,0"/>
|
||||
<TextBox Text="{Binding PlannedOperations, Mode=TwoWay}" Name="textBoxPlannedOperations" Grid.Column="1" Grid.Row="5" Margin="2,2,2,2" VerticalContentAlignment="Center" MaxLength="99"/>
|
||||
<Label Content="{x:Static p:Resources.textPlannedInspection}" Grid.Column="0" Grid.Row="6" HorizontalContentAlignment="Right" Margin="0,0,10,0"/>
|
||||
<TextBox Text="{Binding PlannedWorks, Mode=TwoWay}" Name="textBoxPlannedWorks" Grid.Column="1" Grid.Row="6" Margin="2,2,2,2" MaxLength="255" />
|
||||
<Label Content="{x:Static p:Resources.textLastExpandedInspection }" Grid.Column="0" Grid.Row="7" HorizontalContentAlignment="Right" Margin="0,0,10,0"/>
|
||||
<Label Content="{x:Static p:Resources.textTanker}" Grid.Column="0" Grid.Row="0" HorizontalContentAlignment="Right" Margin="0,0,10,0"/>
|
||||
<CheckBox Name="checkBoxTanker" IsChecked="{Binding Tanker}" Grid.Row="0" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<Label Content="{x:Static p:Resources.textTankerHullConfig}" Grid.Column="0" Grid.Row="1" HorizontalContentAlignment="Right" Margin="0,0,10,0"/>
|
||||
<ComboBox Grid.Row="1" Grid.Column="1" Name="comboBoxTankerHullConfig" Margin="2" SelectedIndex="{Binding TankerHullConfiguration, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, Converter={util:ByteConverter}}" IsEnabled="{Binding ElementName=checkBoxTanker, Path=IsChecked}" ContextMenu="{DynamicResource ClearContextMenu}"/>
|
||||
<Label Content="{x:Static p:Resources.textTankerCondition}" Grid.Column="0" Grid.Row="2" HorizontalContentAlignment="Right" Margin="0,0,10,0"/>
|
||||
<ComboBox Grid.Row="2" Grid.Column="1" Name="comboBoxConditionCargoBallastTanks" Margin="2" SelectedIndex="{Binding ConditionCargoBallastTanks, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, Converter={util:ByteConverter}}" IsEnabled="{Binding ElementName=checkBoxTanker, Path=IsChecked}" ContextMenu="{DynamicResource ClearContextMenu}"/>
|
||||
<Label Content="{x:Static p:Resources.textTankerNatureOfCargo}" Grid.Column="0" Grid.Row="3" HorizontalContentAlignment="Right" Margin="0,0,10,0"/>
|
||||
<TextBox Text="{Binding NatureOfCargo, Mode=TwoWay, Converter={util:TrimStringConverter}}" Name="textBoxNatureOfCargo" Grid.Column="1" Grid.Row="3" Margin="2,2,2,2" IsEnabled="{Binding ElementName=checkBoxTanker, Path=IsChecked}" VerticalContentAlignment="Center" MaxLength="99" />
|
||||
<Label Content="{x:Static p:Resources.textTankerVolumeOfCargo}" Grid.Column="0" Grid.Row="4" HorizontalContentAlignment="Right" Margin="0,0,10,0"/>
|
||||
<xctk:DoubleUpDown Grid.Row="4" Grid.Column="1" Name="doubleUpDownVolumeOfCargo" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2,2,2,2" FormatString="N3" Value="{Binding VolumeOfCargo, Mode=TwoWay}" IsEnabled="{Binding ElementName=checkBoxTanker, Path=IsChecked}" TextAlignment="Left"/>
|
||||
<Label Content="{x:Static p:Resources.textPlannedOperations}" Grid.Column="0" Grid.Row="5" HorizontalContentAlignment="Right" Margin="0,0,10,0"/>
|
||||
<TextBox Text="{Binding PlannedOperations, Mode=TwoWay, Converter={util:TrimStringConverter}}" Name="textBoxPlannedOperations" Grid.Column="1" Grid.Row="5" Margin="2,2,2,2" VerticalContentAlignment="Center" MaxLength="99"/>
|
||||
<Label Content="{x:Static p:Resources.textPlannedInspection}" Grid.Column="0" Grid.Row="6" HorizontalContentAlignment="Right" Margin="0,0,10,0"/>
|
||||
<TextBox Text="{Binding PlannedWorks, Mode=TwoWay, Converter={util:TrimStringConverter}}" Name="textBoxPlannedWorks" Grid.Column="1" Grid.Row="6" Margin="2,2,2,2" MaxLength="255" />
|
||||
<Label Content="{x:Static p:Resources.textLastExpandedInspection }" Grid.Column="0" Grid.Row="7" HorizontalContentAlignment="Right" Margin="0,0,10,0"/>
|
||||
<DatePicker Grid.Column="1" Grid.Row="7" Name="datePickerLastExpandedInspection" VerticalAlignment="Center" SelectedDate="{Binding DateOfLastExpandedInspection, Mode=TwoWay}" Margin="2,2,2,2" DisplayDateStart="1/1/1900" DisplayDateEnd="12/31/2199" PreviewKeyUp="DateTimePicker_PreviewKeyUpDate">
|
||||
<DatePicker.BlackoutDates>
|
||||
<CalendarDateRange Start="1/1/0001" End="12/31/1799"/>
|
||||
<CalendarDateRange Start="1/1/2199" End="1/1/9999"/>
|
||||
</DatePicker.BlackoutDates>
|
||||
</DatePicker>
|
||||
<Label Content="{x:Static p:Resources.textPlannedPeriodOfStay}" Grid.Column="0" Grid.Row="8" HorizontalContentAlignment="Right" Margin="0,0,10,0"/>
|
||||
<xctk:DoubleUpDown Grid.Row="8" Grid.Column="1" Name="doubleUpDownPlannedPeriodOfStay" Value="{Binding PlannedPeriodOfStay_HUR, Mode=TwoWay}" FormatString="N2" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2,2,2,2" TextAlignment="Left"/>
|
||||
</Grid>
|
||||
<Label Content="{x:Static p:Resources.textPlannedPeriodOfStay}" Grid.Column="0" Grid.Row="8" HorizontalContentAlignment="Right" Margin="0,0,10,0"/>
|
||||
<xctk:DoubleUpDown Grid.Row="8" Grid.Column="1" Name="doubleUpDownPlannedPeriodOfStay" Value="{Binding PlannedPeriodOfStay_HUR, Mode=TwoWay}" FormatString="N2" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2,2,2,2" TextAlignment="Left"/>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</GroupBox>
|
||||
</src:DetailBaseControl>
|
||||
|
||||
@ -18,13 +18,13 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private Message _pre72hMessage;
|
||||
|
||||
private static string[] hullConfiguration = {
|
||||
private static readonly string[] hullConfiguration = {
|
||||
Properties.Resources.textSingleHull,
|
||||
Properties.Resources.textSingleHullBallast,
|
||||
Properties.Resources.textDoubleHull
|
||||
};
|
||||
|
||||
private static string[] conditionCargoTanks =
|
||||
private static readonly string[] conditionCargoTanks =
|
||||
{
|
||||
Properties.Resources.textFull,
|
||||
Properties.Resources.textEmpty,
|
||||
@ -116,18 +116,7 @@ namespace ENI2.DetailViewControls
|
||||
HighlightService.HighlightControl(this.groupBoxPre72H, HighlightService.HighlightStyle.VIOLATION, this._pre72hMessage);
|
||||
}
|
||||
|
||||
#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
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="600" d:DesignWidth="800">
|
||||
<GroupBox Name="portCallGroupBox" Header="{x:Static p:Resources.textPortCall}">
|
||||
<ScrollViewer PreviewMouseWheel="ScrollViewer_PreviewMouseWheel">
|
||||
<ScrollViewer>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="300" />
|
||||
@ -47,7 +47,7 @@
|
||||
<xctk:DateTimePicker Grid.Column="3" Grid.Row="0" Value="{Binding ETDFromPortOfCall, Mode=TwoWay, Converter={util:UtcToLocalDateTimeConverter}}" Name="dateTimePicker_ETDFromPortOfCall" 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.Column="1" Grid.Row="1" Value="{Binding ETAToKielCanal, Mode=TwoWay, Converter={util:UtcToLocalDateTimeConverter}}" Name="dateTimePicker_ETAToKielCanal" 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.Column="3" Grid.Row="1" Value="{Binding ETDFromKielCanal, Mode=TwoWay, Converter={util:UtcToLocalDateTimeConverter}}" Name="dateTimePicker_ETDFromKielCanal" 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"/>
|
||||
<enictrl:LocodeControl Grid.Column="1" Grid.Row="2" Width="Auto" x:Name="locodeControl_LastPort" LocodeValue="{Binding LastPort, Mode=TwoWay}"/>
|
||||
<enictrl:LocodeControl Grid.Column="1" Grid.Row="2" Width="Auto" x:Name="locodeControl_LastPort" LocodeValue="{Binding LastPort, Mode=TwoWay}" LocodeSource="SSN" />
|
||||
<xctk:DateTimePicker Grid.Column="3" Grid.Row="2" Value="{Binding ETDFromLastPort, Mode=TwoWay, Converter={util:UtcToLocalDateTimeConverter}}" Name="dateTimePicker_ETDFromLastPort" 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"/>
|
||||
<enictrl:LocodeControl Grid.Column="1" Grid.Row="3" Width="Auto" x:Name="locodeControl_NextPort" LocodeValue="{Binding NextPort, Mode=TwoWay}" LocodeSource="SSN" />
|
||||
<xctk:DateTimePicker Grid.Column="3" Grid.Row="3" Value="{Binding ETAToNextPort, Mode=TwoWay, Converter={util:UtcToLocalDateTimeConverter}}" Name="dateTimePicker_ETAToNextPort" 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"/>
|
||||
@ -92,22 +92,24 @@
|
||||
<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="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="7" Grid.Column="2" Content="{x:Static p:Resources.textFax}" Name="label_AgentFax" 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="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="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" />
|
||||
|
||||
<TextBox Grid.Row="0" Grid.Column="1" Name="textBox_AgentCompanyName" MaxLength="99" Margin="2" Text="{Binding AgentCompanyName}" VerticalContentAlignment="Center"/>
|
||||
<TextBox Grid.Row="1" Grid.Column="1" Name="textBox_AgentStreetAndNumber" MaxLength="99" Margin="2" Text="{Binding AgentStreetAndNumber}" VerticalContentAlignment="Center"/>
|
||||
<TextBox Grid.Row="2" Grid.Column="1" Name="textBox_AgentPostalCode" MaxLength="99" Margin="2" Text="{Binding AgentPostalCode}" VerticalContentAlignment="Center"/>
|
||||
<TextBox Grid.Row="3" Grid.Column="3" Name="textBox_AgentCity" MaxLength="99" Margin="2" Text="{Binding AgentCity}" VerticalContentAlignment="Center"/>
|
||||
<TextBox Grid.Row="3" Grid.Column="1" Name="textBox_AgentCountry" MaxLength="99" Margin="2" Text="{Binding AgentCountry}" VerticalContentAlignment="Center" />
|
||||
<TextBox Grid.Row="5" Grid.Column="1" Name="textBox_AgentLastName" MaxLength="99" Margin="2" Text="{Binding AgentLastName}" VerticalContentAlignment="Center"/>
|
||||
<TextBox Grid.Row="6" Grid.Column="3" Name="textBox_AgentFirstName" MaxLength="99" Margin="2" Text="{Binding AgentFirstName}" VerticalContentAlignment="Center"/>
|
||||
<TextBox Grid.Row="6" Grid.Column="1" Name="textBox_AgentPhone" MaxLength="99" Margin="2" Text="{Binding AgentPhone}" VerticalContentAlignment="Center"/>
|
||||
<TextBox Grid.Row="7" Grid.Column="3" Name="textBox_AgentFax" MaxLength="99" Margin="2" Text="{Binding AgentFax}" VerticalContentAlignment="Center"/>
|
||||
<TextBox Grid.Row="7" Grid.Column="1" Name="textBox_AgentEMail" MaxLength="99" Margin="2" Text="{Binding AgentEMail}" VerticalContentAlignment="Center"/>
|
||||
<TextBox Grid.Row="0" Grid.Column="1" Name="textBox_AgentCompanyName" MaxLength="99" Margin="2" Text="{Binding AgentCompanyName, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
|
||||
<TextBox Grid.Row="1" Grid.Column="1" Name="textBox_AgentStreetAndNumber" MaxLength="99" Margin="2" Text="{Binding AgentStreetAndNumber, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center"/>
|
||||
<TextBox Grid.Row="2" Grid.Column="1" Name="textBox_AgentPostalCode" MaxLength="99" Margin="2" Text="{Binding AgentPostalCode, 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="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="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="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="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" />
|
||||
<Grid Grid.Column="2" Grid.Row="1" HorizontalAlignment="Right">
|
||||
|
||||
@ -25,6 +25,7 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private NOA_NOD _noa_nod;
|
||||
private AGNT _agnt;
|
||||
private WAS _was;
|
||||
private static List<AGNT_Template> _agntTemplates = null;
|
||||
private AGNT_Template _currentTemplate;
|
||||
private AGNT_Template _undoTemplate;
|
||||
@ -67,9 +68,15 @@ namespace ENI2.DetailViewControls
|
||||
this.RegisterTextboxChange(this.textBox_AgentPostalCode, Message.NotificationClass.AGNT);
|
||||
this.RegisterTextboxChange(this.textBox_AgentStreetAndNumber, 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.buttonDeleteTemplate.IsEnabled = DBManager.Instance.GetReportingPartyDict()[App.UserId.Value].IsEditor;
|
||||
}
|
||||
|
||||
public override void Initialize()
|
||||
public async override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
@ -92,6 +99,16 @@ namespace ENI2.DetailViewControls
|
||||
_agnt = new AGNT();
|
||||
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;
|
||||
@ -108,7 +125,7 @@ namespace ENI2.DetailViewControls
|
||||
this.dataGridCallPurposes.EditRequested += DataGridCallPurposes_EditRequested;
|
||||
this.dataGridCallPurposes.AddingNewItem += DataGridCallPurposes_AddingNewItem;
|
||||
this.dataGridCallPurposes.CreateRequested += DataGridCallPurposes_CreateRequested;
|
||||
this.dataGridCallPurposes.DeleteRequested += DataGridCallPurposes_DeleteRequested;
|
||||
this.dataGridCallPurposes.DeleteRequested += DataGridCallPurposes_DeleteRequested;
|
||||
|
||||
|
||||
this.agentGroupBox.DataContext = _agnt;
|
||||
@ -120,11 +137,13 @@ namespace ENI2.DetailViewControls
|
||||
this.dateTimePicker_ETDFromLastPort.DataContext = _noa_nod;
|
||||
this.dateTimePicker_ETDFromPortOfCall.DataContext = _noa_nod;
|
||||
|
||||
this.textBox_WasteDisposalServiceProvider.DataContext = _was;
|
||||
|
||||
this.checkBox_IsAnchored.IsEnabled = this.Core.IsDK;
|
||||
|
||||
if(_agntTemplates == null)
|
||||
{
|
||||
_agntTemplates = DBManager.Instance.GetAGNTTemplates(); // inital full load
|
||||
_agntTemplates = await DBManagerAsync.GetAGNTTemplatesAsync(); // inital full load
|
||||
_agntTemplates.Sort();
|
||||
Trace.WriteLine(string.Format("{0} agent templates loaded", _agntTemplates.Count));
|
||||
}
|
||||
@ -138,8 +157,7 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private void DataGridCallPurposes_DeleteRequested(DatabaseEntity obj)
|
||||
{
|
||||
CallPurpose cp = obj as CallPurpose;
|
||||
if (cp != null)
|
||||
if (obj is CallPurpose cp)
|
||||
{
|
||||
// are you sure dialog is in base class
|
||||
_noa_nod.CallPurposes.Remove(cp);
|
||||
@ -151,7 +169,7 @@ namespace ENI2.DetailViewControls
|
||||
}
|
||||
|
||||
private void DataGridCallPurposes_CreateRequested()
|
||||
{
|
||||
{
|
||||
EditCallPurposeDialog ecpd = new EditCallPurposeDialog();
|
||||
ecpd.AddClicked += () =>
|
||||
{
|
||||
@ -240,32 +258,20 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
#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
|
||||
|
||||
private void comboBox_AgentTemplate_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
Trace.WriteLine("combo selection changed");
|
||||
AGNT_Template at = this.comboBox_AgentTemplate.SelectedItem as AGNT_Template;
|
||||
if(at != null)
|
||||
if (this.comboBox_AgentTemplate.SelectedItem is AGNT_Template at)
|
||||
{
|
||||
this.textBoxTemplateTitle.Text = at.AgentTitle;
|
||||
this.buttonDeleteTemplate.IsEnabled = true;
|
||||
this.buttonDeleteTemplate.IsEnabled = true;
|
||||
this.buttonSetTemplate.IsEnabled = true;
|
||||
this._currentTemplate = at;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonDeleteTemplate_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
@ -278,7 +284,7 @@ namespace ENI2.DetailViewControls
|
||||
DBManager.Instance.Delete(_currentTemplate);
|
||||
_agntTemplates.Remove(_currentTemplate);
|
||||
this.textBoxTemplateTitle.Text = null;
|
||||
this.buttonDeleteTemplate.IsEnabled = false;
|
||||
this.buttonDeleteTemplate.IsEnabled = false;
|
||||
this.comboBox_AgentTemplate.ItemsSource = _agntTemplates;
|
||||
this.buttonSetTemplate.IsEnabled = false;
|
||||
}
|
||||
@ -308,21 +314,21 @@ namespace ENI2.DetailViewControls
|
||||
{
|
||||
if (MessageBox.Show("A template with this name already exists, overwrite?", "Confirmation", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.No) == MessageBoxResult.No)
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
this._currentTemplate = createFromCurrentText(title, existingTemplate);
|
||||
DBManager.Instance.Save(this._currentTemplate);
|
||||
|
||||
DBManager.Instance.Save(this._currentTemplate);
|
||||
|
||||
if(existingTemplate == null)
|
||||
{
|
||||
comboBox_AgentTemplate.ItemsSource = null;
|
||||
_agntTemplates.Add(this._currentTemplate);
|
||||
_agntTemplates.Sort();
|
||||
comboBox_AgentTemplate.ItemsSource = _agntTemplates;
|
||||
}
|
||||
}
|
||||
|
||||
MessageBox.Show("Template saved", "OK", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonUndoTemplate_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
@ -347,14 +353,23 @@ namespace ENI2.DetailViewControls
|
||||
this.textBox_AgentPostalCode.GetBindingExpression(TextBox.TextProperty).UpdateSource();
|
||||
this.textBox_AgentStreetAndNumber.Text = this._undoTemplate.AgentStreetAndNumber;
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonSetTemplate_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
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.textBox_AgentCity.Text = this._currentTemplate.AgentCity;
|
||||
@ -366,7 +381,7 @@ namespace ENI2.DetailViewControls
|
||||
this.textBox_AgentEMail.Text = this._currentTemplate.AgentEMail;
|
||||
this.textBox_AgentEMail.GetBindingExpression(TextBox.TextProperty).UpdateSource();
|
||||
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.GetBindingExpression(TextBox.TextProperty).UpdateSource();
|
||||
this.textBox_AgentLastName.Text = this._currentTemplate.AgentLastName;
|
||||
@ -377,6 +392,11 @@ namespace ENI2.DetailViewControls
|
||||
this.textBox_AgentPostalCode.GetBindingExpression(TextBox.TextProperty).UpdateSource();
|
||||
this.textBox_AgentStreetAndNumber.Text = this._currentTemplate.AgentStreetAndNumber;
|
||||
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.buttonSetTemplate.IsEnabled = false;
|
||||
@ -390,7 +410,7 @@ namespace ENI2.DetailViewControls
|
||||
AGNT_Template at = new AGNT_Template();
|
||||
if (existingTemplate != null)
|
||||
at = existingTemplate;
|
||||
|
||||
|
||||
at.AgentTitle = title;
|
||||
at.AgentCity = this.textBox_AgentCity.Text;
|
||||
at.AgentCompanyName = this.textBox_AgentCompanyName.Text;
|
||||
@ -402,6 +422,7 @@ namespace ENI2.DetailViewControls
|
||||
at.AgentPhone = this.textBox_AgentPhone.Text;
|
||||
at.AgentPostalCode = this.textBox_AgentPostalCode.Text;
|
||||
at.AgentStreetAndNumber = textBox_AgentStreetAndNumber.Text;
|
||||
at.WasteDisposalServiceProviderName = textBox_WasteDisposalServiceProvider.Text;
|
||||
|
||||
return at;
|
||||
}
|
||||
|
||||
@ -19,96 +19,171 @@
|
||||
<col:DictionaryEntry Key="SeaGo BHV" Value="2" />
|
||||
<col:DictionaryEntry Key="SeaGo WHV" Value="4" />
|
||||
<col:DictionaryEntry Key="Hoegh BHV" Value="8" />
|
||||
<col:DictionaryEntry Key="Elbe Bulk" Value="16" />
|
||||
<col:DictionaryEntry Key="Fct Junge" Value="32" />
|
||||
</col:ArrayList>
|
||||
</UserControl.Resources>
|
||||
<GroupBox Name="portNotificationGroupBox" Header="{x:Static p:Resources.textPortNotification}">
|
||||
<ScrollViewer PreviewMouseWheel="ScrollViewer_PreviewMouseWheel">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="50" />
|
||||
<RowDefinition Height="220" />
|
||||
<RowDefinition Height="200" />
|
||||
<RowDefinition Height="200" />
|
||||
</Grid.RowDefinitions>
|
||||
<GroupBox Name="nameGroupBox" Header="{x:Static p:Resources.textMaster}" Grid.Row="0">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="5*" />
|
||||
</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"/>
|
||||
<TextBox Grid.Row="0" Grid.Column="1" Name="textBox_NameMaster" MaxLength="100" Margin="2" Text="{Binding NameOfMaster}" VerticalContentAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
<GroupBox Name="infoGroupBox" Header="{x:Static p:Resources.textInfo}" Grid.Row="1" Margin="0,5,0,5">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="2*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="2*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="26" />
|
||||
<RowDefinition Height="26" />
|
||||
<RowDefinition Height="26" />
|
||||
<RowDefinition Height="26" />
|
||||
<RowDefinition Height="26" />
|
||||
<RowDefinition Height="26" />
|
||||
<RowDefinition Height="26" />
|
||||
</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="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="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="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="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="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="4" 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="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}" />
|
||||
<TextBox Grid.Row="2" Grid.Column="1" Name="textRequestedPostionInPortOfCall" Margin="2" Text="{Binding RequestedPositionInPortOfCall}" VerticalContentAlignment="Center"/>
|
||||
<TextBox Grid.Row="3" Grid.Column="1" Name="textBowThrusterPower" Margin="2" Text="{Binding BowThrusterPower}" VerticalContentAlignment="Center"/>
|
||||
<TextBox Grid.Row="4" Grid.Column="1" Name="textSternThrusterPower" Margin="2" Text="{Binding SternThrusterPower}" VerticalContentAlignment="Center"/>
|
||||
<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"/>
|
||||
<TextBox Grid.Row="2" Grid.Column="3" Grid.RowSpan="2" Name="textSpecialRequirements" Margin="2" Text="{Binding SpecialRequirementsOfShipAtBerth}" VerticalContentAlignment="Center"/>
|
||||
<TextBox Grid.Row="4" Grid.Column="3" Grid.RowSpan="2" Name="textConstructionCharacteristics" Margin="2" Text="{Binding ConstructionCharacteristicsOfShip}" VerticalContentAlignment="Center"/>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
<GroupBox Name="servGroupBox" Header="{x:Static p:Resources.textServ}" Grid.Row="2">
|
||||
<enictrl:ENIDataGrid x:Name="dataGridSERV" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
||||
AutoGenerateColumns="False" Margin="0,5,0,0">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="" Binding="{Binding Identifier}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textServiceName}" Binding="{Binding ServiceName, Mode=TwoWay}" IsReadOnly="True" Width="0.3*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textServiceBeneficiary}" Binding="{Binding ServiceBeneficiary, Mode=TwoWay}" IsReadOnly="True" Width="0.3*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textServiceInvoiceRecipient}" Binding="{Binding ServiceInvoiceRecipient, Mode=TwoWay}" IsReadOnly="True" Width="0.4*" />
|
||||
</DataGrid.Columns>
|
||||
</enictrl:ENIDataGrid>
|
||||
<ScrollViewer>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="50" />
|
||||
<RowDefinition Height="194" />
|
||||
<RowDefinition Height="200" />
|
||||
<RowDefinition Height="200" />
|
||||
</Grid.RowDefinitions>
|
||||
<GroupBox Name="nameGroupBox" Header="{x:Static p:Resources.textMaster}" Grid.Row="0">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="4*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
</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"/>
|
||||
<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>
|
||||
</GroupBox>
|
||||
<GroupBox Name="infoGroupBox" Header="{x:Static p:Resources.textInfo}" Grid.Row="1" Margin="0,5,0,5">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="2*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="2*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="26" />
|
||||
<RowDefinition Height="26" />
|
||||
<RowDefinition Height="26" />
|
||||
<RowDefinition Height="26" />
|
||||
<RowDefinition Height="26" />
|
||||
<RowDefinition Height="26" />
|
||||
</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="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="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="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="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="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="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}" />
|
||||
|
||||
<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="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"/>
|
||||
<CheckBox Grid.Row="5" Grid.Column="1" Name="checkBoxFumigatedBulkCargo" VerticalContentAlignment="Center" IsChecked="{Binding FumigatedBulkCargoBool, Mode=TwoWay}" Margin="2"/>
|
||||
<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="1" Grid.Column="3" Grid.RowSpan="2" Name="textSpecialRequirements" Margin="2" Text="{Binding SpecialRequirementsOfShipAtBerth, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Top" />
|
||||
<TextBox Grid.Row="3" Grid.Column="3" Grid.RowSpan="2" Name="textConstructionCharacteristics" Margin="2" Text="{Binding ConstructionCharacteristicsOfShip, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Top"/>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
<GroupBox Name="servGroupBox" Header="{x:Static p:Resources.textServ}" Grid.Row="2">
|
||||
<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>
|
||||
|
||||
</GroupBox>
|
||||
<GroupBox Name="ladgGroupBox" Header="{x:Static p:Resources.textLadg}" Grid.Row="3">
|
||||
<enictrl:ENIDataGrid x:Name="dataGridLADG" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
||||
</Grid>
|
||||
<enictrl:ENIDataGrid Grid.Row="1" x:Name="dataGridSERV" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
||||
AutoGenerateColumns="False" Margin="0,5,0,0">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="" Binding="{Binding Identifier}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textCargoHandlingType}" Binding="{Binding CargoHandlingTypeDisplay}" IsReadOnly="True" Width="0.15*" />
|
||||
<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.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.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*" />
|
||||
</DataGrid.Columns>
|
||||
</enictrl:ENIDataGrid>
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="" Binding="{Binding Identifier}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textServiceName}" Binding="{Binding ServiceName, Mode=TwoWay}" IsReadOnly="True" Width="0.3*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textServiceBeneficiary}" Binding="{Binding ServiceBeneficiary, Mode=TwoWay}" IsReadOnly="True" Width="0.3*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textServiceInvoiceRecipient}" Binding="{Binding ServiceInvoiceRecipient, Mode=TwoWay}" IsReadOnly="True" Width="0.4*" />
|
||||
</DataGrid.Columns>
|
||||
</enictrl:ENIDataGrid>
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
<GroupBox Name="ladgGroupBox" Header="{x:Static p:Resources.textLadg}" Grid.Row="3">
|
||||
<enictrl:ENIDataGrid x:Name="dataGridLADG" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
||||
AutoGenerateColumns="False" Margin="0,5,0,0">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="" Binding="{Binding Identifier}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textCargoHandlingType}" Binding="{Binding CargoHandlingTypeDisplay}" IsReadOnly="True" Width="0.15*" />
|
||||
<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.textCargoCodeNST3}" Binding="{Binding CargoCodeNST_3, Mode=TwoWay}" IsReadOnly="True" Width="0.15*" />
|
||||
|
||||
</GroupBox>
|
||||
</Grid>
|
||||
<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.textCargoPortOfDischarge}" Binding="{Binding PortOfDischarge, Mode=TwoWay}" IsReadOnly="True" Width="0.15*" />
|
||||
</DataGrid.Columns>
|
||||
</enictrl:ENIDataGrid>
|
||||
|
||||
</GroupBox>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</GroupBox>
|
||||
</src:DetailBaseControl>
|
||||
|
||||
@ -1,4 +1,6 @@
|
||||
// Copyright (c) 2017 schick Informatik
|
||||
// Copyright (c) 2017- schick Informatik
|
||||
// Description:
|
||||
//
|
||||
|
||||
// Description: Detailansicht Gruppe Port Notification
|
||||
//
|
||||
@ -6,6 +8,7 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
|
||||
@ -13,6 +16,8 @@ using ENI2.EditControls;
|
||||
using ENI2.Util;
|
||||
|
||||
using bsmd.database;
|
||||
using System.Threading.Tasks;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace ENI2.DetailViewControls
|
||||
{
|
||||
@ -22,10 +27,18 @@ namespace ENI2.DetailViewControls
|
||||
public partial class PortNotificationDetailControl : DetailBaseControl
|
||||
{
|
||||
|
||||
#region Fields
|
||||
|
||||
private Message _nameMessage;
|
||||
private Message _infoMessage;
|
||||
private Message _servMessage;
|
||||
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 = {
|
||||
Properties.Resources.textShippingAreaNORTHBALTIC,
|
||||
@ -52,10 +65,10 @@ namespace ENI2.DetailViewControls
|
||||
this.RegisterDoubleUpDownChange(this.doubleUpDownDisplacementSummerDraught, Message.NotificationClass.INFO);
|
||||
this.RegisterTextboxChange(this.textSpecialRequirements, 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();
|
||||
|
||||
@ -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.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.CREWA) { this._crewaMessage = aMessage;}
|
||||
}
|
||||
|
||||
#region init NAME
|
||||
@ -109,11 +123,11 @@ namespace ENI2.DetailViewControls
|
||||
_infoMessage.Elements.Add(info);
|
||||
}
|
||||
|
||||
Dictionary<string, string> portAreas = LocalizedLookup.getPortAreasForLocode(this.Core.PoC);
|
||||
portAreas = LocalizedLookup.getPortAreasForLocode(this.Core.PoC);
|
||||
this.comboBoxPortArea.ItemsSource = portAreas;
|
||||
|
||||
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.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 (this.Core.IsFlagSet(MessageCore.CoreFlags.SEAGO_BHV)) this.comboBoxGroup.SelectedIndex = 2;
|
||||
if (this.Core.IsFlagSet(MessageCore.CoreFlags.SEAGO_WHV)) this.comboBoxGroup.SelectedIndex = 3;
|
||||
if (this.Core.IsFlagSet(MessageCore.CoreFlags.HOEGH)) this.comboBoxGroup.SelectedIndex = 4;
|
||||
if(_servTemplates == null)
|
||||
{
|
||||
_servTemplates = await DBManagerAsync.GetSERVTemplatesAsync(); // initial load
|
||||
_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
|
||||
|
||||
}
|
||||
|
||||
#region datagrid LADG
|
||||
|
||||
private void DataGridLADG_CreateRequested()
|
||||
{
|
||||
{
|
||||
this.dataGridLADG.CancelEdit();
|
||||
this.dataGridLADG.CancelEdit();
|
||||
EditLADGDialog eld = new EditLADGDialog();
|
||||
eld.LADG = new LADG();
|
||||
eld.LADG.MessageHeader = _ladgMessage;
|
||||
eld.LADG.Identifier = LADG.GetNewIdentifier(_ladgMessage.Elements);
|
||||
eld.Core = this.Core;
|
||||
eld.Core = this.Core;
|
||||
|
||||
eld.AddClicked += () =>
|
||||
{
|
||||
@ -179,7 +204,7 @@ namespace ENI2.DetailViewControls
|
||||
if (!this._ladgMessage.Elements.Contains(eld.LADG))
|
||||
this._ladgMessage.Elements.Add(eld.LADG);
|
||||
this.dataGridLADG.Items.Refresh();
|
||||
|
||||
|
||||
eld.LADG = new LADG();
|
||||
eld.LADG.MessageHeader = _ladgMessage;
|
||||
eld.LADG.Identifier = LADG.GetNewIdentifier(_ladgMessage.Elements);
|
||||
@ -188,7 +213,7 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
if (eld.ShowDialog() ?? false)
|
||||
{
|
||||
if(!_ladgMessage.Elements.Contains(eld.LADG))
|
||||
if(!_ladgMessage.Elements.Contains(eld.LADG))
|
||||
_ladgMessage.Elements.Add(eld.LADG);
|
||||
this.dataGridLADG.Items.Refresh();
|
||||
this.SublistElementChanged(Message.NotificationClass.LADG);
|
||||
@ -199,6 +224,8 @@ namespace ENI2.DetailViewControls
|
||||
{
|
||||
if (obj is LADG ladg)
|
||||
{
|
||||
this.dataGridLADG.CancelEdit();
|
||||
this.dataGridLADG.CancelEdit();
|
||||
// are you sure dialog is in base class
|
||||
this._ladgMessage.Elements.Remove(ladg);
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(ladg);
|
||||
@ -210,6 +237,9 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private void DataGridLADG_EditRequested(DatabaseEntity obj)
|
||||
{
|
||||
this.dataGridLADG.CancelEdit();
|
||||
this.dataGridLADG.CancelEdit();
|
||||
|
||||
LADG ladg = obj as LADG;
|
||||
|
||||
EditLADGDialog eld = new EditLADGDialog();
|
||||
@ -224,7 +254,7 @@ namespace ENI2.DetailViewControls
|
||||
this.dataGridLADG.Items.Refresh();
|
||||
|
||||
eld.LADG = new LADG();
|
||||
eld.LADG.Identifier = LADG.GetNewIdentifier(_ladgMessage.Elements);
|
||||
eld.LADG.Identifier = LADG.GetNewIdentifier(_ladgMessage.Elements);
|
||||
eld.LADG.MessageHeader = _ladgMessage;
|
||||
this.SublistElementChanged(Message.NotificationClass.LADG);
|
||||
};
|
||||
@ -249,7 +279,7 @@ namespace ENI2.DetailViewControls
|
||||
#region datagrid SERV
|
||||
|
||||
private void DataGridSERV_CreateRequested()
|
||||
{
|
||||
{
|
||||
EditSERVDialog esd = new EditSERVDialog();
|
||||
esd.SERV = new SERV();
|
||||
esd.SERV.Identifier = SERV.GetNewIdentifier(_servMessage.Elements);
|
||||
@ -259,7 +289,7 @@ namespace ENI2.DetailViewControls
|
||||
{
|
||||
esd.CopyValuesToEntity();
|
||||
if(!_servMessage.Elements.Contains(esd.SERV))
|
||||
_servMessage.Elements.Add(esd.SERV);
|
||||
_servMessage.Elements.Add(esd.SERV);
|
||||
this.dataGridSERV.Items.Refresh();
|
||||
esd.SERV = new SERV();
|
||||
esd.SERV.MessageHeader = _servMessage;
|
||||
@ -290,7 +320,7 @@ namespace ENI2.DetailViewControls
|
||||
}
|
||||
|
||||
private void DataGridSERV_EditRequested(DatabaseEntity obj)
|
||||
{
|
||||
{
|
||||
EditSERVDialog esd = new EditSERVDialog();
|
||||
esd.SERV = obj as SERV;
|
||||
|
||||
@ -302,7 +332,7 @@ namespace ENI2.DetailViewControls
|
||||
this.dataGridSERV.Items.Refresh();
|
||||
|
||||
esd.SERV = new SERV();
|
||||
esd.SERV.Identifier = SERV.GetNewIdentifier(_servMessage.Elements);
|
||||
esd.SERV.Identifier = SERV.GetNewIdentifier(_servMessage.Elements);
|
||||
esd.SERV.MessageHeader = _servMessage;
|
||||
this.SublistElementChanged(Message.NotificationClass.SERV);
|
||||
};
|
||||
@ -327,7 +357,7 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
public override void HighlightErrorMessageContainer()
|
||||
{
|
||||
if (this._nameMessage.HasErrors)
|
||||
if (this._nameMessage.HasErrors)
|
||||
HighlightService.HighlightControl(this.nameGroupBox, HighlightService.HighlightStyle.ERROR, this._nameMessage);
|
||||
if (this._infoMessage.HasErrors)
|
||||
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);
|
||||
}
|
||||
|
||||
#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 Spezialbalkon für die Gruppenauswahl im Core (Maersk BHV / Seago usw.)
|
||||
#region SERV template event handler
|
||||
|
||||
private void comboBoxGroup_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
// clear all
|
||||
this.Core.SetFlag(false, MessageCore.CoreFlags.MAERSK_BHV);
|
||||
this.Core.SetFlag(false, MessageCore.CoreFlags.SEAGO_BHV);
|
||||
this.Core.SetFlag(false, MessageCore.CoreFlags.SEAGO_WHV);
|
||||
this.Core.SetFlag(false, MessageCore.CoreFlags.HOEGH);
|
||||
if(this.comboBoxGroup.SelectedItem is SERV_Template st)
|
||||
{
|
||||
this.buttonDeleteTemplate.IsEnabled = true;
|
||||
this.buttonSetTemplate.IsEnabled = true;
|
||||
this._currentTemplate = st;
|
||||
}
|
||||
}
|
||||
|
||||
DictionaryEntry selectedItem = (DictionaryEntry) this.comboBoxGroup.SelectedItem;
|
||||
if(Int32.TryParse((string)selectedItem.Value, out int selectedValue))
|
||||
private void buttonSetTemplate_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (this.comboBoxGroup.SelectedItem is SERV_Template st)
|
||||
{
|
||||
if (selectedValue == (int)MessageCore.CoreFlags.MAERSK_BHV) CheckServiceEntryMaerskBHV();
|
||||
if (selectedValue == (int)MessageCore.CoreFlags.SEAGO_BHV) CheckServiceEntrySeaGoBHV();
|
||||
if (selectedValue == (int)MessageCore.CoreFlags.HOEGH) CheckServiceEntryHoegh();
|
||||
this.Core.SetFlag(true, (MessageCore.CoreFlags)selectedValue);
|
||||
DBManager.Instance.Save(this.Core);
|
||||
}
|
||||
bool found = false;
|
||||
foreach (SERV serv in _servMessage.Elements.Cast<SERV>())
|
||||
{
|
||||
if (serv.ServiceName.Equals(st.ServiceName))
|
||||
{
|
||||
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
|
||||
|
||||
#region special entry ship service check
|
||||
#region other event handler
|
||||
|
||||
private void CheckServiceEntryMaerskBHV()
|
||||
private void buttonSearchPortArea_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
bool found = false;
|
||||
foreach(SERV serv in this._servMessage.Elements)
|
||||
if (portAreas != null)
|
||||
{
|
||||
if (serv.ServiceBeneficiary.Equals("Maersk A/S, Esplanaden 50, DK-1263 Copenhagen K, VAT-ID: DK53139655"))
|
||||
found = true;
|
||||
}
|
||||
|
||||
if(!found)
|
||||
{
|
||||
SERV newServ = new SERV();
|
||||
newServ.ServiceBeneficiary = "Maersk A/S, Esplanaden 50, DK-1263 Copenhagen K, VAT-ID: DK53139655";
|
||||
newServ.ServiceInvoiceRecipient = "Maersk Deutschland A/S & Co.KG, Ericusspitze 2-4, 20457 Hamburg";
|
||||
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 = "Sealand Europe Deutschland A/S & Co. KG, 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);
|
||||
SelectPortAreaDialog spad = new SelectPortAreaDialog(this.Core.PoC);
|
||||
if (spad.ShowDialog() ?? false)
|
||||
{
|
||||
if (spad.SelectedArea != null)
|
||||
{
|
||||
if (portAreas.ContainsKey(spad.SelectedArea))
|
||||
{
|
||||
var pair = portAreas.SingleOrDefault(p => p.Key == spad.SelectedArea);
|
||||
this.comboBoxPortArea.SelectedItem = pair;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void CheckServiceEntryHoegh()
|
||||
private void buttonCopyNameFromCREWA_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
bool found = false;
|
||||
foreach (SERV serv in this._servMessage.Elements)
|
||||
CREW crewA = null;
|
||||
if (this._crewaMessage.Elements.Count > 0)
|
||||
{
|
||||
if (serv.ServiceBeneficiary.Equals("Höegh Autoliners AS, Oslo, Norway"))
|
||||
found = true;
|
||||
crewA = this._crewaMessage.Elements[0] as CREW;
|
||||
}
|
||||
|
||||
if (!found)
|
||||
SelectCrewMemberDialog scmd = new SelectCrewMemberDialog();
|
||||
scmd.CREW = crewA;
|
||||
scmd.AddVisible = false;
|
||||
|
||||
if (scmd.ShowDialog() ?? false)
|
||||
{
|
||||
SERV newServ = new SERV();
|
||||
newServ.ServiceBeneficiary = "Höegh Autoliners AS, Oslo, Norway";
|
||||
newServ.ServiceInvoiceRecipient = " PWL Port Services GmbH & Co. KG";
|
||||
newServ.ServiceName = "HOEGH 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);
|
||||
this.textBox_NameMaster.Text = $"{crewA.CrewMemberFirstName} {crewA.CrewMemberLastName}";
|
||||
this.SublistElementChanged(Message.NotificationClass.NAME);
|
||||
var binding = textBox_NameMaster.GetBindingExpression(TextBox.TextProperty);
|
||||
binding?.UpdateSource();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
||||
@ -15,74 +15,74 @@
|
||||
<TabItem Header="{x:Static p:Resources.textSecurityNotification}" Name="tabSecurityNotification">
|
||||
<GroupBox Name="secGroupBox" Header="{x:Static p:Resources.textSEC}">
|
||||
<ScrollViewer PreviewMouseWheel="ScrollViewer_PreviewMouseWheel">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
</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="38" />
|
||||
<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="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textKielPassagePlanned}" Name="label_KielPassagePlanned" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="0" Content="{x:Static p:Resources.textIncomingETANOK}" Name="label_IncomingETANOK" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="2" Content="{x:Static p:Resources.textOutgoingETANOK}" Name="label_OutgoingETANOK" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="3" Grid.Column="0" Content="{x:Static p:Resources.textCurrentShipSecLevel}" Name="label_CurrentShipSecLevel" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="5" Grid.Column="0" Content="{x:Static p:Resources.textSimplificationAvailable}" Name="label_SimplificationAvailable" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="6" Grid.Column="0" Content="{x:Static p:Resources.textPortWhereSimplWasGiven}" Name="label_PortWhereSimplWasGiven" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" VerticalContentAlignment="Bottom" Grid.Row="7" Grid.Column="0" Content="{x:Static p:Resources.textChiefSecurityOfficer}" Name="label_ChiefSecurityOfficer" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="8" Grid.Column="0" Content="{x:Static p:Resources.textFirstName}" Name="label_FirstName" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="8" Grid.Column="2" Content="{x:Static p:Resources.textLastName}" Name="label_LastName" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="9" Grid.Column="0" Content="{x:Static p:Resources.textPhone}" Name="label_Phone" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="10" Grid.Column="0" Content="{x:Static p:Resources.textEMail}" Name="label_EMail" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="9" Grid.Column="2" Content="{x:Static p:Resources.textFax}" Name="label_Fax" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" VerticalContentAlignment="Bottom" Grid.Row="12" Grid.Column="0" Content="{x:Static p:Resources.textISSC}" Name="label_ISSC" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="13" Grid.Column="0" Content="{x:Static p:Resources.textValidISSCOnBoard}" Name="label_ValidISSCOnBoard" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="14" Grid.Column="0" Content="{x:Static p:Resources.textISSCType}" Name="label_ISSCType" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="15" Grid.Column="0" Content="{x:Static p:Resources.textISSCExpirationDate}" Name="label_ISSCExpirationDate" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="17" Grid.Column="0" Content="{x:Static p:Resources.textApprovedSecPlan}" Name="label_ApprovedSecPlan" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="18" Grid.Column="0" Content="{x:Static p:Resources.textPortFacilityOfArrival}" Name="label_PortFacilityOfArrival" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="13" Grid.Column="2" Content="{x:Static p:Resources.textReasonForInvalidISSC}" Name="label_ReasonForInvalidISSC" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="14" Grid.Column="2" Content="{x:Static p:Resources.textISSCIssuerType}" Name="label_ISSCIssuerType" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="15" Grid.Column="2" Content="{x:Static p:Resources.textISSCIssuerName}" Name="label_ISSCIssuerName" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="18" Grid.Column="2" Content="{x:Static p:Resources.textGeneralCargoDescription}" Name="label_GeneralCargoDescription" Margin="0,0,10,0"/>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
</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="38" />
|
||||
<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="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textKielPassagePlanned}" Name="label_KielPassagePlanned" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="0" Content="{x:Static p:Resources.textIncomingETANOK}" Name="label_IncomingETANOK" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="2" Content="{x:Static p:Resources.textOutgoingETANOK}" Name="label_OutgoingETANOK" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="3" Grid.Column="0" Content="{x:Static p:Resources.textCurrentShipSecLevel}" Name="label_CurrentShipSecLevel" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="5" Grid.Column="0" Content="{x:Static p:Resources.textSimplificationAvailable}" Name="label_SimplificationAvailable" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="6" Grid.Column="0" Content="{x:Static p:Resources.textPortWhereSimplWasGiven}" Name="label_PortWhereSimplWasGiven" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" VerticalContentAlignment="Bottom" Grid.Row="7" Grid.Column="0" Content="{x:Static p:Resources.textChiefSecurityOfficer}" Name="label_ChiefSecurityOfficer" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="8" Grid.Column="0" Content="{x:Static p:Resources.textFirstName}" Name="label_FirstName" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="8" Grid.Column="2" Content="{x:Static p:Resources.textLastName}" Name="label_LastName" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="9" Grid.Column="0" Content="{x:Static p:Resources.textPhone}" Name="label_Phone" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="10" Grid.Column="0" Content="{x:Static p:Resources.textEMail}" Name="label_EMail" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="9" Grid.Column="2" Content="{x:Static p:Resources.textFax}" Name="label_Fax" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" VerticalContentAlignment="Bottom" Grid.Row="12" Grid.Column="0" Content="{x:Static p:Resources.textISSC}" Name="label_ISSC" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="13" Grid.Column="0" Content="{x:Static p:Resources.textValidISSCOnBoard}" Name="label_ValidISSCOnBoard" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="14" Grid.Column="0" Content="{x:Static p:Resources.textISSCType}" Name="label_ISSCType" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="15" Grid.Column="0" Content="{x:Static p:Resources.textISSCExpirationDate}" Name="label_ISSCExpirationDate" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="17" Grid.Column="0" Content="{x:Static p:Resources.textApprovedSecPlan}" Name="label_ApprovedSecPlan" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="18" Grid.Column="0" Content="{x:Static p:Resources.textPortFacilityOfArrival}" Name="label_PortFacilityOfArrival" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="13" Grid.Column="2" Content="{x:Static p:Resources.textReasonForInvalidISSC}" Name="label_ReasonForInvalidISSC" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="14" Grid.Column="2" Content="{x:Static p:Resources.textISSCIssuerType}" Name="label_ISSCIssuerType" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="15" Grid.Column="2" Content="{x:Static p:Resources.textISSCIssuerName}" Name="label_ISSCIssuerName" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="18" Grid.Column="2" Content="{x:Static p:Resources.textGeneralCargoDescription}" Name="label_GeneralCargoDescription" Margin="0,0,10,0"/>
|
||||
|
||||
<CheckBox Name="checkBoxKielCanalPassagePlanned" IsChecked="{Binding KielCanalPassagePlanned}" Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" Checked="CheckBoxKielCanalPassagePlanned_Checked" Unchecked="CheckBoxKielCanalPassagePlanned_Checked"/>
|
||||
<xctk:DateTimePicker Name="dateTimePickerKielCanalPassagePlannedIncomming" Grid.Row="1" Grid.Column="1" Value="{Binding KielCanalPassagePlannedIncomming, Converter={util:UtcToLocalDateTimeConverter}}" Margin="2" Format="Custom" FormatString="dd.MM.yyyy HH:mm" ShowButtonSpinner="False" VerticalContentAlignment="Center" ContextMenu="{DynamicResource ClearContextMenu}" TextAlignment="Left" AllowTextInput="True" Minimum="1899.12.31 00:00" Maximum="2100.12.31 00:00" PreviewKeyUp="DateTimePicker_PreviewKeyUp"/>
|
||||
<xctk:DateTimePicker Name="dateTimePickerKielCanalPassagePlannedOutgoing" Grid.Row="1" Grid.Column="3" Value="{Binding KielCanalPassagePlannedOutgoing, Converter={util:UtcToLocalDateTimeConverter}}" Margin="2" Format="Custom" FormatString="dd.MM.yyyy HH:mm" ShowButtonSpinner="False" VerticalContentAlignment="Center" ContextMenu="{DynamicResource ClearContextMenu}" TextAlignment="Left" AllowTextInput="True" Minimum="1899.12.31 00:00" Maximum="2100.12.31 00:00" PreviewKeyUp="DateTimePicker_PreviewKeyUp"/>
|
||||
<ComboBox Name="comboBoxCurrentShipSecurityLevel" Grid.Row="3" Grid.Column="1" SelectedValue="{Binding CurrentShipSecurityLevel}" Margin="2" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" />
|
||||
<CheckBox Name="checkBoxSECSimplification" IsChecked="{Binding SECSimplification}" Grid.Row="5" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<enictrl:LocodeControl x:Name="locodePortOfCallWhereCompleteSECNotified" Grid.Row="6" Grid.Column="1" LocodeValue="{Binding PortOfCallWhereCompleteSECNotified, Mode=TwoWay}" />
|
||||
<TextBox Name="textBoxCSOFirstName" Grid.Row="8" Grid.Column="1" MaxLength="100" Text="{Binding CSOFirstName}" Margin="2" VerticalContentAlignment="Center"/>
|
||||
<TextBox Name="textBoxCSOLastName" Grid.Row="8" Grid.Column="3" MaxLength="100" Text="{Binding CSOLastName}" Margin="2" VerticalContentAlignment="Center"/>
|
||||
<TextBox Name="textBoxCSOPhoneName" Grid.Row="9" Grid.Column="1" MaxLength="100" Text="{Binding CSOPhone}" Margin="2" VerticalContentAlignment="Center"/>
|
||||
<TextBox Name="textBoxCSOFaxName" Grid.Row="9" Grid.Column="3" MaxLength="100" Text="{Binding CSOFax}" Margin="2" VerticalContentAlignment="Center"/>
|
||||
<TextBox Name="textBoxCSOEMailName" Grid.Row="10" Grid.Column="1" MaxLength="100" Text="{Binding CSOEMail}" Margin="2" VerticalContentAlignment="Center"/>
|
||||
<CheckBox Name="checkBoxValidISSCOnBoard" IsChecked="{Binding ValidISSCOnBoard}" Grid.Row="13" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<TextBox Name="textBoxReasonsForNoValidISSC" Grid.Row="13" Grid.Column="3" MaxLength="255" Text="{Binding ReasonsForNoValidISSC}" Margin="2" VerticalContentAlignment="Center"/>
|
||||
<ComboBox Name="comboBoxISSCType" Grid.Row="14" Grid.Column="1" SelectedIndex="{Binding ISSCType, Converter={util:ByteConverter}}" Margin="2" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True"/>
|
||||
<ComboBox Name="comboBoxISSCIssuerType" Grid.Row="14" Grid.Column="3" SelectedIndex="{Binding ISSCIssuerType, Converter={util:ByteConverter}}" Margin="2" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True"/>
|
||||
<CheckBox Name="checkBoxKielCanalPassagePlanned" IsChecked="{Binding KielCanalPassagePlanned}" Grid.Row="0" Grid.Column="1" VerticalAlignment="Center" Checked="CheckBoxKielCanalPassagePlanned_Checked" Unchecked="CheckBoxKielCanalPassagePlanned_Checked"/>
|
||||
<xctk:DateTimePicker Name="dateTimePickerKielCanalPassagePlannedIncomming" Grid.Row="1" Grid.Column="1" Value="{Binding KielCanalPassagePlannedIncomming, Converter={util:UtcToLocalDateTimeConverter}}" Margin="2" Format="Custom" FormatString="dd.MM.yyyy HH:mm" ShowButtonSpinner="False" VerticalContentAlignment="Center" ContextMenu="{DynamicResource ClearContextMenu}" TextAlignment="Left" AllowTextInput="True" Minimum="1899.12.31 00:00" Maximum="2100.12.31 00:00" PreviewKeyUp="DateTimePicker_PreviewKeyUp"/>
|
||||
<xctk:DateTimePicker Name="dateTimePickerKielCanalPassagePlannedOutgoing" Grid.Row="1" Grid.Column="3" Value="{Binding KielCanalPassagePlannedOutgoing, Converter={util:UtcToLocalDateTimeConverter}}" Margin="2" Format="Custom" FormatString="dd.MM.yyyy HH:mm" ShowButtonSpinner="False" VerticalContentAlignment="Center" ContextMenu="{DynamicResource ClearContextMenu}" TextAlignment="Left" AllowTextInput="True" Minimum="1899.12.31 00:00" Maximum="2100.12.31 00:00" PreviewKeyUp="DateTimePicker_PreviewKeyUp"/>
|
||||
<ComboBox Name="comboBoxCurrentShipSecurityLevel" Grid.Row="3" Grid.Column="1" SelectedValue="{Binding CurrentShipSecurityLevel}" Margin="2" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" />
|
||||
<CheckBox Name="checkBoxSECSimplification" IsChecked="{Binding SECSimplification}" Grid.Row="5" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<enictrl:LocodeControl x:Name="locodePortOfCallWhereCompleteSECNotified" Grid.Row="6" Grid.Column="1" LocodeValue="{Binding PortOfCallWhereCompleteSECNotified, Mode=TwoWay}" />
|
||||
<TextBox Name="textBoxCSOFirstName" Grid.Row="8" Grid.Column="1" MaxLength="100" Text="{Binding CSOFirstName, Converter={util:TrimStringConverter}}" Margin="2" VerticalContentAlignment="Center"/>
|
||||
<TextBox Name="textBoxCSOLastName" Grid.Row="8" Grid.Column="3" MaxLength="100" Text="{Binding CSOLastName, Converter={util:TrimStringConverter}}" Margin="2" VerticalContentAlignment="Center"/>
|
||||
<TextBox Name="textBoxCSOPhoneName" Grid.Row="9" Grid.Column="1" MaxLength="100" Text="{Binding CSOPhone, Converter={util:TrimStringConverter}}" Margin="2" VerticalContentAlignment="Center"/>
|
||||
<TextBox Name="textBoxCSOFaxName" Grid.Row="9" Grid.Column="3" MaxLength="100" Text="{Binding CSOFax, Converter={util:TrimStringConverter}}" Margin="2" VerticalContentAlignment="Center"/>
|
||||
<TextBox Name="textBoxCSOEMailName" Grid.Row="10" Grid.Column="1" MaxLength="100" Text="{Binding CSOEMail, Converter={util:TrimStringConverter}}" Margin="2" VerticalContentAlignment="Center"/>
|
||||
<CheckBox Name="checkBoxValidISSCOnBoard" IsChecked="{Binding ValidISSCOnBoard}" Grid.Row="13" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<TextBox Name="textBoxReasonsForNoValidISSC" Grid.Row="13" Grid.Column="3" MaxLength="255" Text="{Binding ReasonsForNoValidISSC, Converter={util:TrimStringConverter}}" Margin="2" VerticalContentAlignment="Center"/>
|
||||
<ComboBox Name="comboBoxISSCType" Grid.Row="14" Grid.Column="1" SelectedIndex="{Binding ISSCType, Converter={util:ByteConverter}}" Margin="2" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True"/>
|
||||
<ComboBox Name="comboBoxISSCIssuerType" Grid.Row="14" Grid.Column="3" SelectedIndex="{Binding ISSCIssuerType, Converter={util:ByteConverter}}" Margin="2" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True"/>
|
||||
<DatePicker Name="datePickerISSCDateOfExpiration" Grid.Row="15" Grid.Column="1" SelectedDate="{Binding ISSCDateOfExpiration}" Margin="2" DisplayDateStart="1/1/1900" DisplayDateEnd="12/31/2199" PreviewKeyUp="DateTimePicker_PreviewKeyUpDate">
|
||||
<DatePicker.BlackoutDates>
|
||||
<CalendarDateRange Start="1/1/0001" End="12/31/1799"/>
|
||||
@ -90,12 +90,12 @@
|
||||
</DatePicker.BlackoutDates>
|
||||
|
||||
</DatePicker>
|
||||
<TextBox Name="textBoxISSCIssuerName" Grid.Row="15" Grid.Column="3" MaxLength="100" Text="{Binding ISSCIssuerName}" Margin="2" VerticalContentAlignment="Center"/>
|
||||
<CheckBox Name="checkBoxApprovedSecurityPlanOnBoard" IsChecked="{Binding ApprovedSecurityPlanOnBoard}" Grid.Row="17" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<TextBox Name="textBoxPortFacilityOfArrival" Grid.Row="18" Grid.Column="1" MaxLength="100" Text="{Binding PortFacilityOfArrival}" Margin="2" VerticalContentAlignment="Center"/>
|
||||
<ComboBox Name="comboBoxGeneralDescriptionOfCargo" Grid.Row="18" Grid.Column="3" IsEditable="True" StaysOpenOnEdit="True" SelectedIndex="{Binding GeneralDescriptionOfCargo, Converter={util:ByteConverter}}" Margin="2" IsTextSearchEnabled="True"/>
|
||||
<TextBox Name="textBoxISSCIssuerName" Grid.Row="15" Grid.Column="3" MaxLength="100" Text="{Binding ISSCIssuerName, Converter={util:TrimStringConverter}}" Margin="2" VerticalContentAlignment="Center"/>
|
||||
<CheckBox Name="checkBoxApprovedSecurityPlanOnBoard" IsChecked="{Binding ApprovedSecurityPlanOnBoard}" Grid.Row="17" Grid.Column="1" VerticalAlignment="Center"/>
|
||||
<TextBox Name="textBoxPortFacilityOfArrival" Grid.Row="18" Grid.Column="1" MaxLength="100" Text="{Binding PortFacilityOfArrival, Converter={util:TrimStringConverter}}" Margin="2" VerticalContentAlignment="Center"/>
|
||||
<ComboBox Name="comboBoxGeneralDescriptionOfCargo" Grid.Row="18" Grid.Column="3" IsEditable="True" StaysOpenOnEdit="True" SelectedIndex="{Binding GeneralDescriptionOfCargo, Converter={util:ByteConverter}}" Margin="2" IsTextSearchEnabled="True"/>
|
||||
|
||||
</Grid>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</GroupBox>
|
||||
</TabItem>
|
||||
@ -112,25 +112,25 @@
|
||||
</StackPanel>
|
||||
<enictrl:ENIDataGrid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" x:Name="dataGridLast10PortFacilities" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
||||
AutoGenerateColumns="False" Margin="0,5,0,0">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="" Binding="{Binding Identifier}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textPortname}" Binding="{Binding PortFacilityPortName, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textPortLocode}" Binding="{Binding PortFacilityPortLoCode, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textPortCountry}" Binding="{Binding PortFacilityPortCountry}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="ATA" Binding="{Binding PortFacilityDateOfArrival, StringFormat=d}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="ATD" Binding="{Binding PortFacilityDateOfDeparture, StringFormat=d}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTemplateColumn IsReadOnly="True" Width="0.1*">
|
||||
<DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextWrapping="Wrap" Text="{x:Static p:Resources.textGISISCode}" FontSize="10"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="" Binding="{Binding Identifier}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textPortname}" Binding="{Binding PortFacilityPortName, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textPortLocode}" Binding="{Binding PortFacilityPortLoCode, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textPortCountry}" Binding="{Binding PortFacilityPortCountry}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="ATA" Binding="{Binding PortFacilityDateOfArrival, StringFormat=d}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="ATD" Binding="{Binding PortFacilityDateOfDeparture, StringFormat=d}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTemplateColumn IsReadOnly="True" Width="0.1*">
|
||||
<DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextWrapping="Wrap" Text="{x:Static p:Resources.textGISISCode}" FontSize="10"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextAlignment="Center" Text="{Binding PortFacilityGISISCode}" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn IsReadOnly="True" Width="0.1*">
|
||||
<DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
@ -144,9 +144,9 @@
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textShipSecLevel}" Binding="{Binding PortFacilityShipSecurityLevel, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textSecurityMatters}" Binding="{Binding PortFacilitySecurityMattersToReport}" IsReadOnly="True" Width="0.2*" />
|
||||
</DataGrid.Columns>
|
||||
</enictrl:ENIDataGrid>
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textSecurityMatters}" Binding="{Binding PortFacilitySecurityMattersToReport}" IsReadOnly="True" Width="0.2*" />
|
||||
</DataGrid.Columns>
|
||||
</enictrl:ENIDataGrid>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem Header="{x:Static p:Resources.textShipToShip}" Name="tabShipToShip">
|
||||
@ -162,18 +162,18 @@
|
||||
</StackPanel>
|
||||
<enictrl:ENIDataGrid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" x:Name="dataGridShip2ShipActivities" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
||||
AutoGenerateColumns="False" Margin="0,5,0,0">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="" Binding="{Binding Identifier}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textLocationName}" Binding="{Binding ShipToShipActivityLocationName, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textLocationLocode}" Binding="{Binding ShipToShipActivityLocationLoCode, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textDateFrom}" Binding="{Binding ShipToShipActivityDateFrom, StringFormat=\{0:dd.MM.yyyy\}}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textDateTo}" Binding="{Binding ShipToShipActivityDateTo, StringFormat=\{0:dd.MM.yyyy\}}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textActivityType}" Binding="{Binding ShipToShipActivityTypeDisplay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textSecurityMatters}" Binding="{Binding ShipToShipActivitySecurityMattersToReport, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textLatitudeDecimal}" Binding="{Binding ShipToShipActivityLocationCoordinatesLatitude, StringFormat={}{0:N0}}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textLongitudeDecimal}" Binding="{Binding ShipToShipActivityLocationCoordinatesLongitude, StringFormat={}{0:N0}}" IsReadOnly="True" Width="0.1*" />
|
||||
</DataGrid.Columns>
|
||||
</enictrl:ENIDataGrid>
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="" Binding="{Binding Identifier}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textLocationName}" Binding="{Binding ShipToShipActivityLocationName, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textLocationLocode}" Binding="{Binding ShipToShipActivityLocationLoCode, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textDateFrom}" Binding="{Binding ShipToShipActivityDateFrom, StringFormat=\{0:dd.MM.yyyy\}}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textDateTo}" Binding="{Binding ShipToShipActivityDateTo, StringFormat=\{0:dd.MM.yyyy\}}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textActivityType}" Binding="{Binding ShipToShipActivityTypeDisplay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textSecurityMatters}" Binding="{Binding ShipToShipActivitySecurityMattersToReport, Mode=TwoWay}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textLatitudeDecimal}" Binding="{Binding ShipToShipActivityLocationCoordinatesLatitude, StringFormat={}{0:N0}}" IsReadOnly="True" Width="0.1*" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textLongitudeDecimal}" Binding="{Binding ShipToShipActivityLocationCoordinatesLongitude, StringFormat={}{0:N0}}" IsReadOnly="True" Width="0.1*" />
|
||||
</DataGrid.Columns>
|
||||
</enictrl:ENIDataGrid>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
|
||||
@ -116,6 +116,12 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
}
|
||||
|
||||
public override int SelectedTabIndex
|
||||
{
|
||||
get { return this.mainFrame.SelectedIndex; }
|
||||
set { this.mainFrame.SelectedIndex = value; }
|
||||
}
|
||||
|
||||
#region SetEnabled
|
||||
|
||||
public override void SetEnabled(bool enabled)
|
||||
@ -502,18 +508,7 @@ namespace ENI2.DetailViewControls
|
||||
HighlightService.HighlightControl(this.secGroupBox, HighlightService.HighlightStyle.VIOLATION, this._secMessage);
|
||||
}
|
||||
|
||||
#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
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,70 +5,71 @@
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:enictrl="clr-namespace:ENI2.Controls"
|
||||
xmlns:util="clr-namespace:ENI2.Util"
|
||||
xmlns:p="clr-namespace:ENI2.Properties"
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
xmlns:local="clr-namespace:ENI2.DetailViewControls"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="600" d:DesignWidth="800">
|
||||
<GroupBox Name="shipDataGroupBox" Header="{x:Static p:Resources.textShipData}" >
|
||||
<ScrollViewer PreviewMouseWheel="ScrollViewer_PreviewMouseWheel">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="260" />
|
||||
<RowDefinition Height="140" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid Grid.Row="0">
|
||||
|
||||
<Grid>
|
||||
<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="56" />
|
||||
<RowDefinition Height="260" />
|
||||
<RowDefinition Height="140" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="2*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="2*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid Grid.Row="0">
|
||||
<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="56" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="2*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="2*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textVesselName}" Margin="0,0,10,0" />
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="0" Content="{x:Static p:Resources.textVesselType}" Margin="0,0,10,0" />
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="2" Grid.Column="0" Content="{x:Static p:Resources.textTransportMode}" Margin="0,0,10,0" />
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="3" Grid.Column="0" Content="{x:Static p:Resources.textFlag}" Margin="0,0,10,0" />
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="4" Grid.Column="0" Content="{x:Static p:Resources.textGrossTonnage}" Margin="0,0,10,0" />
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="5" Grid.Column="0" Content="{x:Static p:Resources.textLengthOverAll}" Margin="0,0,10,0" />
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="6" Grid.Column="0" Content="{x:Static p:Resources.textMMSI}" Margin="0,0,10,0" />
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textVesselName}" Margin="0,0,10,0" />
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="0" Content="{x:Static p:Resources.textVesselType}" Margin="0,0,10,0" />
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="2" Grid.Column="0" Content="{x:Static p:Resources.textTransportMode}" Margin="0,0,10,0" />
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="3" Grid.Column="0" Content="{x:Static p:Resources.textFlag}" Margin="0,0,10,0" />
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="4" Grid.Column="0" Content="{x:Static p:Resources.textGrossTonnage}" Margin="0,0,10,0" />
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="5" Grid.Column="0" Content="{x:Static p:Resources.textLengthOverAll}" Margin="0,0,10,0" />
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="6" Grid.Column="0" Content="{x:Static p:Resources.textMMSI}" Margin="0,0,10,0" />
|
||||
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="3" Content="{x:Static p:Resources.textCallsign}" Margin="0,0,10,0" />
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="3" Grid.Column="3" Content="{x:Static p:Resources.textPortOfRegistry}" Margin="0,0,10,0" />
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="5" Grid.Column="3" Content="{x:Static p:Resources.textBeamOverAll}" Margin="0,0,10,0" />
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="6" Grid.Column="3" Content="{x:Static p:Resources.textInmarsatCallNumber}" Margin="0,0,10,0" />
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="7" Grid.Column="3" Content="{x:Static p:Resources.textLimitCallNumbers}" Margin="0,0,10,0" />
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="3" Content="{x:Static p:Resources.textCallsign}" Margin="0,0,10,0" />
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="3" Grid.Column="3" Content="{x:Static p:Resources.textPortOfRegistry}" Margin="0,0,10,0" />
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="5" Grid.Column="3" Content="{x:Static p:Resources.textBeamOverAll}" Margin="0,0,10,0" />
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="6" Grid.Column="3" Content="{x:Static p:Resources.textInmarsatCallNumber}" Margin="0,0,10,0" />
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="7" Grid.Column="3" Content="{x:Static p:Resources.textLimitCallNumbers}" Margin="0,0,10,0" />
|
||||
|
||||
<TextBox Name="textBoxVesselName" Grid.Column="1" Grid.Row="0" Grid.ColumnSpan="2" Text="{Binding ShipName}" Margin="2" VerticalContentAlignment="Center"/>
|
||||
<ComboBox Name="comboBoxVesselType" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2" SelectedValue="{Binding ShipType}" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" />
|
||||
<TextBox Name="textBoxCallsign" Grid.Column="4" Grid.Row="1" Text="{Binding CallSign}" Margin="2" VerticalContentAlignment="Center" MaxLength="7"/>
|
||||
<ComboBox Name="comboBoxTransportMode" Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="2" Margin="2" SelectedValue="{Binding TransportMode}" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" />
|
||||
<ComboBox Name="comboBoxFlag" Grid.Column="1" Grid.Row="3" Grid.ColumnSpan="2" Margin="2" SelectedValue="{Binding Flag}" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" />
|
||||
<enictrl:LocodeControl x:Name="locodePortOfRegistry" Grid.Column="4" Grid.Row="3" Grid.ColumnSpan="2" LocodeValue="{Binding PortOfRegistry, Mode=TwoWay}" LocodeSource="NO_PORT_FLAG" />
|
||||
<TextBox Name="textBoxVesselName" Grid.Column="1" Grid.Row="0" Grid.ColumnSpan="2" Text="{Binding ShipName, Converter={util:TrimStringConverter}}" Margin="2" VerticalContentAlignment="Center"/>
|
||||
<ComboBox Name="comboBoxVesselType" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2" SelectedValue="{Binding ShipType}" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" />
|
||||
<TextBox Name="textBoxCallsign" Grid.Column="4" Grid.Row="1" Text="{Binding CallSign, Converter={util:TrimStringConverter}}" Margin="2" VerticalContentAlignment="Center" MaxLength="7"/>
|
||||
<ComboBox Name="comboBoxTransportMode" Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="2" Margin="2" SelectedValue="{Binding TransportMode}" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" />
|
||||
<ComboBox Name="comboBoxFlag" Grid.Column="1" Grid.Row="3" Grid.ColumnSpan="2" Margin="2" SelectedValue="{Binding Flag}" SelectedValuePath="Key" DisplayMemberPath="Value" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" />
|
||||
<enictrl:LocodeControl x:Name="locodePortOfRegistry" Grid.Column="4" Grid.Row="3" Grid.ColumnSpan="2" LocodeValue="{Binding PortOfRegistry, Mode=TwoWay}" LocodeSource="NO_PORT_FLAG" />
|
||||
|
||||
<xctk:IntegerUpDown Name="integerUpDownGrossTonnage" Grid.Column="1" Grid.Row="4" Margin="2" Value="{Binding GrossTonnage}" ShowButtonSpinner="False" TextAlignment="Left"/>
|
||||
<Label Content="t" Grid.Column="2" Grid.Row="4" />
|
||||
<xctk:DoubleUpDown Name="doubleUpDownLength" Grid.Column="1" Grid.Row="5" Margin="2" Value="{Binding LengthOverall_MTR}" ShowButtonSpinner="False" TextAlignment="Left" ParsingNumberStyle="Any" FormatString="N2" />
|
||||
<Label Content="m" Grid.Column="2" Grid.Row="5" />
|
||||
<xctk:DoubleUpDown Name="doubleUpDownBeam" Grid.Column="4" Grid.Row="5" Margin="2" Value="{Binding Beam_MTR}" ShowButtonSpinner="False" TextAlignment="Left" ParsingNumberStyle="Any" FormatString="N2" />
|
||||
<Label Content="m" Grid.Column="5" Grid.Row="5" />
|
||||
<TextBox Name="textBoxMMSI" Grid.Column="1" Grid.Row="6" Margin="2" Text="{Binding MMSINumber}" VerticalContentAlignment="Center" MaxLength="10"/>
|
||||
<TextBox Name="textBoxInmarsatCallNumber" Grid.Column="4" Grid.ColumnSpan="2" Grid.Row="6" Grid.RowSpan="2" Margin="2" Text="{Binding InmarsatCallNumber}"
|
||||
<xctk:IntegerUpDown Name="integerUpDownGrossTonnage" Grid.Column="1" Grid.Row="4" Margin="2" Value="{Binding GrossTonnage}" ShowButtonSpinner="False" TextAlignment="Left"/>
|
||||
<Label Content="t" Grid.Column="2" Grid.Row="4" />
|
||||
<xctk:DoubleUpDown Name="doubleUpDownLength" Grid.Column="1" Grid.Row="5" Margin="2" Value="{Binding LengthOverall_MTR}" ShowButtonSpinner="False" TextAlignment="Left" ParsingNumberStyle="Any" FormatString="N2" />
|
||||
<Label Content="m" Grid.Column="2" Grid.Row="5" />
|
||||
<xctk:DoubleUpDown Name="doubleUpDownBeam" Grid.Column="4" Grid.Row="5" Margin="2" Value="{Binding Beam_MTR}" ShowButtonSpinner="False" TextAlignment="Left" ParsingNumberStyle="Any" FormatString="N2" />
|
||||
<Label Content="m" Grid.Column="5" Grid.Row="5" />
|
||||
<TextBox Name="textBoxMMSI" Grid.Column="1" Grid.Row="6" Margin="2" Text="{Binding MMSINumber, Converter={util:TrimStringConverter}}" VerticalContentAlignment="Center" MaxLength="10"/>
|
||||
<TextBox Name="textBoxInmarsatCallNumber" Grid.Column="4" Grid.ColumnSpan="2" Grid.Row="6" Grid.RowSpan="2" Margin="2" Text="{Binding InmarsatCallNumber, Converter={util:TrimStringConverter}}"
|
||||
VerticalContentAlignment="Top" TextWrapping="Wrap" AcceptsReturn="True" />
|
||||
|
||||
</Grid>
|
||||
</Grid>
|
||||
<GroupBox Name="groupBoxISMCompany" Header="{x:Static p:Resources.textISMCompany}" Grid.Row="1">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
@ -93,16 +94,16 @@
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="3" Content="{x:Static p:Resources.textCompanyId}" Margin="0,0,10,0" />
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="3" Content="{x:Static p:Resources.textCity}" Margin="0,0,10,0" />
|
||||
|
||||
<TextBox Name="textBoxCompanyName" Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2" Margin="2" Text="{Binding ISMCompanyName}" MaxLength="100" VerticalContentAlignment="Center"/>
|
||||
<TextBox Name="textBoxCompanyId" Grid.Row="0" Grid.Column="4" Grid.ColumnSpan="2" Margin="2" Text="{Binding ISMCompanyId}" MaxLength="7" VerticalContentAlignment="Center"/>
|
||||
<TextBox Name="textBoxStreetNumber" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" Margin="2" Text="{Binding ISMCompanyStreetAndNumber}" MaxLength="100" VerticalContentAlignment="Center"/>
|
||||
<TextBox Name="textBoxCity" Grid.Row="1" Grid.Column="4" Grid.ColumnSpan="2" Margin="2" Text="{Binding ISMCompanyCity}" MaxLength="100" VerticalContentAlignment="Center"/>
|
||||
<TextBox Name="textBoxPostalCode" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="1" Margin="2" Text="{Binding ISMCompanyPostalCode}" MaxLength="24" VerticalContentAlignment="Center"/>
|
||||
<TextBox Name="textBoxCountry" Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="2" Margin="2" Text="{Binding ISMCompanyCountry}" MaxLength="100" VerticalContentAlignment="Center"/>
|
||||
<TextBox Name="textBoxCompanyName" Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2" Margin="2" Text="{Binding ISMCompanyName, Converter={util:TrimStringConverter}}" MaxLength="100" VerticalContentAlignment="Center"/>
|
||||
<TextBox Name="textBoxCompanyId" Grid.Row="0" Grid.Column="4" Grid.ColumnSpan="2" Margin="2" Text="{Binding ISMCompanyId, Converter={util:TrimStringConverter}}" MaxLength="7" VerticalContentAlignment="Center"/>
|
||||
<TextBox Name="textBoxStreetNumber" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" Margin="2" Text="{Binding ISMCompanyStreetAndNumber, Converter={util:TrimStringConverter}}" MaxLength="100" VerticalContentAlignment="Center"/>
|
||||
<TextBox Name="textBoxCity" Grid.Row="1" Grid.Column="4" Grid.ColumnSpan="2" Margin="2" Text="{Binding ISMCompanyCity, Converter={util:TrimStringConverter}}" MaxLength="100" VerticalContentAlignment="Center"/>
|
||||
<TextBox Name="textBoxPostalCode" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="1" Margin="2" Text="{Binding ISMCompanyPostalCode, Converter={util:TrimStringConverter}}" MaxLength="24" VerticalContentAlignment="Center"/>
|
||||
<TextBox Name="textBoxCountry" Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="2" Margin="2" Text="{Binding ISMCompanyCountry, Converter={util:TrimStringConverter}}" MaxLength="100" VerticalContentAlignment="Center"/>
|
||||
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
|
||||
</GroupBox>
|
||||
</src:DetailBaseControl>
|
||||
|
||||
@ -5,10 +5,8 @@
|
||||
using System.Windows;
|
||||
|
||||
using bsmd.database;
|
||||
using ENI2.EditControls;
|
||||
using System.Windows.Media;
|
||||
using ENI2.Util;
|
||||
using System.Windows.Controls;
|
||||
|
||||
|
||||
namespace ENI2.DetailViewControls
|
||||
{
|
||||
@ -104,18 +102,7 @@ namespace ENI2.DetailViewControls
|
||||
HighlightService.HighlightControl(this.shipDataGroupBox, HighlightService.HighlightStyle.VIOLATION, this._statMessage);
|
||||
}
|
||||
|
||||
#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
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -35,10 +35,18 @@ namespace ENI2.DetailViewControls
|
||||
{
|
||||
this.dataGridTowageOnArrival.ContextMenu.Items.Add(new Separator());
|
||||
MenuItem copyItem = new MenuItem();
|
||||
copyItem.Header = Properties.Resources.textCopyTOWATOWD;
|
||||
copyItem.Header = string.Format(Properties.Resources.textCopyTo, "TOWD");
|
||||
copyItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
|
||||
copyItem.Click += new RoutedEventHandler(this.copyItem);
|
||||
this.dataGridTowageOnArrival.ContextMenu.Items.Add(copyItem);
|
||||
|
||||
this.dataGridTowageOnDeparture.ContextMenu.Items.Add(new Separator());
|
||||
copyItem = new MenuItem();
|
||||
copyItem.Header = string.Format(Properties.Resources.textCopyTo, "TOWA");
|
||||
copyItem.Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/Resources/documents.png")) };
|
||||
copyItem.Click += new RoutedEventHandler(this.copyItemToTOWA);
|
||||
this.dataGridTowageOnDeparture.ContextMenu.Items.Add(copyItem);
|
||||
|
||||
_ctxInitialized = true;
|
||||
}
|
||||
}
|
||||
@ -61,6 +69,24 @@ namespace ENI2.DetailViewControls
|
||||
}
|
||||
}
|
||||
|
||||
private void copyItemToTOWA(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// aus dem aktuell selektierten TOWD Element ein neues TOWA Element machen
|
||||
if (this.dataGridTowageOnDeparture.SelectedItems != null)
|
||||
{
|
||||
foreach (TOWD selectedTOWD in this.dataGridTowageOnDeparture.SelectedItems)
|
||||
{
|
||||
TOWA copyTOWA = new TOWA();
|
||||
copyTOWA.MessageHeader = _towaMessage;
|
||||
copyTOWA.CopyFromTOWD(selectedTOWD);
|
||||
copyTOWA.Identifier = TOWA.GetNewIdentifier(this._towaMessage.Elements);
|
||||
this._towaMessage.Elements.Add(copyTOWA);
|
||||
this.dataGridTowageOnArrival.Items.Refresh();
|
||||
this.SublistElementChanged(Message.NotificationClass.TOWA);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
@ -140,8 +166,7 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private void DataGridTowageOnDeparture_DeleteRequested(DatabaseEntity obj)
|
||||
{
|
||||
TOWD towd = obj as TOWD;
|
||||
if (towd != null)
|
||||
if (obj is TOWD towd)
|
||||
{
|
||||
// are you sure dialog is in base class
|
||||
this._towdMessage.Elements.Remove(towd);
|
||||
@ -219,8 +244,7 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private void DataGridTowageOnArrival_DeleteRequested(DatabaseEntity obj)
|
||||
{
|
||||
TOWA towa = obj as TOWA;
|
||||
if (towa != null)
|
||||
if (obj is TOWA towa)
|
||||
{
|
||||
// are you sure dialog is in base class
|
||||
this._towaMessage.Elements.Remove(towa);
|
||||
@ -284,18 +308,7 @@ namespace ENI2.DetailViewControls
|
||||
HighlightService.HighlightControl(this.groupBoxTowageOnDeparture, HighlightService.HighlightStyle.VIOLATION, this._towdMessage);
|
||||
}
|
||||
|
||||
#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
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,131 +11,187 @@
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="600" d:DesignWidth="800">
|
||||
<GroupBox Name="wasGroupBox" Header="{x:Static p:Resources.textWaste}">
|
||||
<ScrollViewer PreviewMouseWheel="ScrollViewer_PreviewMouseWheel">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="250" />
|
||||
<RowDefinition Height="330*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid Grid.Row="0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="2*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="2*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<TabControl Margin="10" Name="mainFrame">
|
||||
<TabItem Header="WAS" Name="tabWAS">
|
||||
<GroupBox Name="wasGroupBox" Header="{x:Static p:Resources.textWaste}">
|
||||
<ScrollViewer PreviewMouseWheel="ScrollViewer_PreviewMouseWheel">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="250" />
|
||||
<RowDefinition Height="330*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid Grid.Row="0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="2*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="2*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="28" />
|
||||
</Grid.RowDefinitions>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textAccurateDetailsGiven}" Name="label_AccurateDetailsGiven" Margin="0,0,10,0"/>
|
||||
<!--TextBlock Grid.Row="0" Grid.Column="0" Text="{x:Static p:Resources.textAccurateDetailsGiven}" Name="label_ETAToPortOfCall" Margin="0,0,10,0" TextWrapping="Wrap" FontSize="10"/-->
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="3" Grid.Column="0" Content="{x:Static p:Resources.textNextWasteDisposalPort}" Name="label_NextWasteDisposalPort" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="0" Content="{x:Static p:Resources.textWasteDateLastDisposal}" Name="label_DateOfLastDisposal" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="2" Grid.Column="0" Content="{x:Static p:Resources.textLastPortWasteDischarge}" Name="label_WasteLastPortDischarged" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="4" Grid.Column="0" Content="{x:Static p:Resources.textWasteDisposalServiceProviders}" Name="label_WasteDisposalServiceProviders" 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="3" VerticalAlignment="Center" Name="checkBoxValidExemption" IsChecked="{Binding WasteDisposalValidExemption, Mode=TwoWay}" />
|
||||
|
||||
<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>
|
||||
<CalendarDateRange Start="1/1/0001" End="12/31/1799"/>
|
||||
<CalendarDateRange Start="1/1/2199" End="1/1/9999"/>
|
||||
</DatePicker.BlackoutDates>
|
||||
</DatePicker>
|
||||
<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" />
|
||||
|
||||
<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" />
|
||||
</Grid>
|
||||
<enictrl:ENIDataGrid x:Name="dataGridWaste" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
||||
AutoGenerateColumns="False" Margin="0,5,0,0" Grid.Row="1" CanUserAddRows="False">
|
||||
<DataGrid.Columns>
|
||||
<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.textDescription}" Binding="{Binding WasteDescription}" IsReadOnly="True" Width="0.15*" />
|
||||
<DataGridTemplateColumn IsReadOnly="True" Width="0.1*">
|
||||
<DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextWrapping="Wrap" Text="{x:Static p:Resources.textWasteAmountToBeDisposed}" FontSize="10"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextAlignment="Center" Text="{Binding WasteDisposalAmount_MTQ, StringFormat={}{0:N3}}" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn IsReadOnly="True" Width="0.1*">
|
||||
<DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextWrapping="Wrap" Text="{x:Static p:Resources.textWasteMaxCapacity}" FontSize="10"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextAlignment="Center" Text="{Binding WasteCapacity_MTQ, StringFormat={}{0:N3}}" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn IsReadOnly="True" Width="0.1*">
|
||||
<DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextWrapping="Wrap" Text="{x:Static p:Resources.textWasteRetained}" FontSize="10"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextAlignment="Center" Text="{Binding WasteAmountRetained_MTQ, StringFormat={}{0:N3}}" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn IsReadOnly="True" Width="0.1*">
|
||||
<DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextWrapping="Wrap" Text="{x:Static p:Resources.textWastePortOfDelivery}" FontSize="10"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextAlignment="Center" Text="{Binding WasteDisposalPort}" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn IsReadOnly="True" Width="0.12*">
|
||||
<DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextWrapping="Wrap" Text="{x:Static p:Resources.textWasteGeneratedUntilNextPort}" FontSize="9"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextAlignment="Center" Text="{Binding WasteAmountGeneratedTillNextPort_MTQ, StringFormat={}{0:N3}}" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
</DataGrid.Columns>
|
||||
</enictrl:ENIDataGrid>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</GroupBox>
|
||||
</TabItem>
|
||||
<TabItem Header="WAS RCPT" Name="tabWAS_RCPT">
|
||||
<GroupBox Name="was_rcptGroupBox" Header="{x:Static p:Resources.textWasteReceipt}">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="120" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="330*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textAccurateDetailsGiven}" Name="label_AccurateDetailsGiven" Margin="0,0,10,0"/>
|
||||
<!--TextBlock Grid.Row="0" Grid.Column="0" Text="{x:Static p:Resources.textAccurateDetailsGiven}" Name="label_ETAToPortOfCall" Margin="0,0,10,0" TextWrapping="Wrap" FontSize="10"/-->
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="1" Grid.Column="0" Content="{x:Static p:Resources.textAmountOfPlannedWasteDisposal}" Name="label_AmountOfPlannedDisposal" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="2" Grid.Column="0" Content="{x:Static p:Resources.textWasteDateLastDisposal}" Name="label_DateOfLastDisposal" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="3" Grid.Column="0" Content="{x:Static p:Resources.textLastPortWasteDischarge}" Name="label_WasteLastPortDischarged" Margin="0,0,10,0"/>
|
||||
<Label HorizontalContentAlignment="Right" Grid.Row="4" Grid.Column="0" Content="{x:Static p:Resources.textWasteDisposalServiceProviders}" Name="label_WasteDisposalServiceProviders" 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="3" VerticalAlignment="Center" Name="checkBoxValidExemption" IsChecked="{Binding WasteDisposalValidExemption, Mode=TwoWay}" />
|
||||
<ComboBox Grid.Row="1" Grid.Column="1" Name="comboBoxWasteDisposal" Margin="2" SelectedIndex="{Binding WasteDisposalDelivery, Mode=TwoWay}"/>
|
||||
<DatePicker Grid.Row="2" 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>
|
||||
<CalendarDateRange Start="1/1/0001" End="12/31/1799"/>
|
||||
<CalendarDateRange Start="1/1/2199" End="1/1/9999"/>
|
||||
</DatePicker.BlackoutDates>
|
||||
</DatePicker>
|
||||
<enictrl:LocodeControl Grid.Row="3" Grid.Column="1" x:Name="locodeCtrlLastWastePort" LocodeValue="{Binding LastWasteDisposalPort, Mode=TwoWay}" LocodeSource="SSN" />
|
||||
<TextBox Grid.Row="4" Grid.Column="1" Grid.ColumnSpan="3" Grid.RowSpan="2" Name="textBoxWasteDisposalServiceProviders" Text="{Binding WasteDisposalServiceProviderText}" 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="2" Grid.ColumnSpan="1" Name="buttonImportFromExcel" Content="{x:Static p:Resources.textImportFromExcel}" Margin="2" Click="buttonImportFromExcel_Click" />
|
||||
<enictrl:ENIDataGrid x:Name="dataGridWasteReceipt" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" SelectionMode="Single"
|
||||
AutoGenerateColumns="False" Margin="0,5,0,0" Grid.Row="0" SelectionChanged="dataGridWasteReceipt_SelectionChanged">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="" Binding="{Binding Identifier}" IsReadOnly="True" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textIdentificationNumber}" Binding="{Binding IdentificationNumber}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textPortReceptionFacilityName}" Binding="{Binding PortReceptionFacilityName}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textPortReceptionFacilityProviderName}" Binding="{Binding PortReceptionFacilityProviderName}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textTreatmentFacilityProviderName}" Binding="{Binding TreatmentFacilityProviderText}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textWasteDeliveryDateFrom}" Binding="{Binding WasteDeliveryDateFrom, Converter={util:UtcToLocalDateTimeConverter}}" IsReadOnly="True" Width="Auto" />
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.textWasteDeliveryDateTo}" Binding="{Binding WasteDeliveryDateTo, Converter={util:UtcToLocalDateTimeConverter}}" IsReadOnly="True" Width="Auto" />
|
||||
</DataGrid.Columns>
|
||||
</enictrl:ENIDataGrid>
|
||||
<Grid Grid.Row="1">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="120" />
|
||||
<ColumnDefinition Width="120" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</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="1" Name="buttonCopyFromWAS" Content="{x:Static p:Resources.textCopyFromWAS}" Margin="2" Click="buttonCopyFromWAS_Click"/>
|
||||
</Grid>
|
||||
<enictrl:ENIDataGrid x:Name="dataGridWasteReceived" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
||||
AutoGenerateColumns="False" Margin="0,5,0,0" Grid.Row="2" CanUserAddRows="False">
|
||||
<DataGrid.Columns>
|
||||
<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.textDescription}" Binding="{Binding WasteDescription}" IsReadOnly="True" Width="0.3*" />
|
||||
<!--DataGridTemplateColumn IsReadOnly="True" Width="0.15*">
|
||||
<DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextWrapping="Wrap" Text="{x:Static p:Resources.textAmountWasteReceived_MTQ}" FontSize="10"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextAlignment="Center" Text="{Binding AmountWasteReceived_MTQ, StringFormat={}{0:N3}}" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</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>
|
||||
|
||||
</enictrl:ENIDataGrid>
|
||||
</Grid>
|
||||
<enictrl:ENIDataGrid x:Name="dataGridWaste" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch"
|
||||
AutoGenerateColumns="False" Margin="0,5,0,0" Grid.Row="1">
|
||||
<DataGrid.Columns>
|
||||
<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.textDescription}" Binding="{Binding WasteDescription}" IsReadOnly="True" Width="0.15*" />
|
||||
<DataGridTemplateColumn IsReadOnly="True" Width="0.1*">
|
||||
<DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextWrapping="Wrap" Text="{x:Static p:Resources.textWasteAmountToBeDisposed}" FontSize="10"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextAlignment="Center" Text="{Binding WasteDisposalAmount_MTQ, StringFormat={}{0:N3}}" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn IsReadOnly="True" Width="0.1*">
|
||||
<DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextWrapping="Wrap" Text="{x:Static p:Resources.textWasteMaxCapacity}" FontSize="10"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextAlignment="Center" Text="{Binding WasteCapacity_MTQ, StringFormat={}{0:N3}}" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn IsReadOnly="True" Width="0.1*">
|
||||
<DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextWrapping="Wrap" Text="{x:Static p:Resources.textWasteRetained}" FontSize="10"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextAlignment="Center" Text="{Binding WasteAmountRetained_MTQ, StringFormat={}{0:N3}}" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn IsReadOnly="True" Width="0.1*">
|
||||
<DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextWrapping="Wrap" Text="{x:Static p:Resources.textWastePortOfDelivery}" FontSize="10"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextAlignment="Center" Text="{Binding WasteDisposalPort}" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn IsReadOnly="True" Width="0.12*">
|
||||
<DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextWrapping="Wrap" Text="{x:Static p:Resources.textWasteGeneratedUntilNextPort}" FontSize="9"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextAlignment="Center" Text="{Binding WasteAmountGeneratedTillNextPort_MTQ, StringFormat={}{0:N3}}" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTemplateColumn IsReadOnly="True" Width="0.12*">
|
||||
<DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextWrapping="Wrap" Text="{x:Static p:Resources.textWasteAmountDischargedLastPort}" FontSize="9"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<TextBlock TextAlignment="Center" Text="{Binding WasteDisposedAtLastPort_MTQ, StringFormat={}{0:N3}}" />
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
</DataGrid.Columns>
|
||||
</enictrl:ENIDataGrid>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
</GroupBox>
|
||||
</GroupBox>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
</src:DetailBaseControl>
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
// Description: Detailansicht Müllmeldung
|
||||
//
|
||||
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
@ -21,15 +22,14 @@ namespace ENI2.DetailViewControls
|
||||
public partial class WasteDetailControl : DetailBaseControl
|
||||
{
|
||||
|
||||
#region Fields
|
||||
|
||||
private Message _wasMessage;
|
||||
private WAS _was;
|
||||
private Message _wasRcptMessage;
|
||||
private WAS_RCPT _selectedWAS_RCPT;
|
||||
|
||||
private static readonly string[] _wasteDeliveryList =
|
||||
{
|
||||
"ALL",
|
||||
"SOME",
|
||||
"NONE"
|
||||
};
|
||||
#endregion
|
||||
|
||||
public WasteDetailControl()
|
||||
{
|
||||
@ -41,19 +41,19 @@ namespace ENI2.DetailViewControls
|
||||
{
|
||||
|
||||
this.RegisterLocodeChange(this.locodeCtrlLastWastePort, Message.NotificationClass.WAS);
|
||||
this.RegisterLocodeChange(this.locodeCtrlNextWastePort, Message.NotificationClass.WAS);
|
||||
this.RegisterCheckboxChange(this.checkBoxAccurateCorrectDetails, Message.NotificationClass.WAS);
|
||||
this.RegisterCheckboxChange(this.checkBoxValidExemption, Message.NotificationClass.WAS);
|
||||
this.RegisterDatePickerChange(this.datePickerDateLastDisposal, Message.NotificationClass.WAS);
|
||||
this.RegisterComboboxIndexChange(this.comboBoxWasteDisposal, 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)
|
||||
{
|
||||
bool on = !(this.checkBoxValidExemption.IsChecked ?? false);
|
||||
this.checkBoxAccurateCorrectDetails.IsEnabled = on;
|
||||
this.comboBoxWasteDisposal.IsEnabled = on;
|
||||
this.locodeCtrlNextWastePort.IsEnabled = on;
|
||||
this.textBoxWasteDisposalServiceProviders.IsEnabled = on;
|
||||
this.dataGridWaste.IsEnabled = on;
|
||||
this.locodeCtrlLastWastePort.IsEnabled = on;
|
||||
@ -62,6 +62,7 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
private void buttonAddMissingEntries_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// TODO: Das muss noch für NSW 7.0 gefixt werden, alles doppelt etc.
|
||||
this._was.AddMissingWaste();
|
||||
if(this._was.Waste.Count < 15)
|
||||
{
|
||||
@ -74,8 +75,7 @@ namespace ENI2.DetailViewControls
|
||||
WasteCapacity_MTQ = 0,
|
||||
WasteDescription = "",
|
||||
WasteDisposalAmount_MTQ = 0,
|
||||
WasteDisposalPort = "ZZUKN",
|
||||
WasteDisposedAtLastPort_MTQ = 0
|
||||
WasteDisposalPort = "ZZUKN"
|
||||
};
|
||||
this._was.Waste.Add(newWaste);
|
||||
}
|
||||
@ -84,6 +84,16 @@ namespace ENI2.DetailViewControls
|
||||
this.dataGridWaste.Items.Refresh();
|
||||
}
|
||||
|
||||
private void buttonWasteReceivedAddMissingEntries_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (this._selectedWAS_RCPT != null)
|
||||
{
|
||||
this._selectedWAS_RCPT.AddMissingWasteReceived();
|
||||
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
||||
this.dataGridWasteReceived.Items.Refresh();
|
||||
}
|
||||
}
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
@ -91,6 +101,7 @@ namespace ENI2.DetailViewControls
|
||||
foreach (Message aMessage in this.Messages)
|
||||
{
|
||||
if (aMessage.MessageNotificationClass == Message.NotificationClass.WAS) { this._wasMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
||||
if(aMessage.MessageNotificationClass == Message.NotificationClass.WAS_RCPT) { this._wasRcptMessage = aMessage; this.ControlMessages.Add(aMessage); }
|
||||
}
|
||||
|
||||
#region init WAS
|
||||
@ -111,13 +122,21 @@ namespace ENI2.DetailViewControls
|
||||
was.MessageHeader = this._wasMessage;
|
||||
_wasMessage.Elements.Add(was);
|
||||
}
|
||||
else
|
||||
{
|
||||
// remove "old" Waste Entries from display (not deleted in the DB!)
|
||||
for(int i = (was.Waste.Count - 1); i >= 0; i--)
|
||||
{
|
||||
if (was.Waste[i].WasteType > 999)
|
||||
was.Waste.RemoveAt(i);
|
||||
}
|
||||
}
|
||||
|
||||
this.wasGroupBox.DataContext = was;
|
||||
this._was = was;
|
||||
|
||||
this.dataGridWaste.Initialize();
|
||||
this.dataGridWaste.ItemsSource = was.Waste;
|
||||
this.comboBoxWasteDisposal.ItemsSource = _wasteDeliveryList;
|
||||
this.dataGridWaste.AddingNewItem += DataGridWaste_AddingNewItem;
|
||||
this.dataGridWaste.EditRequested += DataGridWaste_EditRequested;
|
||||
this.dataGridWaste.DeleteRequested += DataGridWaste_DeleteRequested;
|
||||
@ -127,35 +146,266 @@ namespace ENI2.DetailViewControls
|
||||
this.checkBoxValidExemption.Unchecked += CheckBoxValidExemption_Checked;
|
||||
#endregion
|
||||
|
||||
#region init WAS_RCPT
|
||||
|
||||
if(this._wasRcptMessage == null)
|
||||
{
|
||||
this._wasRcptMessage = this.Core.CreateMessage(Message.NotificationClass.WAS_RCPT);
|
||||
this.Messages.Add(this._wasRcptMessage);
|
||||
}
|
||||
|
||||
this.dataGridWasteReceipt.Initialize();
|
||||
this.dataGridWasteReceipt.ItemsSource = this._wasRcptMessage.Elements;
|
||||
this.dataGridWasteReceipt.AddingNewItem += DataGridWasteReceipt_AddingNewItem;
|
||||
this.dataGridWasteReceipt.EditRequested += DataGridWasteReceipt_EditRequested;
|
||||
this.dataGridWasteReceipt.DeleteRequested += DataGridWasteReceipt_DeleteRequested;
|
||||
this.dataGridWasteReceipt.CreateRequested += DataGridWasteReceipt_CreateRequested;
|
||||
|
||||
this.dataGridWasteReceived.Initialize();
|
||||
this.dataGridWasteReceived.AddingNewItem += DataGridWasteReceived_AddingNewItem;
|
||||
this.dataGridWasteReceived.EditRequested += DataGridWasteReceived_EditRequested;
|
||||
this.dataGridWasteReceived.DeleteRequested += DataGridWasteReceived_DeleteRequested;
|
||||
this.dataGridWasteReceived.CreateRequested += DataGridWasteReceived_CreateRequested;
|
||||
|
||||
if(this._wasRcptMessage.Elements.Count > 0)
|
||||
{
|
||||
this.dataGridWasteReceipt.SelectedItem = this._wasRcptMessage.Elements[0];
|
||||
this.dataGridWasteReceipt_SelectionChanged(null, null);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
||||
public override int SelectedTabIndex
|
||||
{
|
||||
get { return this.mainFrame.SelectedIndex; }
|
||||
set { this.mainFrame.SelectedIndex = value; }
|
||||
}
|
||||
|
||||
#region Waste receipt grid event handler
|
||||
|
||||
private void DataGridWasteReceipt_CreateRequested()
|
||||
{
|
||||
EditWasteReceiptDialog epd = new EditWasteReceiptDialog();
|
||||
epd.WAS_RCPT = new WAS_RCPT();
|
||||
epd.WAS_RCPT.MessageHeader = _wasRcptMessage;
|
||||
epd.WAS_RCPT.Identifier = WAS_RCPT.GetNewIdentifier(_wasRcptMessage.Elements);
|
||||
epd.WAS_RCPT.AddMissingWasteReceived();
|
||||
|
||||
epd.AddClicked += () =>
|
||||
{
|
||||
epd.CopyValuesToEntity();
|
||||
if (!this._wasRcptMessage.Elements.Contains(epd.WAS_RCPT))
|
||||
this._wasRcptMessage.Elements.Add(epd.WAS_RCPT);
|
||||
this.dataGridWasteReceipt.Items.Refresh();
|
||||
epd.WAS_RCPT = new WAS_RCPT();
|
||||
epd.WAS_RCPT.MessageHeader = _wasRcptMessage;
|
||||
epd.WAS_RCPT.Identifier = WAS_RCPT.GetNewIdentifier(_wasRcptMessage.Elements);
|
||||
epd.WAS_RCPT.AddMissingWasteReceived();
|
||||
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
||||
};
|
||||
|
||||
if (epd.ShowDialog() ?? false)
|
||||
{
|
||||
if (!this._wasRcptMessage.Elements.Contains(epd.WAS_RCPT))
|
||||
_wasRcptMessage.Elements.Add(epd.WAS_RCPT);
|
||||
this.dataGridWasteReceipt.Items.Refresh();
|
||||
this.dataGridWasteReceipt.SelectedItem = epd.WAS_RCPT;
|
||||
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
||||
this.dataGridWasteReceived.ItemsSource = null;
|
||||
dataGridWasteReceipt_SelectionChanged(this, null);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void DataGridWasteReceipt_DeleteRequested(DatabaseEntity obj)
|
||||
{
|
||||
if (obj is WAS_RCPT wasRCPT)
|
||||
{
|
||||
// are you sure dialog is in base class
|
||||
_wasRcptMessage.Elements.Remove(wasRCPT);
|
||||
wasRCPT.DeleteElements();
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(wasRCPT);
|
||||
DatabaseEntity.ResetIdentifiers(new List<DatabaseEntity>(_wasRcptMessage.Elements));
|
||||
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
||||
this.dataGridWasteReceipt.Items.Refresh();
|
||||
this.dataGridWasteReceived.ItemsSource = null;
|
||||
this._selectedWAS_RCPT = null;
|
||||
}
|
||||
}
|
||||
|
||||
private void DataGridWasteReceipt_EditRequested(DatabaseEntity obj)
|
||||
{
|
||||
EditWasteReceiptDialog epd = new EditWasteReceiptDialog();
|
||||
epd.WAS_RCPT = obj as WAS_RCPT;
|
||||
|
||||
epd.AddClicked += () =>
|
||||
{
|
||||
epd.CopyValuesToEntity();
|
||||
if (!_wasRcptMessage.Elements.Contains(epd.WAS_RCPT))
|
||||
_wasRcptMessage.Elements.Add(epd.WAS_RCPT);
|
||||
this.dataGridWasteReceipt.Items.Refresh();
|
||||
epd.WAS_RCPT = new WAS_RCPT();
|
||||
epd.WAS_RCPT.Identifier = WAS_RCPT.GetNewIdentifier(_wasRcptMessage.Elements);
|
||||
epd.WAS_RCPT.MessageHeader = _wasRcptMessage;
|
||||
epd.WAS_RCPT.AddMissingWasteReceived();
|
||||
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
||||
};
|
||||
|
||||
if (epd.ShowDialog() ?? false)
|
||||
{
|
||||
if (!_wasRcptMessage.Elements.Contains(epd.WAS_RCPT))
|
||||
_wasRcptMessage.Elements.Add(epd.WAS_RCPT);
|
||||
}
|
||||
this.dataGridWasteReceipt.SelectedItem = epd.WAS_RCPT;
|
||||
this.dataGridWasteReceipt.Items.Refresh();
|
||||
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
||||
dataGridWasteReceipt_SelectionChanged(this, null);
|
||||
|
||||
}
|
||||
|
||||
private void DataGridWasteReceipt_AddingNewItem(object sender, AddingNewItemEventArgs e)
|
||||
{
|
||||
this.DataGridWasteReceipt_CreateRequested();
|
||||
}
|
||||
|
||||
private void dataGridWasteReceipt_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
if (this.dataGridWasteReceipt.SelectedItem is WAS_RCPT was_rcpt)
|
||||
{
|
||||
this.dataGridWasteReceived.ItemsSource = was_rcpt.WasteReceived;
|
||||
this._selectedWAS_RCPT = was_rcpt;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Waste received grid event handler
|
||||
|
||||
private void DataGridWasteReceived_DeleteRequested(DatabaseEntity obj)
|
||||
{
|
||||
if (obj is WasteReceived wasteReceived)
|
||||
{
|
||||
this.dataGridWasteReceived.CancelEdit();
|
||||
this.dataGridWasteReceived.CancelEdit();
|
||||
// are you sure dialog is in base class
|
||||
_selectedWAS_RCPT.WasteReceived.Remove(wasteReceived);
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Delete(wasteReceived);
|
||||
DatabaseEntity.ResetIdentifiers(new List<DatabaseEntity>(_selectedWAS_RCPT.WasteReceived));
|
||||
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
||||
this.dataGridWasteReceived.Items.Refresh();
|
||||
}
|
||||
}
|
||||
|
||||
private void DataGridWasteReceived_CreateRequested()
|
||||
{
|
||||
if (_selectedWAS_RCPT == null) return;
|
||||
this.dataGridWasteReceived.CancelEdit();
|
||||
this.dataGridWasteReceived.CancelEdit();
|
||||
EditWasteReceivedDialog ewrd = new EditWasteReceivedDialog();
|
||||
ewrd.WasteReceived = new WasteReceived();
|
||||
ewrd.WasteReceived.WAS_RCPT = _selectedWAS_RCPT;
|
||||
ewrd.WasteReceived.Identifier = WasteReceived.GetNewIdentifier(_selectedWAS_RCPT.WasteReceived);
|
||||
|
||||
ewrd.AddClicked += () =>
|
||||
{
|
||||
ewrd.CopyValuesToEntity();
|
||||
if ((ewrd.WasteReceived.WasteCode != null) && !this._selectedWAS_RCPT.WasteReceived.Any(wr => wr.WasteCode == ewrd.WasteReceived.WasteCode))
|
||||
{
|
||||
this._selectedWAS_RCPT.WasteReceived.Add(ewrd.WasteReceived);
|
||||
this.dataGridWasteReceived.Items.Refresh();
|
||||
ewrd.WasteReceived = new WasteReceived();
|
||||
ewrd.WasteReceived.WAS_RCPT = _selectedWAS_RCPT;
|
||||
ewrd.WasteReceived.Identifier = WasteReceived.GetNewIdentifier(_selectedWAS_RCPT.WasteReceived);
|
||||
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
||||
}
|
||||
};
|
||||
|
||||
if (ewrd.ShowDialog() ?? false)
|
||||
{
|
||||
if ((ewrd.WasteReceived.WasteCode != null) && !this._selectedWAS_RCPT.WasteReceived.Any(wr => wr.WasteCode == ewrd.WasteReceived.WasteCode))
|
||||
{
|
||||
this._selectedWAS_RCPT.WasteReceived.Add(ewrd.WasteReceived);
|
||||
this.dataGridWasteReceived.Items.Refresh();
|
||||
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void DataGridWasteReceived_EditRequested(DatabaseEntity obj)
|
||||
{
|
||||
this.dataGridWasteReceived.CancelEdit();
|
||||
this.dataGridWasteReceived.CancelEdit();
|
||||
|
||||
EditWasteReceivedDialog ewrd = new EditWasteReceivedDialog();
|
||||
ewrd.WasteReceived = obj as WasteReceived;
|
||||
|
||||
ewrd.AddClicked += () =>
|
||||
{
|
||||
ewrd.CopyValuesToEntity();
|
||||
if ((ewrd.WasteReceived.WasteCode != null) && !this._selectedWAS_RCPT.WasteReceived.Any(wr => wr.WasteCode == ewrd.WasteReceived.WasteCode))
|
||||
{
|
||||
_selectedWAS_RCPT.WasteReceived.Add(ewrd.WasteReceived);
|
||||
this.dataGridWasteReceived.Items.Refresh();
|
||||
ewrd.WasteReceived = new WasteReceived();
|
||||
ewrd.WasteReceived.Identifier = WasteReceived.GetNewIdentifier(_selectedWAS_RCPT.WasteReceived);
|
||||
ewrd.WasteReceived.WAS_RCPT = _selectedWAS_RCPT;
|
||||
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
||||
}
|
||||
};
|
||||
|
||||
if (ewrd.ShowDialog() ?? false)
|
||||
{
|
||||
if ((ewrd.WasteReceived.WasteCode != null) && !_selectedWAS_RCPT.WasteReceived.Any(wr => wr.WasteCode == ewrd.WasteReceived.WasteCode))
|
||||
{
|
||||
_selectedWAS_RCPT.WasteReceived.Add(ewrd.WasteReceived);
|
||||
}
|
||||
this.dataGridWasteReceived.Items.Refresh();
|
||||
this.SublistElementChanged(Message.NotificationClass.WAS_RCPT);
|
||||
}
|
||||
}
|
||||
|
||||
private void DataGridWasteReceived_AddingNewItem(object sender, AddingNewItemEventArgs e)
|
||||
{
|
||||
DataGridWasteReceived_CreateRequested();
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region Waste grid event handler
|
||||
|
||||
private void DataGridWaste_CreateRequested()
|
||||
{
|
||||
EditWasteDialog epd = new EditWasteDialog();
|
||||
epd.Waste = new Waste();
|
||||
epd.Waste = new Waste();
|
||||
epd.Waste.Identifier = Waste.GetNewIdentifier(_was.Waste);
|
||||
epd.Waste.WAS = this._was;
|
||||
epd.Waste.WAS = this._was;
|
||||
|
||||
epd.AddClicked += () =>
|
||||
{
|
||||
epd.CopyValuesToEntity();
|
||||
if(!this._was.Waste.Contains(epd.Waste))
|
||||
if (!this._was.Waste.Any(w => w.WasteType == epd.Waste.WasteType)) {
|
||||
this._was.Waste.Add(epd.Waste);
|
||||
this.dataGridWaste.Items.Refresh();
|
||||
epd.Waste = new Waste();
|
||||
epd.Waste.WAS = this._was;
|
||||
epd.Waste.Identifier = Waste.GetNewIdentifier(_was.Waste);
|
||||
this.SublistElementChanged(Message.NotificationClass.WAS);
|
||||
this.dataGridWaste.Items.Refresh();
|
||||
epd.Waste = new Waste();
|
||||
epd.Waste.WAS = this._was;
|
||||
epd.Waste.Identifier = Waste.GetNewIdentifier(_was.Waste);
|
||||
this.SublistElementChanged(Message.NotificationClass.WAS);
|
||||
}
|
||||
};
|
||||
|
||||
if (epd.ShowDialog() ?? false)
|
||||
{
|
||||
if(!this._was.Waste.Contains(epd.Waste))
|
||||
_was.Waste.Add(epd.Waste);
|
||||
this.dataGridWaste.Items.Refresh();
|
||||
this.SublistElementChanged(Message.NotificationClass.WAS);
|
||||
if (!this._was.Waste.Any(w => w.WasteType == epd.Waste.WasteType))
|
||||
{
|
||||
_was.Waste.Add(epd.Waste);
|
||||
this.dataGridWaste.Items.Refresh();
|
||||
this.SublistElementChanged(Message.NotificationClass.WAS);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -165,7 +415,7 @@ namespace ENI2.DetailViewControls
|
||||
{
|
||||
// are you sure dialog is in base class
|
||||
_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));
|
||||
this.SublistElementChanged(Message.NotificationClass.WAS);
|
||||
this.dataGridWaste.Items.Refresh();
|
||||
@ -180,13 +430,15 @@ namespace ENI2.DetailViewControls
|
||||
epd.AddClicked += () =>
|
||||
{
|
||||
epd.CopyValuesToEntity();
|
||||
if(!_was.Waste.Contains(epd.Waste))
|
||||
if (!_was.Waste.Any(w => w.WasteType == epd.Waste.WasteType))
|
||||
{
|
||||
_was.Waste.Add(epd.Waste);
|
||||
this.dataGridWaste.Items.Refresh();
|
||||
epd.Waste = new Waste();
|
||||
epd.Waste.Identifier = Waste.GetNewIdentifier(_was.Waste);
|
||||
epd.Waste.WAS = _was;
|
||||
this.SublistElementChanged(Message.NotificationClass.WAS);
|
||||
this.dataGridWaste.Items.Refresh();
|
||||
epd.Waste = new Waste();
|
||||
epd.Waste.Identifier = Waste.GetNewIdentifier(_was.Waste);
|
||||
epd.Waste.WAS = _was;
|
||||
this.SublistElementChanged(Message.NotificationClass.WAS);
|
||||
}
|
||||
};
|
||||
|
||||
if (epd.ShowDialog() ?? false)
|
||||
@ -223,17 +475,6 @@ namespace ENI2.DetailViewControls
|
||||
|
||||
#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
|
||||
|
||||
private void buttonImportFromExcel_Click(object sender, RoutedEventArgs e)
|
||||
@ -249,7 +490,7 @@ namespace ENI2.DetailViewControls
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -261,54 +502,62 @@ namespace ENI2.DetailViewControls
|
||||
{
|
||||
do
|
||||
{
|
||||
// skip first two rows
|
||||
// skip first three rows
|
||||
reader.Read();
|
||||
reader.Read();
|
||||
reader.Read();
|
||||
|
||||
int cnt = 0;
|
||||
object o = null;
|
||||
|
||||
while (reader.Read() && (cnt < 15))
|
||||
{
|
||||
if (((IExcelDataReader)reader).FieldCount < 10)
|
||||
{
|
||||
throw new InvalidDataException("Sheet must have 10 Columns of data");
|
||||
}
|
||||
Waste waste = new Waste();
|
||||
// Diese Funktion kann das "alte" Sheet Format nicht mehr einlesen!
|
||||
|
||||
while (reader.Read() && (cnt < 35))
|
||||
{
|
||||
if (reader.FieldCount < 9)
|
||||
{
|
||||
throw new InvalidDataException("Sheet must have 9 Columns of data");
|
||||
}
|
||||
|
||||
if (!reader.IsDBNull(1)) o = reader.GetValue(1); else o = null;
|
||||
if (o != null)
|
||||
if ((o != null) && Int32.TryParse(o.ToString(), out int wasteType))
|
||||
{
|
||||
waste.WasteType = Convert.ToInt32(o);
|
||||
if (waste.WasteType == 2313) waste.WasteType = 2600;
|
||||
Waste waste = _was.GetWasteForType(wasteType);
|
||||
if (waste == null)
|
||||
{
|
||||
waste = new Waste();
|
||||
waste.WasteType = wasteType;
|
||||
waste.WAS = this._was;
|
||||
waste.IsDirty = true;
|
||||
waste.Identifier = Waste.GetNewIdentifier(this._was.Waste);
|
||||
this._was.Waste.Add(waste);
|
||||
}
|
||||
else
|
||||
{
|
||||
waste.IsDirty = true;
|
||||
}
|
||||
|
||||
if (!reader.IsDBNull(4)) waste.WasteDescription = reader.GetString(4);
|
||||
if (waste.WasteDescription.IsNullOrEmpty())
|
||||
waste.WasteDescription = "-";
|
||||
|
||||
if (!reader.IsDBNull(5)) o = reader.GetValue(5); else o = null;
|
||||
if (o != null) waste.WasteDisposalAmount_MTQ = Convert.ToDouble(o);
|
||||
|
||||
if (!reader.IsDBNull(6)) o = reader.GetValue(6); else o = null;
|
||||
if (o != null) waste.WasteCapacity_MTQ = Convert.ToDouble(o);
|
||||
|
||||
if (!reader.IsDBNull(7)) o = reader.GetValue(7); else o = null;
|
||||
if (o != null) waste.WasteAmountRetained_MTQ = Convert.ToDouble(o);
|
||||
|
||||
if (!reader.IsDBNull(8)) waste.WasteDisposalPort = reader.GetString(8).ToUpper();
|
||||
|
||||
if (!reader.IsDBNull(9)) o = reader.GetValue(9); else o = null;
|
||||
if (o != null) waste.WasteAmountGeneratedTillNextPort_MTQ = Convert.ToDouble(o);
|
||||
|
||||
importWasteList.Add(waste);
|
||||
cnt++;
|
||||
}
|
||||
|
||||
if (!reader.IsDBNull(3)) waste.WasteDescription = reader.GetString(3);
|
||||
|
||||
if (!reader.IsDBNull(4)) o = reader.GetValue(4); else o = null;
|
||||
if (o != null) waste.WasteDisposalAmount_MTQ = Convert.ToDouble(o);
|
||||
|
||||
if (!reader.IsDBNull(5)) o = reader.GetValue(5); else o = null;
|
||||
if (o != null) waste.WasteCapacity_MTQ = Convert.ToDouble(o);
|
||||
|
||||
if (!reader.IsDBNull(6)) o = reader.GetValue(6); else o = null;
|
||||
if (o != null) waste.WasteAmountRetained_MTQ = Convert.ToDouble(o);
|
||||
|
||||
if (!reader.IsDBNull(7)) waste.WasteDisposalPort = reader.GetString(7);
|
||||
|
||||
if (!reader.IsDBNull(8)) o = reader.GetValue(8); else o = null;
|
||||
if (o != null) waste.WasteAmountGeneratedTillNextPort_MTQ = Convert.ToDouble(o);
|
||||
|
||||
if (!reader.IsDBNull(9)) o = reader.GetValue(9); else o = null;
|
||||
if (o != null) waste.WasteDisposedAtLastPort_MTQ = Convert.ToDouble(o);
|
||||
|
||||
waste.WAS = this._was;
|
||||
waste.IsDirty = true;
|
||||
waste.Identifier = Waste.GetNewIdentifier(this._was.Waste);
|
||||
this._was.Waste.Add(waste);
|
||||
importWasteList.Add(waste);
|
||||
cnt++;
|
||||
}
|
||||
|
||||
} while (reader.NextResult());
|
||||
@ -321,7 +570,7 @@ namespace ENI2.DetailViewControls
|
||||
if (importWasteList.Count > 0)
|
||||
{
|
||||
this.dataGridWaste.Items.Refresh();
|
||||
this.SublistElementChanged(Message.NotificationClass.SEC);
|
||||
this.SublistElementChanged(Message.NotificationClass.WAS);
|
||||
MessageBox.Show(String.Format(Properties.Resources.textWasteImported, importWasteList.Count), Properties.Resources.textCaptionInformation, MessageBoxButton.OK, MessageBoxImage.Information);
|
||||
}
|
||||
}
|
||||
@ -331,6 +580,37 @@ 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
|
||||
|
||||
}
|
||||
|
||||
421
ENI2/ENI2.csproj
421
ENI2/ENI2.csproj
@ -8,8 +8,8 @@
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>ENI2</RootNamespace>
|
||||
<AssemblyName>ENI2</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
|
||||
<AssemblyName>ENI2Test</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
@ -36,8 +36,8 @@
|
||||
<MinimumRequiredVersion>5.4.0.0</MinimumRequiredVersion>
|
||||
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
|
||||
<WebPage>publish.html</WebPage>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>6.6.3.0</ApplicationVersion>
|
||||
<ApplicationRevision>7</ApplicationRevision>
|
||||
<ApplicationVersion>7.2.12.7</ApplicationVersion>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<CreateDesktopShortcut>true</CreateDesktopShortcut>
|
||||
<PublishWizardCompleted>true</PublishWizardCompleted>
|
||||
@ -62,7 +62,8 @@
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<WarningLevel>0</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<StartupObject>ENI2.App</StartupObject>
|
||||
@ -82,17 +83,15 @@
|
||||
<PropertyGroup>
|
||||
<GenerateManifests>true</GenerateManifests>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup />
|
||||
<PropertyGroup>
|
||||
<ApplicationManifest>Properties\app.manifest</ApplicationManifest>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ManifestCertificateThumbprint>94D98790E3B6C4CC9F4B57C8FD305E3225894DF8</ManifestCertificateThumbprint>
|
||||
<ManifestCertificateThumbprint>C5FD306818D481FBECE3B2E74D7A912F515191E0</ManifestCertificateThumbprint>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<SignManifests>true</SignManifests>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ManifestKeyFile>ENI2_5_TemporaryKey.pfx</ManifestKeyFile>
|
||||
<ManifestKeyFile>ENI2_7_TemporaryKey.pfx</ManifestKeyFile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug 64|AnyCPU'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
@ -135,28 +134,115 @@
|
||||
<CodeAnalysisRuleSet>..\code.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="ExcelDataReader, Version=3.6.0.0, Culture=neutral, PublicKeyToken=93517dbe6a4012fa, processorArchitecture=MSIL">
|
||||
<HintPath>packages\ExcelDataReader.3.6.0\lib\net45\ExcelDataReader.dll</HintPath>
|
||||
<Reference Include="ExcelDataReader, Version=3.8.0.0, Culture=neutral, PublicKeyToken=93517dbe6a4012fa, processorArchitecture=MSIL">
|
||||
<HintPath>packages\ExcelDataReader.3.8.0\lib\net462\ExcelDataReader.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="log4net, Version=2.0.13.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
|
||||
<HintPath>packages\log4net.2.0.13\lib\net45\log4net.dll</HintPath>
|
||||
<Reference Include="log4net, Version=3.2.0.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
|
||||
<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 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.1000\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>
|
||||
</Reference>
|
||||
<Reference Include="MigraDoc.DocumentObjectModel, Version=6.2.2.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL">
|
||||
<HintPath>packages\PDFsharp-MigraDoc.6.2.2\lib\netstandard2.0\MigraDoc.DocumentObjectModel.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="MigraDoc.Rendering, Version=6.2.2.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL">
|
||||
<HintPath>packages\PDFsharp-MigraDoc.6.2.2\lib\netstandard2.0\MigraDoc.Rendering.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="MigraDoc.RtfRendering, Version=6.2.2.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL">
|
||||
<HintPath>packages\PDFsharp-MigraDoc.6.2.2\lib\netstandard2.0\MigraDoc.RtfRendering.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="PdfSharp, Version=6.2.2.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL">
|
||||
<HintPath>packages\PDFsharp.6.2.2\lib\netstandard2.0\PdfSharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="PdfSharp.BarCodes, Version=6.2.2.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL">
|
||||
<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 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.Data" />
|
||||
<Reference Include="System.Data.SQLite, Version=1.0.115.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.115.0\lib\net451\System.Data.SQLite.dll</HintPath>
|
||||
<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.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 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.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.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.Web" />
|
||||
<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.Xml" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
@ -171,20 +257,20 @@
|
||||
<Reference Include="WindowsBase" />
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
<Reference Include="Xceed.Wpf.AvalonDock, Version=4.1.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Extended.Wpf.Toolkit.4.1.0\lib\net40\Xceed.Wpf.AvalonDock.dll</HintPath>
|
||||
<Reference Include="Xceed.Wpf.AvalonDock, Version=5.0.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Extended.Wpf.Toolkit.5.0.0\lib\net40\Xceed.Wpf.AvalonDock.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Xceed.Wpf.AvalonDock.Themes.Aero, Version=4.1.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Extended.Wpf.Toolkit.4.1.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.Aero.dll</HintPath>
|
||||
<Reference Include="Xceed.Wpf.AvalonDock.Themes.Aero, Version=5.0.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Extended.Wpf.Toolkit.5.0.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.Aero.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Xceed.Wpf.AvalonDock.Themes.Metro, Version=4.1.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Extended.Wpf.Toolkit.4.1.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.Metro.dll</HintPath>
|
||||
<Reference Include="Xceed.Wpf.AvalonDock.Themes.Metro, Version=5.0.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Extended.Wpf.Toolkit.5.0.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.Metro.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Xceed.Wpf.AvalonDock.Themes.VS2010, Version=4.1.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Extended.Wpf.Toolkit.4.1.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.VS2010.dll</HintPath>
|
||||
<Reference Include="Xceed.Wpf.AvalonDock.Themes.VS2010, Version=5.0.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Extended.Wpf.Toolkit.5.0.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.VS2010.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Xceed.Wpf.Toolkit, Version=4.1.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Extended.Wpf.Toolkit.4.1.0\lib\net40\Xceed.Wpf.Toolkit.dll</HintPath>
|
||||
<Reference Include="Xceed.Wpf.Toolkit, Version=5.0.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
|
||||
<HintPath>packages\Extended.Wpf.Toolkit.5.0.0\lib\net40\Xceed.Wpf.Toolkit.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
@ -204,18 +290,61 @@
|
||||
<Compile Include="..\bsmd.ExcelReadService\LocodeDB.cs">
|
||||
<Link>Locode\LocodeDB.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="Controls\BusyControl.xaml.cs">
|
||||
<DependentUpon>BusyControl.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Controls\ClosableTabItem.cs" />
|
||||
<Compile Include="Controls\ConditionGroupControl.xaml.cs">
|
||||
<DependentUpon>ConditionGroupControl.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Controls\EasyPeasyControl.xaml.cs">
|
||||
<DependentUpon>EasyPeasyControl.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Controls\EditWindowBase.cs" />
|
||||
<Compile Include="Controls\ENIDataGrid.cs" />
|
||||
<Compile Include="Controls\IHighlightControlContainer.cs" />
|
||||
<Compile Include="Controls\LocodeControl.xaml.cs">
|
||||
<DependentUpon>LocodeControl.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Controls\POListControl.xaml.cs">
|
||||
<DependentUpon>POListControl.xaml</DependentUpon>
|
||||
<Compile Include="Controls\MaerskOverviewControl.xaml.cs">
|
||||
<DependentUpon>MaerskOverviewControl.xaml</DependentUpon>
|
||||
</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">
|
||||
<DependentUpon>CompareExcelDialog.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="EditControls\EditWasteReceiptDialog.xaml.cs">
|
||||
<DependentUpon>EditWasteReceiptDialog.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="EditControls\EditWasteReceivedDialog.xaml.cs">
|
||||
<DependentUpon>EditWasteReceivedDialog.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="EditControls\FixImportDialog.xaml.cs">
|
||||
<DependentUpon>FixImportDialog.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="EditControls\NewDGItemDialog.xaml.cs">
|
||||
<DependentUpon>NewDGItemDialog.xaml</DependentUpon>
|
||||
</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\ExcelBase.cs" />
|
||||
<Compile Include="Excel\ExcelComparer.cs" />
|
||||
<Compile Include="Excel\ExcelManager.cs" />
|
||||
<Compile Include="Excel\ExcelReader.cs" />
|
||||
<Compile Include="Excel\ExcelSimpleWriter.cs" />
|
||||
<Compile Include="Excel\ExcelUtil.cs" />
|
||||
<Compile Include="Controls\MaerskListControl.xaml.cs">
|
||||
<DependentUpon>MaerskListControl.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Controls\ReportingPartyControl.xaml.cs">
|
||||
<DependentUpon>ReportingPartyControl.xaml</DependentUpon>
|
||||
@ -358,6 +487,9 @@
|
||||
<Compile Include="EditControls\NewWithIdDialog.xaml.cs">
|
||||
<DependentUpon>NewWithIdDialog.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="EditControls\SelectImportClassesDialog.xaml.cs">
|
||||
<DependentUpon>SelectImportClassesDialog.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="EditControls\ShowIdDialog.xaml.cs">
|
||||
<DependentUpon>ShowIdDialog.xaml</DependentUpon>
|
||||
</Compile>
|
||||
@ -373,12 +505,52 @@
|
||||
<Compile Include="EditControls\VisitIdDialog.xaml.cs">
|
||||
<DependentUpon>VisitIdDialog.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Excel\ExcelWriter.cs" />
|
||||
<Compile Include="LocalizedLookup.cs" />
|
||||
<Compile Include="Report\LabelStorage.cs" />
|
||||
<Compile Include="Report\ReportDocument.cs" />
|
||||
<Compile Include="Report\ReportManager.cs" />
|
||||
<Compile Include="Service References\LockingServiceReference\Reference.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Reference.svcmap</DependentUpon>
|
||||
</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">
|
||||
<DependentUpon>SplashScreenWindow.xaml</DependentUpon>
|
||||
</Compile>
|
||||
@ -387,35 +559,51 @@
|
||||
</Compile>
|
||||
<Compile Include="Util\BoolToVisibilityConverter.cs" />
|
||||
<Compile Include="Util\ByteConverter.cs" />
|
||||
<Compile Include="Util\CutoffConverter.cs" />
|
||||
<Compile Include="Util\DatabaseEntityWatchdog.cs" />
|
||||
<Compile Include="Util\EasyPeasyState.cs" />
|
||||
<Compile Include="Util\EnumHelper.cs" />
|
||||
<Compile Include="Util\EnumToBooleanConverter.cs" />
|
||||
<Compile Include="Util\EnumToCollectionConverter.cs" />
|
||||
<Compile Include="Util\ExpandableListConverter.cs" />
|
||||
<Compile Include="Util\Extensions.cs" />
|
||||
<Compile Include="Util\GlobalStructures.cs" />
|
||||
<Compile Include="Util\HighlightService.cs" />
|
||||
<Compile Include="Util\InverseBooleanConverter.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\UIHelper.cs" />
|
||||
<Compile Include="Util\UtcToLocalDateTimeConverter.cs" />
|
||||
<Compile Include="Util\ValidationContext.cs" />
|
||||
<Compile Include="VorgaengeControl.xaml.cs">
|
||||
<DependentUpon>VorgaengeControl.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="WindowPlacement.cs" />
|
||||
<Page Include="AnmeldungenControl.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Controls\BusyControl.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Controls\ConditionGroupControl.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Controls\EasyPeasyControl.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Controls\LocodeControl.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Controls\POListControl.xaml">
|
||||
<Page Include="Controls\MaerskOverviewControl.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Controls\MaerskListControl.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
@ -435,6 +623,10 @@
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Controls\ValueMappingsControl.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="ControlTemplates.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
@ -499,6 +691,14 @@
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="EditControls\ChangePasswordDialog.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="EditControls\CompareExcelDialog.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="EditControls\CopyDeclarationDialog.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
@ -591,10 +791,22 @@
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="EditControls\EditWasteReceiptDialog.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="EditControls\EditWasteReceivedDialog.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="EditControls\ErrorListDialog.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="EditControls\FixImportDialog.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="EditControls\MessageHistoryDialog.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
@ -603,10 +815,26 @@
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="EditControls\NewDGItemDialog.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="EditControls\NewWithIdDialog.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="EditControls\SelectCrewMemberDialog.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="EditControls\SelectImportClassesDialog.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="EditControls\SelectPortAreaDialog.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="EditControls\ShowIdDialog.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
@ -642,6 +870,54 @@
|
||||
<DependentUpon>MainWindow.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</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">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
@ -654,10 +930,6 @@
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Include="VorgaengeControl.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Properties\AssemblyInfo.cs">
|
||||
@ -673,10 +945,26 @@
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<Content Include="..\misc\report.db">
|
||||
<Link>report.db</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="..\misc\Reference_Sheet_DE.xlsx">
|
||||
<Link>Excel\Reference_Sheet_DE.xlsx</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="..\misc\EU-NoAD-Data-Collecting-Tool-5_0.xlsx">
|
||||
<Link>Excel\EU-NoAD-Data-Collecting-Tool-5_0.xlsx</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<None Include="codesigning.pfx" />
|
||||
<None Include="ENI2_2_TemporaryKey.pfx" />
|
||||
<None Include="ENI2_3_TemporaryKey.pfx" />
|
||||
<None Include="ENI2_4_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">
|
||||
<DependentUpon>Reference.svcmap</DependentUpon>
|
||||
</None>
|
||||
@ -710,16 +998,15 @@
|
||||
</None>
|
||||
<Resource Include="Resources\floppy_disk_edit.png" />
|
||||
<Resource Include="Resources\floppy_disks.png" />
|
||||
<Resource Include="Resources\logo_transparent_babyblau.png" />
|
||||
<None Include="Resources\flash_red.png" />
|
||||
<None Include="Resources\flash_yellow.png" />
|
||||
<None Include="Resources\lightbulb_on.png" />
|
||||
<None Include="Resources\rotate_left.png" />
|
||||
<Resource Include="Resources\sign_warning.png" />
|
||||
<None Include="Resources\trafficlight_green.png" />
|
||||
<None Include="Resources\trafficlight_off.png" />
|
||||
<None Include="Resources\trafficlight_red.png" />
|
||||
<None Include="Resources\trafficlight_yellow.png" />
|
||||
<Resource Include="Resources\trafficlight_green.png" />
|
||||
<Resource Include="Resources\trafficlight_off.png" />
|
||||
<Resource Include="Resources\trafficlight_red.png" />
|
||||
<Resource Include="Resources\trafficlight_yellow.png" />
|
||||
<None Include="Resources\user_edit.png" />
|
||||
<Resource Include="Resources\delete2.png" />
|
||||
<None Include="Resources\mail_new.png" />
|
||||
@ -750,6 +1037,25 @@
|
||||
<Resource Include="Resources\clock_history.ico" />
|
||||
<Resource Include="Resources\document_down.png" />
|
||||
<Resource Include="Resources\undo.png" />
|
||||
<Resource Include="Resources\Logo.gif" />
|
||||
<Resource Include="Resources\excel.png" />
|
||||
<Resource Include="Resources\logo_eni.png" />
|
||||
<Resource Include="Resources\import1.png" />
|
||||
<Resource Include="Resources\import2.png" />
|
||||
<Resource Include="Resources\about.png" />
|
||||
<Resource Include="Resources\document_into.png" />
|
||||
<Resource Include="Resources\document_plain_new.png" />
|
||||
<Resource Include="Resources\exit.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">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
@ -776,7 +1082,6 @@
|
||||
</Content>
|
||||
<None Include="bsmdKey.snk" />
|
||||
<None Include="ENI2.licenseheader" />
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\app.manifest" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
@ -799,9 +1104,9 @@
|
||||
<Resource Include="Resources\containership.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.5.2">
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.8">
|
||||
<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>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
@ -882,15 +1187,35 @@
|
||||
<ItemGroup>
|
||||
<WCFMetadataStorage Include="Service References\LockingServiceReference\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.115.0\build\net451\Stub.System.Data.SQLite.Core.NetFramework.targets" Condition="Exists('packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.115.0\build\net451\Stub.System.Data.SQLite.Core.NetFramework.targets')" />
|
||||
<PropertyGroup>
|
||||
<!-- Find Windows Kit path and then SignTool path for the post-build event -->
|
||||
<WindowsKitsRoot>$([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Kits\Installed Roots', 'KitsRoot10', null, RegistryView.Registry32, RegistryView.Default))</WindowsKitsRoot>
|
||||
<WindowsKitsRoot Condition="'$(WindowsKitsRoot)' == ''">$([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Kits\Installed Roots', 'KitsRoot81', null, RegistryView.Registry32, RegistryView.Default))</WindowsKitsRoot>
|
||||
<WindowsKitsRoot Condition="'$(WindowsKitsRoot)' == ''">$([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Kits\Installed Roots', 'KitsRoot', null, RegistryView.Registry32, RegistryView.Default))</WindowsKitsRoot>
|
||||
<SignToolPath Condition="'$(SignToolPath)' == '' And '$(Platform)' == 'AnyCPU' and Exists('$(WindowsKitsRoot)bin\x64\signtool.exe')">$(WindowsKitsRoot)bin\x64\</SignToolPath>
|
||||
<SignToolPath Condition="'$(SignToolPath)' == '' And Exists('$(WindowsKitsRoot)bin\$(Platform)\signtool.exe')">$(WindowsKitsRoot)bin\$(Platform)\</SignToolPath>
|
||||
<SignToolPathBin Condition="'$(SignToolPath)' == ''">$([System.IO.Directory]::GetDirectories('$(WindowsKitsRoot)bin',"10.0.*"))</SignToolPathBin>
|
||||
<SignToolPathLen Condition="'$(SignToolPathBin)' != ''">$(SignToolPathBin.Split(';').Length)</SignToolPathLen>
|
||||
<SignToolPathIndex Condition="'$(SignToolPathLen)' != ''">$([MSBuild]::Add(-1, $(SignToolPathLen)))</SignToolPathIndex>
|
||||
<SignToolPathBase Condition="'$(SignToolPathIndex)' != ''">$(SignToolPathBin.Split(';').GetValue($(SignToolPathIndex)))\</SignToolPathBase>
|
||||
<SignToolPath Condition="'$(SignToolPath)' == '' And '$(SignToolPathBase)' != '' And '$(Platform)' == 'AnyCPU'">$(SignToolPathBase)x64\</SignToolPath>
|
||||
<SignToolPath Condition="'$(SignToolPath)' == '' And '$(SignToolPathBase)' != ''">$(SignToolPathBase)$(Platform)\</SignToolPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>"$(SignToolPath)signtool.exe" sign /f $(ProjectDir)\ENI2_7_TemporaryKey.pfx /p FgrMFUWsTVGQeb6L6i0e /fd SHA256 $(TargetPath)</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
<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">
|
||||
<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>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.115.0\build\net451\Stub.System.Data.SQLite.Core.NetFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.115.0\build\net451\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>
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
<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.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
|
||||
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
|
||||
|
||||
}
|
||||
}
|
||||
43
ENI2/EditControls/CompareExcelDialog.xaml
Normal file
43
ENI2/EditControls/CompareExcelDialog.xaml
Normal file
@ -0,0 +1,43 @@
|
||||
<enictrl:StatusWindowBase x:Class="ENI2.EditControls.CompareExcelDialog"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:ENI2.EditControls"
|
||||
xmlns:enictrl="clr-namespace:ENI2.Controls"
|
||||
xmlns:p="clr-namespace:ENI2.Properties"
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
mc:Ignorable="d"
|
||||
Title="{x:Static p:Resources.textCompareExcel}" Height="260" Width="600" Background="AliceBlue" Icon="/ENI2Test;component/Resources/bullet_ball_grey.ico">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="32" />
|
||||
<RowDefinition Height="60" />
|
||||
<RowDefinition Height="60" />
|
||||
<RowDefinition Height="28" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="80" />
|
||||
<ColumnDefinition Width="80" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Grid.Row="0" Grid.Column="1" TextWrapping="Wrap" HorizontalAlignment="Center" TextAlignment="Center">Drop your Excel file here</TextBlock>
|
||||
<Label VerticalAlignment="Center" Grid.Row="1" Grid.Column="0">
|
||||
<AccessText TextWrapping="Wrap">
|
||||
First (original) sheet
|
||||
</AccessText>
|
||||
</Label>
|
||||
<Image x:Name="imageSource" Grid.Row="1" Grid.Column="1" Margin="4" Source="../Resources/import2.png" AllowDrop="True" Drop="imageSource_Drop" DragEnter="imageSource_DragEnter"/>
|
||||
<TextBox TextWrapping="Wrap" x:Name="textBoxSource" Grid.Row="1" Grid.Column="2" IsReadOnly="True" Margin="2" Drop="imageSource_Drop" AllowDrop="True" DragEnter="imageSource_DragEnter" PreviewDragOver="textBoxSource_PreviewDragOver" PreviewMouseDown="textBoxSource_PreviewMouseDown"/>
|
||||
|
||||
<Label VerticalAlignment="Center" Grid.Row="2" Grid.Column="0">
|
||||
<AccessText TextWrapping="Wrap">
|
||||
Second (updated) sheet
|
||||
</AccessText>
|
||||
</Label>
|
||||
<Image x:Name="imageTarget" Grid.Row="2" Grid.Column="1" Margin="4" Source="../Resources/import1.png" AllowDrop="True" Drop="imageTarget_Drop" DragEnter="imageSource_DragEnter"/>
|
||||
<TextBox TextWrapping="Wrap" x:Name="textBoxTarget" Grid.Row="2" Grid.Column="2" IsReadOnly="True" Margin="2" AllowDrop="True" Drop="imageTarget_Drop" DragEnter="imageSource_DragEnter" PreviewDragOver="textBoxSource_PreviewDragOver" PreviewMouseDown="textBoxTarget_PreviewMouseDown"/>
|
||||
|
||||
<Button x:Name="buttonCompare" Margin="2" Grid.Row="3" Grid.Column="1" Content="Compare" IsEnabled="False" Click="buttonCompare_Click"/>
|
||||
</Grid>
|
||||
</enictrl:StatusWindowBase>
|
||||
246
ENI2/EditControls/CompareExcelDialog.xaml.cs
Normal file
246
ENI2/EditControls/CompareExcelDialog.xaml.cs
Normal file
@ -0,0 +1,246 @@
|
||||
// Copyright (c) 2017- schick Informatik
|
||||
// Description: Dialogbox zum Vergleichen zweier Excel via Named cells
|
||||
//
|
||||
|
||||
using bsmd.database;
|
||||
using Microsoft.Win32;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Windows;
|
||||
|
||||
namespace ENI2.EditControls
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for CompareExcelDialog.xaml
|
||||
/// </summary>
|
||||
public partial class CompareExcelDialog : Controls.StatusWindowBase
|
||||
{
|
||||
|
||||
#region Fields
|
||||
private string _sourcePath = null;
|
||||
private string _targetPath = null;
|
||||
#endregion
|
||||
|
||||
public CompareExcelDialog()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
#region Drag&Drop event handler
|
||||
|
||||
private void imageSource_Drop(object sender, DragEventArgs e)
|
||||
{
|
||||
string[] files = (string[]) e.Data.GetData(DataFormats.FileDrop);
|
||||
if (files != null)
|
||||
{
|
||||
foreach (string file in files)
|
||||
Console.WriteLine(file);
|
||||
if (files.Length > 0)
|
||||
{
|
||||
if (File.Exists(files[0]))
|
||||
{
|
||||
if (files[0].EndsWith("xls") || files[0].EndsWith("xlsx"))
|
||||
{
|
||||
_sourcePath = files[0];
|
||||
textBoxSource.Text = _sourcePath;
|
||||
}
|
||||
else
|
||||
{
|
||||
textBoxSource.Text = null;
|
||||
_sourcePath = null;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
textBoxSource.Text = null;
|
||||
_sourcePath = null;
|
||||
}
|
||||
EnableCompareButton();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
string link = (string)e.Data.GetData(DataFormats.Text);
|
||||
if(link != null)
|
||||
{
|
||||
|
||||
using (var client = new WebClient())
|
||||
{
|
||||
string fileName = Path.GetTempPath() + Guid.NewGuid().ToString() + ".xlsx";
|
||||
client.DownloadFile(link, fileName);
|
||||
}
|
||||
|
||||
/*
|
||||
// check if it is really an url, try to download the file and open it
|
||||
if (Uri.TryCreate(link, UriKind.Absolute, out Uri uri))
|
||||
{
|
||||
HttpClient client = new HttpClient();
|
||||
var response = await client.GetAsync(uri);
|
||||
string fileName = Path.GetTempPath() + Guid.NewGuid().ToString() + ".xlsx";
|
||||
using (var fs = new FileStream(fileName, FileMode.CreateNew))
|
||||
{
|
||||
await response.Content.CopyToAsync(fs);
|
||||
textBoxSource.Text = link;
|
||||
_sourcePath = fileName;
|
||||
EnableCompareButton();
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async void imageTarget_Drop(object sender, DragEventArgs e)
|
||||
{
|
||||
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
|
||||
if (files != null)
|
||||
{
|
||||
foreach (string file in files)
|
||||
Console.WriteLine(file);
|
||||
if (files.Length > 0)
|
||||
{
|
||||
if (File.Exists(files[0]))
|
||||
{
|
||||
if (files[0].EndsWith("xls") || files[0].EndsWith("xlsx"))
|
||||
{
|
||||
_targetPath = files[0];
|
||||
textBoxTarget.Text = _targetPath;
|
||||
}
|
||||
else
|
||||
{
|
||||
_targetPath = null;
|
||||
textBoxTarget.Text = null;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_targetPath = null;
|
||||
textBoxTarget.Text = null;
|
||||
}
|
||||
EnableCompareButton();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
string link = (string)e.Data.GetData(DataFormats.Text);
|
||||
if (link != null)
|
||||
{
|
||||
// check if it is really an url, try to download the file and open it
|
||||
if (Uri.TryCreate(link, UriKind.Absolute, out Uri uri))
|
||||
{
|
||||
HttpClient client = new HttpClient();
|
||||
var response = await client.GetAsync(uri);
|
||||
string fileName = Path.GetTempPath() + Guid.NewGuid().ToString() + ".xlsx";
|
||||
using (var fs = new FileStream(fileName, FileMode.CreateNew))
|
||||
{
|
||||
await response.Content.CopyToAsync(fs);
|
||||
textBoxTarget.Text = link;
|
||||
_targetPath = fileName;
|
||||
EnableCompareButton();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void imageSource_DragEnter(object sender, DragEventArgs e)
|
||||
{
|
||||
if (e.Data.GetDataPresent(DataFormats.FileDrop))
|
||||
{
|
||||
e.Effects = DragDropEffects.Copy;
|
||||
}
|
||||
}
|
||||
|
||||
private void textBoxSource_PreviewDragOver(object sender, DragEventArgs e)
|
||||
{
|
||||
e.Handled = true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region private methods
|
||||
|
||||
private void EnableCompareButton()
|
||||
{
|
||||
this.buttonCompare.IsEnabled = (_targetPath != null) && (_sourcePath != null);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Comparison button handler logic
|
||||
|
||||
private void buttonCompare_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Util.UIHelper.SetBusyState();
|
||||
|
||||
string defaultName = string.Format("{0}.xlsx", Guid.NewGuid().ToString());
|
||||
SaveFileDialog sfd = new SaveFileDialog
|
||||
{
|
||||
Filter = "Excel Files|*.xls;*.xlsx",
|
||||
FileName = defaultName
|
||||
};
|
||||
|
||||
if (sfd.ShowDialog() ?? false)
|
||||
{
|
||||
string resultPath = Excel.ExcelComparer.Compare(_sourcePath, _targetPath, sfd.FileName, out string errorMessage);
|
||||
if (!errorMessage.IsNullOrEmpty()) {
|
||||
MessageBox.Show(errorMessage, "Comparison error", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||
}
|
||||
if (File.Exists(resultPath))
|
||||
{
|
||||
if (new FileInfo(resultPath).Length > 0)
|
||||
{
|
||||
Process.Start(resultPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// reset input values
|
||||
this.textBoxSource.Text = null;
|
||||
this.textBoxTarget.Text = null;
|
||||
this._sourcePath = null;
|
||||
this._targetPath = null;
|
||||
EnableCompareButton();
|
||||
|
||||
this.Close();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region click on textboxes opens file selection
|
||||
|
||||
private void textBoxSource_PreviewMouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
|
||||
{
|
||||
OpenFileDialog ofd = new OpenFileDialog
|
||||
{
|
||||
Filter = "Excel Files|*.xls;*.xlsx"
|
||||
};
|
||||
if (ofd.ShowDialog() ?? false)
|
||||
{
|
||||
textBoxSource.Text = ofd.FileName;
|
||||
_sourcePath = ofd.FileName;
|
||||
}
|
||||
EnableCompareButton();
|
||||
}
|
||||
|
||||
private void textBoxTarget_PreviewMouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
|
||||
{
|
||||
OpenFileDialog ofd = new OpenFileDialog
|
||||
{
|
||||
Filter = "Excel Files|*.xls;*.xlsx"
|
||||
};
|
||||
if (ofd.ShowDialog() ?? false)
|
||||
{
|
||||
textBoxTarget.Text = ofd.FileName;
|
||||
_targetPath = ofd.FileName;
|
||||
}
|
||||
EnableCompareButton();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
@ -8,7 +8,7 @@
|
||||
xmlns:p="clr-namespace:ENI2.Properties"
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
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.RowDefinitions>
|
||||
<RowDefinition Height="28" />
|
||||
@ -60,7 +60,7 @@
|
||||
ButtonSpinnerLocation="Right"
|
||||
ParsingNumberStyle="Integer"
|
||||
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.BlackoutDates>
|
||||
<CalendarDateRange Start="1/1/0001" End="12/31/1799"/>
|
||||
|
||||
@ -7,7 +7,7 @@ using ENI2.Controls;
|
||||
using bsmd.database;
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using bsmd.ExcelReadService;
|
||||
using ENI2.Locode;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace ENI2.EditControls
|
||||
@ -23,7 +23,7 @@ namespace ENI2.EditControls
|
||||
{
|
||||
InitializeComponent();
|
||||
Loaded += CopyDeclarationDialog_Loaded;
|
||||
}
|
||||
}
|
||||
|
||||
#region Properties
|
||||
|
||||
@ -57,7 +57,7 @@ namespace ENI2.EditControls
|
||||
isComplete &= imo_OR_eni;
|
||||
|
||||
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;
|
||||
|
||||
@ -74,12 +74,11 @@ namespace ENI2.EditControls
|
||||
private void CopyDeclarationDialog_Loaded(object sender, System.Windows.RoutedEventArgs e)
|
||||
{
|
||||
this.OKClicked += VisitIdDialog_OKClicked;
|
||||
List<KeyValuePair<bsmd.database.Message.NSWProvider, string>> comboDataSource = new List<KeyValuePair<bsmd.database.Message.NSWProvider, string>>()
|
||||
List<KeyValuePair<Message.NSWProvider, string>> comboDataSource = new List<KeyValuePair<Message.NSWProvider, string>>()
|
||||
{
|
||||
new KeyValuePair<bsmd.database.Message.NSWProvider, string>( Message.NSWProvider.DBH, "DBH live" ),
|
||||
new KeyValuePair<bsmd.database.Message.NSWProvider, string>( Message.NSWProvider.DBH_TEST, "DBH Testsystem" ),
|
||||
new KeyValuePair<bsmd.database.Message.NSWProvider, string>( Message.NSWProvider.DUDR, "HIS-Nord live" ),
|
||||
new KeyValuePair<bsmd.database.Message.NSWProvider, string>( Message.NSWProvider.DUDR_TEST, "HIS-Nord Testsystem" )
|
||||
new KeyValuePair<Message.NSWProvider, string>( Message.NSWProvider.DBH, "DBH" ),
|
||||
new KeyValuePair<Message.NSWProvider, string>( Message.NSWProvider.DBH_MAERSK, "DBH / Maersk" ),
|
||||
new KeyValuePair<Message.NSWProvider, string>( Message.NSWProvider.DUDR, "HIS-Nord" ),
|
||||
};
|
||||
|
||||
this.comboBoxInitialHIS.ItemsSource = comboDataSource;
|
||||
@ -98,6 +97,15 @@ namespace ENI2.EditControls
|
||||
private void LocodePoC_PropertyChanged(object sender, PropertyChangedEventArgs e)
|
||||
{
|
||||
this.CheckComplete();
|
||||
string locode = this.locodePoC.LocodeValue;
|
||||
if ((locode != null) && (locode.Equals("DEBRV") || locode.Equals("DEBRE")))
|
||||
{
|
||||
this.comboBoxInitialHIS.SelectedValue = Message.NSWProvider.DBH;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.comboBoxInitialHIS.SelectedValue = Message.NSWProvider.DUDR;
|
||||
}
|
||||
}
|
||||
|
||||
private void doubleUpDownIMO_ValueChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs<object> e)
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
xmlns:p="clr-namespace:ENI2.Properties"
|
||||
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.ColumnDefinitions>
|
||||
<ColumnDefinition Width="0.3*"/>
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
<ColumnDefinition Width="3*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<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" />
|
||||
<xctk:DoubleUpDown Grid.Row="1" Grid.Column="1" Name="doubleUpDownBunkerQuantity" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2,2,2,2" FormatString="N1" TextAlignment="Left" />
|
||||
</Grid>
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
xmlns:p="clr-namespace:ENI2.Properties"
|
||||
mc:Ignorable="d"
|
||||
Title="{x:Static p:Resources.textCrewMember}" Height="274" Width="800" WindowStyle="SingleBorderWindow" Background="AliceBlue">
|
||||
Title="{x:Static p:Resources.textCrewMember}" Height="302" Width="800" WindowStyle="SingleBorderWindow" Background="AliceBlue">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="28" />
|
||||
@ -18,6 +18,7 @@
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*" />
|
||||
@ -33,31 +34,37 @@
|
||||
<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="labelIdDocType" Grid.Row="4" Grid.Column="0" Content="{x:Static p:Resources.textIdDocType}" />
|
||||
<Label Name="labelIdDocNumber" Grid.Row="4" Grid.Column="2" Content="{x:Static p:Resources.textIdDocNumber}" />
|
||||
<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="labelVisaNumber" Grid.Row="5" Grid.Column="0" Content="{x:Static p:Resources.textVisaNumber}" />
|
||||
<Label Name="labelIssuingState" Grid.Row="5" Grid.Column="2" Content="{x:Static p:Resources.textDocumentIssuingState}" />
|
||||
<Label Name="labelIssuingState" Grid.Row="6" Grid.Column="2" Content="{x:Static p:Resources.textDocumentIssuingState}" />
|
||||
<Label Name="labelExpiryDate" Grid.Row="6" Grid.Column="0" Content="{x:Static p:Resources.textDocumentExpiryDate}" />
|
||||
<!--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="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" ContextMenu="{DynamicResource ClearContextMenu}"/>
|
||||
<TextBox Grid.Row="2" Grid.Column="3" Width="auto" Name="textBoxPlaceOfBirth" 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="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" ContextMenu="{DynamicResource ClearContextMenu}" />
|
||||
<TextBox Grid.Row="4" Grid.Column="3" Width="auto" Name="textBoxIdDocNumber" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
||||
<ComboBox Grid.Row="4" Grid.Column="1" Name="comboBoxIdDocType" Margin="2" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" SelectedValuePath="Key" DisplayMemberPath="Value" ContextMenu="{DynamicResource ClearContextMenu}" />
|
||||
<TextBox Grid.Row="5" Grid.Column="1" Width="auto" Name="textBoxVisaNumber" Margin="2" MaxLength="100" VerticalContentAlignment="Center"/>
|
||||
<ComboBox Grid.Row="5" 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.BlackoutDates>
|
||||
<CalendarDateRange Start="1/1/0001" End="12/31/1899"/>
|
||||
<CalendarDateRange Start="1/1/2199" End="1/1/9999"/>
|
||||
</DatePicker.BlackoutDates>
|
||||
</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"/-->
|
||||
</Grid>
|
||||
</enictrl:EditWindowBase>
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
// Description: CREW Bearbeitungsdialog
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Windows;
|
||||
|
||||
using bsmd.database;
|
||||
@ -14,7 +15,8 @@ namespace ENI2.EditControls
|
||||
/// Interaction logic for EditCREWDialog.xaml
|
||||
/// </summary>
|
||||
public partial class EditCREWDialog : EditWindowBase
|
||||
{
|
||||
{
|
||||
|
||||
public EditCREWDialog()
|
||||
{
|
||||
InitializeComponent();
|
||||
@ -30,22 +32,45 @@ namespace ENI2.EditControls
|
||||
this.textBoxDuty.Text = this.CREW.CrewMemberDuty;
|
||||
this.textBoxLastName.Text = this.CREW.CrewMemberLastName;
|
||||
this.textBoxFirstName.Text = this.CREW.CrewMemberFirstName;
|
||||
this.comboBoxGender.ItemsSource = GlobalStructures.GenderList;
|
||||
//this.comboBoxGender.KeyUp += ComboBox_KeyUp;
|
||||
this.comboBoxGender.SelectedIndex = this.CREW.CrewMemberGender.HasValue ? this.CREW.CrewMemberGender.Value : -1;
|
||||
this.comboBoxGender.ItemsSource = GlobalStructures.GenderDict;
|
||||
this.comboBoxGender.SelectedValue = this.CREW.CrewMemberGender?.ToString();
|
||||
this.textBoxPlaceOfBirth.Text = this.CREW.CrewMemberPlaceOfBirth;
|
||||
this.comboBoxNationality.ItemsSource = bsmd.database.CREW.NationalityDict;
|
||||
//this.comboBoxNationality.KeyUp += ComboBox_KeyUp;
|
||||
this.comboBoxNationality.SelectedValue = this.CREW.CrewMemberNationality;
|
||||
this.datePickerDateOfBirth.SelectedDate = this.CREW.CrewMemberDateOfBirth;
|
||||
this.comboBoxIdDocType.ItemsSource = GlobalStructures.IDDocTypeList;
|
||||
//this.comboBoxIdDocType.KeyUp += ComboBox_KeyUp;
|
||||
this.comboBoxIdDocType.SelectedIndex = this.CREW.CrewMemberIdentityDocumentType.HasValue ? this.CREW.CrewMemberIdentityDocumentType.Value : -1;
|
||||
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.SelectedValue = this.CREW.CrewMemberIdentityDocumentType?.ToString();
|
||||
this.textBoxIdDocNumber.Text = this.CREW.CrewMemberIdentityDocumentId;
|
||||
this.textBoxVisaNumber.Text = this.CREW.CrewMemberVisaNumber;
|
||||
this.comboBoxIssuingState.ItemsSource = bsmd.database.CREW.NationalityDict;
|
||||
this.comboBoxIssuingState.SelectedValue = this.CREW.CrewMemberIdentityDocumentIssuingState;
|
||||
this.datePickerExpiryDate.SelectedDate = this.CREW.CrewMemberIdentityDocumentExpiryDate;
|
||||
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.comboBoxCountryOfBirth.ItemsSource = bsmd.database.CREW.NationalityDict;
|
||||
this.comboBoxCountryOfBirth.SelectedValue = this.CREW.CrewMemberCountryOfBirth;
|
||||
// this.textBoxEffects.Text = this.CREW.Effects;
|
||||
this.OKClicked += EditCREWDialog_OKClicked;
|
||||
this.AddVisible = true;
|
||||
}
|
||||
@ -54,17 +79,20 @@ namespace ENI2.EditControls
|
||||
{
|
||||
// copy back
|
||||
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.CrewMemberFirstName = this.textBoxFirstName.Text.Trim();
|
||||
this.CREW.CrewMemberGender = (this.comboBoxGender.SelectedIndex == -1) ? null : (byte?) this.comboBoxGender.SelectedIndex;
|
||||
this.CREW.CrewMemberGender = (this.comboBoxGender.SelectedIndex == -1) ? null : (byte?) byte.Parse((string) this.comboBoxGender.SelectedValue);
|
||||
this.CREW.CrewMemberPlaceOfBirth = this.textBoxPlaceOfBirth.Text.Trim();
|
||||
this.CREW.CrewMemberNationality = (this.comboBoxNationality.SelectedValue == null) ? "" : (string)this.comboBoxNationality.SelectedValue;
|
||||
this.CREW.CrewMemberNationality = (this.comboBoxNationality.SelectedValue == null) ? "" : (string) this.comboBoxNationality.SelectedValue;
|
||||
this.CREW.CrewMemberDateOfBirth = this.datePickerDateOfBirth.SelectedDate;
|
||||
this.CREW.CrewMemberIdentityDocumentType = (this.comboBoxIdDocType.SelectedIndex == -1) ? null : (byte?)this.comboBoxIdDocType.SelectedIndex;
|
||||
this.CREW.CrewMemberIdentityDocumentType = (this.comboBoxIdDocType.SelectedIndex == -1) ? null : (byte?) byte.Parse((string)this.comboBoxIdDocType.SelectedValue);
|
||||
this.CREW.CrewMemberIdentityDocumentId = this.textBoxIdDocNumber.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.CrewMemberCountryOfBirth = (this.comboBoxCountryOfBirth.SelectedValue == null) ? "" : (string)this.comboBoxCountryOfBirth.SelectedValue;
|
||||
// this.CREW.Effects = this.textBoxEffects.Text.Trim();
|
||||
}
|
||||
|
||||
private void EditCREWDialog_OKClicked()
|
||||
|
||||
@ -46,7 +46,7 @@
|
||||
<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" />
|
||||
<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"/>
|
||||
<Label Grid.Row="3" Grid.Column="5" Content="kg" />
|
||||
<TextBox Grid.Row="4" Grid.Column="1" Name="textBoxStowagePosition" MaxLength="24" Margin="2" VerticalContentAlignment="Center" />
|
||||
|
||||
@ -47,7 +47,7 @@ namespace ENI2.EditControls
|
||||
|
||||
this.OKClicked += EditIMSBCDialog_OKClicked;
|
||||
this.AddVisible = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void CopyValuesToEntity()
|
||||
{
|
||||
|
||||
@ -11,7 +11,7 @@ Copyright (c) 2017 schick Informatik
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
xmlns:p="clr-namespace:ENI2.Properties"
|
||||
mc:Ignorable="d"
|
||||
Title="{x:Static p:Resources.textLadg}" Height="246" Width="900" WindowStyle="SingleBorderWindow" Background="AliceBlue">
|
||||
Title="{x:Static p:Resources.textLadg}" Height="300" Width="900" WindowStyle="SingleBorderWindow" Background="AliceBlue">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="28" />
|
||||
@ -19,7 +19,7 @@ Copyright (c) 2017 schick Informatik
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*" />
|
||||
@ -35,6 +35,8 @@ Copyright (c) 2017 schick Informatik
|
||||
<Label Name="labelPortOfLoading" Grid.Row="4" Grid.Column="0" Content="{x:Static p:Resources.textCargoPortOfLoading}" />
|
||||
<Label Name="labelPortOfDischarge" Grid.Row="5" Grid.Column="0" Content="{x:Static p:Resources.textCargoPortOfDischarge}" />
|
||||
<Label Name="labelCodeNST3" Grid.Row="1" Grid.Column="2" Content="{x:Static p:Resources.textCargoCodeNST3}" />
|
||||
<Label Name="labelSearchNST2007" Grid.Row="3" Grid.Column="2" Content="{x:Static p:Resources.textSearchNST}" HorizontalAlignment="Right" />
|
||||
|
||||
|
||||
<ComboBox Grid.Row="0" Grid.Column="1" Name="comboBoxHandlingType" Margin="2" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True"/>
|
||||
<ComboBox Grid.Row="0" Grid.Column="3" Name="comboBoxLACodes" Margin="2" IsEditable="True" SelectedValuePath="Key" DisplayMemberPath="Value" StaysOpenOnEdit="True" IsTextSearchEnabled="True"/>
|
||||
@ -43,7 +45,26 @@ Copyright (c) 2017 schick Informatik
|
||||
<xctk:IntegerUpDown Grid.Row="2" Grid.Column="1" Name="integerUpDownNumberOfItems" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2,2,2,2" TextAlignment="Left"/>
|
||||
<xctk:DoubleUpDown Grid.Row="3" Grid.Column="1" Name="doubleUpDownGrossQuantity" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2,2,2,2" FormatString="N3" TextAlignment="Left"/>
|
||||
<enictrl:LocodeControl Grid.Column="1" Grid.Row="4" Width="Auto" x:Name="locodeControl_PortOfLoading" />
|
||||
<enictrl:LocodeControl Grid.Column="1" Grid.Row="5" Width="Auto" x:Name="locodeControl_PortOfDischarge" />
|
||||
|
||||
<enictrl:LocodeControl Grid.Column="1" Grid.Row="5" Width="Auto" x:Name="locodeControl_PortOfDischarge" Height="28" VerticalAlignment="Top"/>
|
||||
|
||||
<TextBox Grid.Row="3" Grid.Column="3" Margin="2" Name="textBoxSearchNSTList" TextChanged="textBoxSearchNSTList_TextChanged" VerticalContentAlignment="Center" />
|
||||
<Grid Grid.Row="4" Grid.Column="3" Grid.RowSpan="2">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="28" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<ListBox Name="listBoxNST2007" Margin="2" Grid.RowSpan="2" DisplayMemberPath="Key" MouseDoubleClick="listBoxNST2007_MouseDoubleClick" />
|
||||
<!--ComboBox Name="comboBoxSelectNST2007ListItem" Margin="2" DisplayMemberPath="Key" Grid.RowSpan="2" /-->
|
||||
<Button Name="buttonSetTemplate" Margin="2" Click="buttonSetTemplate_Click" BorderThickness="0" Background="Transparent" ToolTip="Apply template" HorizontalContentAlignment="Right" Grid.Column="1">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Image Source="../Resources/check.png" Margin="0,0,0,0" Height="20" Width="20" />
|
||||
</StackPanel>
|
||||
</Button>
|
||||
</Grid>
|
||||
|
||||
</Grid>
|
||||
</enictrl:EditWindowBase>
|
||||
|
||||
@ -2,13 +2,14 @@
|
||||
// Description: LADG Bearbeitungsdialog
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using bsmd.database;
|
||||
using ENI2.Controls;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Windows.Data;
|
||||
|
||||
|
||||
namespace ENI2.EditControls
|
||||
{
|
||||
@ -30,13 +31,17 @@ namespace ENI2.EditControls
|
||||
Properties.Resources.textDischarge
|
||||
};
|
||||
|
||||
private static List<KeyValuePair<string, string>> _nstList = null;
|
||||
|
||||
public EditLADGDialog()
|
||||
{
|
||||
InitializeComponent();
|
||||
Loaded += EditLADGDialog_Loaded;
|
||||
if (_nstList == null)
|
||||
_nstList = LocalizedLookup.GetNST2007List();
|
||||
}
|
||||
|
||||
public LADG LADG { get; set; }
|
||||
public LADG LADG { get; set; }
|
||||
|
||||
public MessageCore Core { get; set; }
|
||||
|
||||
@ -55,16 +60,16 @@ namespace ENI2.EditControls
|
||||
if (this.LADG.CargoHandlingType.HasValue)
|
||||
this.comboBoxHandlingType.SelectedIndex = this.LADG.CargoHandlingType.Value;
|
||||
|
||||
this.comboBoxLACodes.ItemsSource = LADG.LACodes;
|
||||
this.comboBoxLACodes.ItemsSource = LADG.LACodes;
|
||||
this.comboBoxLACodes.SelectedValue = this.LADG.CargoLACode;
|
||||
|
||||
this.integerUpDownNumberOfItems.Value = this.LADG.CargoNumberOfItems;
|
||||
this.doubleUpDownGrossQuantity.Value = this.LADG.CargoGrossQuantity_TNE;
|
||||
this.locodeControl_PortOfLoading.LocodeValue = this.LADG.PortOfLoading;
|
||||
this.locodeControl_PortOfDischarge.LocodeValue = this.LADG.PortOfDischarge;
|
||||
this.comboBoxLACodes.SelectedValue = this.LADG.CargoLACode;
|
||||
this.comboBoxLACodes.SelectedValue = this.LADG.CargoLACode;
|
||||
|
||||
this.comboBoxNSTCode.ItemsSource = LADG.CargoCodesNST;
|
||||
this.comboBoxNSTCode.ItemsSource = LADG.CargoCodesNST;
|
||||
this.comboBoxNSTCode.SelectedValue = this.LADG.CargoCodeNST;
|
||||
this.comboBoxNSTCode.SelectionChanged += ComboBoxNSTCode_SelectionChanged;
|
||||
this.comboBoxNST3Code.ItemsSource = LADG.CargoCodesNST3;
|
||||
@ -93,7 +98,7 @@ namespace ENI2.EditControls
|
||||
{
|
||||
if (this.comboBoxNSTCode.SelectedItem == null) return;
|
||||
// filter ItemsSource von NST3
|
||||
KeyValuePair<string, string> selectedItem = (KeyValuePair < string, string> ) this.comboBoxNSTCode.SelectedItem;
|
||||
KeyValuePair<string, string> selectedItem = (KeyValuePair < string, string> ) this.comboBoxNSTCode.SelectedItem;
|
||||
string key = selectedItem.Key;
|
||||
if (key.Length == 1) key = "0" + key;
|
||||
List<KeyValuePair<string, string>> filteredItemsSource = new List<KeyValuePair<string, string>>();
|
||||
@ -102,7 +107,7 @@ namespace ENI2.EditControls
|
||||
if (aPair.Value.StartsWith(key))
|
||||
filteredItemsSource.Add(aPair);
|
||||
}
|
||||
this.comboBoxNST3Code.ItemsSource = filteredItemsSource;
|
||||
this.comboBoxNST3Code.ItemsSource = filteredItemsSource;
|
||||
}
|
||||
|
||||
private void EditLADGDialog_OKClicked()
|
||||
@ -110,7 +115,44 @@ namespace ENI2.EditControls
|
||||
this.CopyValuesToEntity();
|
||||
}
|
||||
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
#region NST2007 list search/select event handler
|
||||
|
||||
private void textBoxSearchNSTList_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e)
|
||||
{
|
||||
if (textBoxSearchNSTList.Text.IsNullOrEmpty() || (textBoxSearchNSTList.Text.Length == 1))
|
||||
{
|
||||
this.listBoxNST2007.ItemsSource = null;
|
||||
// this.comboBoxSelectNST2007ListItem.ItemsSource = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
var result = _nstList.Where(kvp => kvp.Key.Contains(textBoxSearchNSTList.Text, StringComparison.OrdinalIgnoreCase));
|
||||
this.listBoxNST2007.ItemsSource = result;
|
||||
//this.comboBoxSelectNST2007ListItem.ItemsSource = result;
|
||||
}
|
||||
}
|
||||
|
||||
private void buttonSetTemplate_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if(this.listBoxNST2007.SelectedItem != null)
|
||||
{
|
||||
KeyValuePair<string, string> selectedTemplate = (KeyValuePair<string, string>) this.listBoxNST2007.SelectedItem;
|
||||
if(selectedTemplate.Value.Length == 3)
|
||||
{
|
||||
this.comboBoxNSTCode.SelectedValue = selectedTemplate.Value.Substring(0, 2);
|
||||
this.comboBoxNST3Code.SelectedValue = selectedTemplate.Value.Substring(2, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void listBoxNST2007_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
|
||||
{
|
||||
this.buttonSetTemplate_Click(null, null);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -52,7 +52,7 @@
|
||||
</DatePicker.BlackoutDates>
|
||||
</DatePicker>
|
||||
<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"/>
|
||||
<enictrl:LocodeControl x:Name="locodeGISIS" Grid.Row="8" Grid.Column="1" />
|
||||
<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;
|
||||
|
||||
if (this.LastTenPortFacilitiesCalled.PortFacilityShipSecurityLevel.HasValue)
|
||||
this.comboBoxShipSecurityLevel.SelectedIndex = (this.LastTenPortFacilitiesCalled.PortFacilityShipSecurityLevel.Value - 1);
|
||||
this.comboBoxShipSecurityLevel.SelectedIndex = this.LastTenPortFacilitiesCalled.PortFacilityShipSecurityLevel.Value - 1;
|
||||
else
|
||||
this.comboBoxShipSecurityLevel.SelectedIndex = -1;
|
||||
|
||||
@ -48,23 +48,33 @@ namespace ENI2.EditControls
|
||||
public void CopyValuesToEntity()
|
||||
{
|
||||
this.LastTenPortFacilitiesCalled.PortFacilityPortLoCode = this.locodePort.LocodeValue;
|
||||
this.LastTenPortFacilitiesCalled.PortFacilityPortName = this.textBoxPortName.Text;
|
||||
this.LastTenPortFacilitiesCalled.PortFacilityPortCountry = this.textBoxPortCountry.Text;
|
||||
this.LastTenPortFacilitiesCalled.PortFacilityPortName = this.textBoxPortName.Text.Trim();
|
||||
this.LastTenPortFacilitiesCalled.PortFacilityPortCountry = this.textBoxPortCountry.Text.Trim();
|
||||
this.LastTenPortFacilitiesCalled.PortFacilityDateOfArrival = this.datePickerATA.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)
|
||||
this.LastTenPortFacilitiesCalled.PortFacilityShipSecurityLevel = null;
|
||||
else
|
||||
this.LastTenPortFacilitiesCalled.PortFacilityShipSecurityLevel = (byte?) (this.comboBoxShipSecurityLevel.SelectedIndex + 1);
|
||||
this.LastTenPortFacilitiesCalled.PortFacilityGISISCodeLocode = this.locodeGISIS.LocodeValue;
|
||||
this.LastTenPortFacilitiesCalled.PortFacilitySecurityMattersToReport = this.textBoxSecurityMatters.Text;
|
||||
this.LastTenPortFacilitiesCalled.PortFacilitySecurityMattersToReport = this.textBoxSecurityMatters.Text.Trim();
|
||||
}
|
||||
|
||||
private void EditLast10PortFacilitiesDialog_OKClicked()
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
xmlns:p="clr-namespace:ENI2.Properties"
|
||||
mc:Ignorable="d"
|
||||
Title="{x:Static p:Resources.textPassenger}" Height="274" Width="800" WindowStyle="SingleBorderWindow" Background="AliceBlue">
|
||||
Title="{x:Static p:Resources.textPassenger}" Height="330" Width="800" WindowStyle="SingleBorderWindow" Background="AliceBlue">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="28" />
|
||||
@ -18,6 +18,8 @@
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*" />
|
||||
@ -32,37 +34,45 @@
|
||||
<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="labelIdDocType" Grid.Row="3" Grid.Column="0" Content="{x:Static p:Resources.textIdDocType}" />
|
||||
<Label Name="labelIdDocNumber" Grid.Row="3" Grid.Column="2" Content="{x:Static p:Resources.textIdDocNumber}" />
|
||||
<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="labelVisaNumber" Grid.Row="4" Grid.Column="0" Content="{x:Static p:Resources.textVisaNumber}" />
|
||||
<Label Name="labelPortOfEmbarkation" Grid.Row="4" Grid.Column="2" Content="{x:Static p:Resources.textPortOfEmbarkation}" />
|
||||
<Label Name="labelPortOfEmbarkation" Grid.Row="5" Grid.Column="2" Content="{x:Static p:Resources.textPortOfEmbarkation}" />
|
||||
<Label Name="labelPortOfDisEmbarkation" Grid.Row="5" Grid.Column="0 " Content="{x:Static p:Resources.textPortOfDisembarkation}" />
|
||||
<Label Name="labelTransitPassenger" Grid.Row="5" 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="labelExpiryDate" Grid.Row="6" 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="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="3" Width="auto" Name="textBoxFirstName" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
||||
<ComboBox Grid.Row="1" Grid.Column="1" Name="comboBoxGender" Margin="2" 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="1" Grid.Column="1" Name="comboBoxGender" 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.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="3" Grid.Column="1" Name="comboBoxIdDocType" Margin="2" IsEditable="True" StaysOpenOnEdit="True" IsTextSearchEnabled="True" />
|
||||
<TextBox Grid.Row="3" 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="4" Grid.Column="3" />
|
||||
<enictrl:LocodeControl x:Name="locodePortOfDisembarkation" Grid.Row="5" Grid.Column="1" />
|
||||
<CheckBox Name="checkBoxTransitPassenger" Grid.Row ="5" 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="6" Grid.Column="3" Name="datePickerExpiryDate" Margin="2" DisplayDateStart="1/1/1900" DisplayDateEnd="12/31/2199" PreviewKeyUp="DateTimePicker_PreviewKeyUpDate">
|
||||
<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" />
|
||||
<enictrl:LocodeControl x:Name="locodePortOfEmbarkation" Grid.Row="5" Grid.Column="3" />
|
||||
<CheckBox Name="checkBoxTransitPassenger" Grid.Row="6" Grid.Column="3" VerticalAlignment="Center" Margin="2"/>
|
||||
<DatePicker Grid.Row="7" Grid.Column="3" Name="datePickerExpiryDate" 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>
|
||||
|
||||
</Grid>
|
||||
</enictrl:EditWindowBase>
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
// Description: PAS Bearbeitungsdialog
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Windows;
|
||||
|
||||
using bsmd.database;
|
||||
@ -14,7 +15,8 @@ namespace ENI2.EditControls
|
||||
/// Interaction logic for EditPasDialog.xaml
|
||||
/// </summary>
|
||||
public partial class EditPASDialog : EditWindowBase
|
||||
{
|
||||
{
|
||||
|
||||
public EditPASDialog()
|
||||
{
|
||||
InitializeComponent();
|
||||
@ -29,17 +31,25 @@ namespace ENI2.EditControls
|
||||
// copy into fields
|
||||
this.textBoxLastName.Text = this.PAS.PassengerLastName;
|
||||
this.textBoxFirstName.Text = this.PAS.PassengerFirstName;
|
||||
this.comboBoxGender.ItemsSource = GlobalStructures.GenderList;
|
||||
//this.comboBoxGender.KeyUp += ComboBox_KeyUp;
|
||||
this.comboBoxGender.SelectedIndex = this.PAS.PassengerGender.HasValue ? this.PAS.PassengerGender.Value : -1;
|
||||
this.comboBoxGender.ItemsSource = GlobalStructures.GenderDict;
|
||||
this.comboBoxGender.SelectedValue = this.PAS.PassengerGender?.ToString();
|
||||
this.textBoxPlaceOfBirth.Text = this.PAS.PassengerPlaceOfBirth;
|
||||
this.comboBoxNationality.ItemsSource = bsmd.database.CREW.NationalityDict;
|
||||
//this.comboBoxNationality.KeyUp += ComboBox_KeyUp;
|
||||
this.comboBoxNationality.SelectedValue = this.PAS.PassengerNationality;
|
||||
this.datePickerDateOfBirth.SelectedDate = this.PAS.PassengerDateOfBirth;
|
||||
this.comboBoxIdDocType.ItemsSource = GlobalStructures.IDDocTypeList;
|
||||
//this.comboBoxIdDocType.KeyUp += ComboBox_KeyUp;
|
||||
this.comboBoxIdDocType.SelectedIndex = this.PAS.PassengerIdentityDocumentType.HasValue ? this.PAS.PassengerIdentityDocumentType.Value : -1;
|
||||
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.SelectedValue = this.PAS.PassengerIdentityDocumentType?.ToString();
|
||||
this.textBoxIdDocNumber.Text = this.PAS.PassengerIdentityDocumentId;
|
||||
this.textBoxVisaNumber.Text = this.PAS.PassengerVisaNumber;
|
||||
this.locodePortOfEmbarkation.LocodeValue = this.PAS.PassengerPortOfEmbarkation;
|
||||
@ -47,7 +57,24 @@ namespace ENI2.EditControls
|
||||
this.checkBoxTransitPassenger.IsChecked = this.PAS.PassengerInTransit;
|
||||
this.comboBoxIssuingState.ItemsSource = bsmd.database.CREW.NationalityDict;
|
||||
this.comboBoxIssuingState.SelectedValue = this.PAS.PassengerIdentityDocumentIssuingState;
|
||||
this.datePickerExpiryDate.SelectedDate = this.PAS.PassengerIdentityDocumentExpiryDate;
|
||||
|
||||
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.comboBoxCountryOfBirth.ItemsSource = bsmd.database.CREW.NationalityDict;
|
||||
this.comboBoxCountryOfBirth.SelectedValue = this.PAS.PassengerCountryOfBirth;
|
||||
this.textBoxEmergencyCare.Text = this.PAS.EmergencyCare;
|
||||
this.textBoxEmergencyContactNumber.Text = this.PAS.EmergencyContactNumber;
|
||||
|
||||
this.OKClicked += EditPasDialog_OKClicked;
|
||||
this.AddVisible = true;
|
||||
@ -58,11 +85,11 @@ namespace ENI2.EditControls
|
||||
// copy back
|
||||
this.PAS.PassengerLastName = this.textBoxLastName.Text.Trim();
|
||||
this.PAS.PassengerFirstName = this.textBoxFirstName.Text.Trim();
|
||||
this.PAS.PassengerGender = (this.comboBoxGender.SelectedIndex == -1) ? null : (byte?)this.comboBoxGender.SelectedIndex;
|
||||
this.PAS.PassengerGender = (this.comboBoxGender.SelectedIndex == -1) ? null : (byte?)byte.Parse((string)this.comboBoxGender.SelectedValue);
|
||||
this.PAS.PassengerPlaceOfBirth = this.textBoxPlaceOfBirth.Text.Trim();
|
||||
this.PAS.PassengerNationality = (this.comboBoxNationality.SelectedValue == null) ? "" : (string)this.comboBoxNationality.SelectedValue;
|
||||
this.PAS.PassengerDateOfBirth = this.datePickerDateOfBirth.SelectedDate;
|
||||
this.PAS.PassengerIdentityDocumentType = (this.comboBoxIdDocType.SelectedIndex == -1) ? null : (byte?)this.comboBoxIdDocType.SelectedIndex;
|
||||
this.PAS.PassengerIdentityDocumentType = (this.comboBoxIdDocType.SelectedIndex == -1) ? null : (byte?) byte.Parse((string)this.comboBoxIdDocType.SelectedValue);
|
||||
this.PAS.PassengerIdentityDocumentId = this.textBoxIdDocNumber.Text.Trim();
|
||||
this.PAS.PassengerVisaNumber = this.textBoxVisaNumber.Text.Trim();
|
||||
this.PAS.PassengerPortOfEmbarkation = this.locodePortOfEmbarkation.LocodeValue;
|
||||
@ -70,7 +97,11 @@ namespace ENI2.EditControls
|
||||
this.PAS.PassengerInTransit = this.checkBoxTransitPassenger.IsChecked;
|
||||
this.PAS.PassengerIdentityDocumentIssuingState = (this.comboBoxIssuingState.SelectedValue == null) ? "" : (string)this.comboBoxIssuingState.SelectedValue;
|
||||
this.PAS.PassengerIdentityDocumentExpiryDate = this.datePickerExpiryDate.SelectedDate;
|
||||
}
|
||||
|
||||
this.PAS.PassengerCountryOfBirth = (this.comboBoxCountryOfBirth.SelectedValue == null) ? "" : (string)this.comboBoxCountryOfBirth.SelectedValue;
|
||||
this.PAS.EmergencyCare = this.textBoxEmergencyCare.Text.Trim();
|
||||
this.PAS.EmergencyContactNumber = this.textBoxEmergencyContactNumber.Text.Trim();
|
||||
}
|
||||
|
||||
private void EditPasDialog_OKClicked()
|
||||
{
|
||||
|
||||
@ -7,7 +7,7 @@ using System.Windows;
|
||||
using ENI2.Controls;
|
||||
|
||||
using bsmd.database;
|
||||
using bsmd.ExcelReadService;
|
||||
using ENI2.Locode;
|
||||
|
||||
namespace ENI2.EditControls
|
||||
{
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
xmlns:p="clr-namespace:ENI2.Properties"
|
||||
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.RowDefinitions>
|
||||
<RowDefinition Height="28" />
|
||||
@ -21,6 +21,7 @@
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="2*" />
|
||||
@ -46,8 +47,10 @@
|
||||
<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="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="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="3" Width="auto" Name="textBoxEMail" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
||||
@ -64,10 +67,10 @@
|
||||
<PasswordBox Grid.Row="6" Grid.Column="3" Width="auto" Name="passwordBoxPassword" Margin="2" VerticalContentAlignment="Center" />
|
||||
<TextBox Grid.Row="7" Grid.Column="1" Width="auto" Name="textBoxUserEMail" Margin="2" MaxLength="100" VerticalContentAlignment="Center" />
|
||||
<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="1" VerticalAlignment="Center" Name="checkBoxArchived" Margin="2" />
|
||||
|
||||
<Label Grid.Row="9" Grid.Column="1" Name="dateTimePickerCreated" FontStyle="Italic" />
|
||||
<Label Grid.Row="9" Grid.Column="3" Name="dateTimePickerChanged" FontStyle="Italic" />
|
||||
<Label Grid.Row="10" Grid.Column="1" Name="dateTimePickerCreated" FontStyle="Italic" />
|
||||
<Label Grid.Row="10" Grid.Column="3" Name="dateTimePickerChanged" FontStyle="Italic" />
|
||||
|
||||
</Grid>
|
||||
</enictrl:EditWindowBase>
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
// Description: Reporting party Bearbeitungsdialog
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Windows;
|
||||
|
||||
using bsmd.database;
|
||||
@ -24,6 +25,7 @@ namespace ENI2.EditControls
|
||||
|
||||
private void EditReportingPartyDialog_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
this.textBoxCity.Text = this.ReportingParty.City;
|
||||
this.textBoxCountry.Text = this.ReportingParty.Country;
|
||||
this.textBoxEMail.Text = this.ReportingParty.EMail;
|
||||
@ -39,6 +41,8 @@ namespace ENI2.EditControls
|
||||
|
||||
this.checkBoxAdministrator.IsChecked = this.ReportingParty.IsAdmin;
|
||||
this.checkBoxArchived.IsChecked = this.ReportingParty.IsArchived;
|
||||
this.checkBoxEditor.IsChecked = this.ReportingParty.IsEditor;
|
||||
|
||||
|
||||
this.dateTimePickerChanged.Content = this.ReportingParty.Changed.HasValue ? this.ReportingParty.Changed.ToString() : "";
|
||||
this.dateTimePickerCreated.Content = this.ReportingParty.Created.HasValue ? this.ReportingParty.Created.ToString() : "";
|
||||
@ -60,15 +64,16 @@ namespace ENI2.EditControls
|
||||
this.ReportingParty.PostalCode = this.textBoxPostalCode.Text.Trim();
|
||||
this.ReportingParty.StreetAndNumber = this.textBoxStreetNumber.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())
|
||||
{
|
||||
this.ReportingParty.SetPassword(this.passwordBoxPassword.Password);
|
||||
}
|
||||
|
||||
this.ReportingParty.IsAdmin = this.checkBoxAdministrator.IsChecked ?? false;
|
||||
this.ReportingParty.IsAdmin = this.checkBoxAdministrator.IsChecked ?? false;
|
||||
this.ReportingParty.IsArchived = this.checkBoxArchived.IsChecked ?? false;
|
||||
this.ReportingParty.IsEditor = this.checkBoxEditor.IsChecked ?? false;
|
||||
|
||||
// save value
|
||||
DBManager.GetSingleCon(Properties.Settings.Default.ConnectionString).Save(this.ReportingParty);
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
xmlns:p="clr-namespace:ENI2.Properties"
|
||||
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.RowDefinitions>
|
||||
<RowDefinition Height="32" />
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
// Copyright (c) 2017 schick Informatik
|
||||
// Description:
|
||||
// Description: Edit SERV and SERV_template entities
|
||||
//
|
||||
|
||||
using System.Windows;
|
||||
@ -14,36 +14,78 @@ namespace ENI2.EditControls
|
||||
/// </summary>
|
||||
public partial class EditSERVDialog : EditWindowBase
|
||||
{
|
||||
|
||||
#region Construction
|
||||
|
||||
public EditSERVDialog()
|
||||
{
|
||||
InitializeComponent();
|
||||
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)
|
||||
{
|
||||
this.OKClicked += EditSERVDialog_OKClicked;
|
||||
|
||||
// copy into fields
|
||||
this.textBoxServiceName.Text = this.SERV.ServiceName;
|
||||
this.textBoxServiceBeneficiary.Text = this.SERV.ServiceBeneficiary;
|
||||
this.textBoxServiceInvoiceRecipient.Text = this.SERV.ServiceInvoiceRecipient;
|
||||
this.AddVisible = true;
|
||||
if (this.SERV != null)
|
||||
{
|
||||
this.textBoxServiceName.Text = this.SERV.ServiceName;
|
||||
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()
|
||||
{
|
||||
// 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 != null)
|
||||
{
|
||||
// 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()
|
||||
{
|
||||
this.CopyValuesToEntity();
|
||||
}
|
||||
|
||||
public SERV SERV { get; set; }
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
xmlns:p="clr-namespace:ENI2.Properties"
|
||||
mc:Ignorable="d"
|
||||
Title="{x:Static p:Resources.textWaste}" Height="340" Width="800" WindowStyle="SingleBorderWindow" Background="AliceBlue">
|
||||
Title="{x:Static p:Resources.textWaste}" Height="312" Width="800" WindowStyle="SingleBorderWindow" Background="AliceBlue">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="28" />
|
||||
@ -18,7 +18,7 @@
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="3*" />
|
||||
@ -33,18 +33,17 @@
|
||||
<Label Name="labelWasteAmountRetained" Grid.Row="4" Grid.Column="0" Content="{x:Static p:Resources.textWasteRetained}" />
|
||||
<Label Name="labelPortOfDeliver" Grid.Row="5" Grid.Column="0" Content="{x:Static p:Resources.textWastePortOfDelivery}" />
|
||||
<Label Name="labelEstimatedWasteGenerated" Grid.Row="6" Grid.Column="0" Content="{x:Static p:Resources.textWasteGeneratedUntilNextPort}" />
|
||||
<Label Name="labelAmountWasteDischarged" Grid.Row="7" Grid.Column="0" Content="{x:Static p:Resources.textWasteAmountDischargedLastPort}" />
|
||||
|
||||
<ComboBox Name="comboBoxWasteCode" Grid.Row="0" Grid.Column="1" Margin="2" SelectedValuePath="Key" DisplayMemberPath="Value" />
|
||||
<Label Name="labelWasteCodeText" Grid.Row="0" Grid.Column="2" />
|
||||
<TextBox Name="textBoxDescription" Grid.Row="1" Grid.Column="1" 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" Maximum="9999.999" />
|
||||
<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" Maximum="9999.999"/>
|
||||
<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" Maximum="9999.999"/>
|
||||
|
||||
<xctk:DoubleUpDown Grid.Row="2" Grid.Column="1" Name="doubleUpDownAmountDisposed" 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"/>
|
||||
<xctk:DoubleUpDown Grid.Row="4" Grid.Column="1" Name="doubleUpDownAmountRetained" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2" FormatString="N3" TextAlignment="Left"/>
|
||||
<enictrl:LocodeControl Grid.Row="5" Grid.Column="1" x:Name="locodePortOfDeliveryRemainingWaste" />
|
||||
<xctk:DoubleUpDown Grid.Row="6" Grid.Column="1" Name="doubleUpDownAmountGeneratedTilNextPort" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2" FormatString="N3" TextAlignment="Left"/>
|
||||
<xctk:DoubleUpDown Grid.Row="7" Grid.Column="1" Name="doubleUpDownAmountWasteDischargedLastPort" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2" FormatString="N3" TextAlignment="Left"/>
|
||||
|
||||
<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 = "4" Grid.Column="2" />
|
||||
|
||||
@ -28,14 +28,12 @@ namespace ENI2.EditControls
|
||||
private void EditWasteDialog_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Dictionary<int, string> codeDict = new Dictionary<int, string>();
|
||||
for (int i = 0; i < WAS.RequiredCodes.Length; i++)
|
||||
{
|
||||
codeDict[WAS.RequiredCodes[i]] = string.Format("{0} - {1}", WAS.RequiredCodes[i], WAS.RequiredTypes[i]);
|
||||
}
|
||||
foreach (string key in WAS.WasteCodeDict.Keys)
|
||||
codeDict.Add(int.Parse(key), string.Format("{0} - {1}", key, WAS.WasteCodeDict[key]));
|
||||
|
||||
this.comboBoxWasteCode.ItemsSource = codeDict;
|
||||
this.comboBoxWasteCode.SelectedValue = this.Waste.WasteType;
|
||||
this.textBoxDescription.Text = this.Waste.WasteDescription;
|
||||
this.doubleUpDownAmountWasteDischargedLastPort.Value = this.Waste.WasteDisposedAtLastPort_MTQ;
|
||||
this.textBoxDescription.Text = this.Waste.WasteDescription;
|
||||
this.doubleUpDownAmountDisposed.Value = this.Waste.WasteDisposalAmount_MTQ;
|
||||
this.doubleUpDownAmountGeneratedTilNextPort.Value = this.Waste.WasteAmountGeneratedTillNextPort_MTQ;
|
||||
this.doubleUpDownAmountRetained.Value = this.Waste.WasteAmountRetained_MTQ;
|
||||
@ -52,8 +50,7 @@ namespace ENI2.EditControls
|
||||
this.Waste.WasteType = (int)this.comboBoxWasteCode.SelectedValue;
|
||||
else
|
||||
this.Waste.WasteType = null;
|
||||
this.Waste.WasteDescription = this.textBoxDescription.Text?.Trim();
|
||||
this.Waste.WasteDisposedAtLastPort_MTQ = this.doubleUpDownAmountWasteDischargedLastPort.Value;
|
||||
this.Waste.WasteDescription = this.textBoxDescription.Text?.Trim();
|
||||
this.Waste.WasteDisposalAmount_MTQ = this.doubleUpDownAmountDisposed.Value;
|
||||
this.Waste.WasteAmountGeneratedTillNextPort_MTQ = this.doubleUpDownAmountGeneratedTilNextPort.Value;
|
||||
this.Waste.WasteAmountRetained_MTQ = this.doubleUpDownAmountRetained.Value;
|
||||
|
||||
80
ENI2/EditControls/EditWasteReceiptDialog.xaml
Normal file
80
ENI2/EditControls/EditWasteReceiptDialog.xaml
Normal file
@ -0,0 +1,80 @@
|
||||
<enictrl:EditWindowBase x:Class="ENI2.EditControls.EditWasteReceiptDialog"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:ENI2.EditControls"
|
||||
xmlns:enictrl="clr-namespace:ENI2.Controls"
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
xmlns:p="clr-namespace:ENI2.Properties"
|
||||
mc:Ignorable="d"
|
||||
Title="{x:Static p:Resources.textWasteReceipt}" Height="340" Width="800" WindowStyle="SingleBorderWindow" Background="AliceBlue">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="56" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="10" />
|
||||
<RowDefinition Height="28" />
|
||||
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="2*" />
|
||||
<ColumnDefinition Width="20" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<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="labelPortReceptionFacilityProviderName" Grid.Row="2" Grid.Column="0" Content="{x:Static p:Resources.textPortReceptionFacilityProviderName}" />
|
||||
<Label Name="labelTemplate" Grid.Row="3" Grid.Column="0" Content="{x:Static p:Resources.textAgentTemplate}" />
|
||||
<Label Name="labelTreatmentFacilityProvider" Grid.Row="4" Grid.Column="0" Content="{x:Static p:Resources.textTreatmentFacilityProviderDisplay}" />
|
||||
<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="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"/>
|
||||
<Grid Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="1" Name="gridTemplateControls" Visibility="Visible">
|
||||
<Grid.ColumnDefinitions>
|
||||
<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"/-->
|
||||
|
||||
</Grid>
|
||||
</enictrl:EditWindowBase>
|
||||
153
ENI2/EditControls/EditWasteReceiptDialog.xaml.cs
Normal file
153
ENI2/EditControls/EditWasteReceiptDialog.xaml.cs
Normal file
@ -0,0 +1,153 @@
|
||||
// Copyright (c) 2017- schick Informatik
|
||||
// Description: Waste receipts bearbeiten..
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Windows;
|
||||
|
||||
using bsmd.database;
|
||||
using ENI2.Controls;
|
||||
|
||||
namespace ENI2.EditControls
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for EditWasteReceiptDialog.xaml
|
||||
/// </summary>
|
||||
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()
|
||||
{
|
||||
InitializeComponent();
|
||||
Loaded += EditWasteReceiptDialog_Loaded;
|
||||
AddClicked += () => { /* this.comboBoxWasteCode.Focus(); */ };
|
||||
}
|
||||
|
||||
public WAS_RCPT WAS_RCPT { get; set; }
|
||||
|
||||
private async void EditWasteReceiptDialog_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.textIdentificationNumber.Text = this.WAS_RCPT.IdentificationNumber;
|
||||
this.textBoxPortReceptionFacilityName.Text = this.WAS_RCPT.PortReceptionFacilityName;
|
||||
this.textBoxPortReceptionFacilityProviderName.Text = this.WAS_RCPT.PortReceptionFacilityProviderName;
|
||||
this.textBoxTreatmentFacilityProvider.Text = this.WAS_RCPT.TreatmentFacilityProviderText;
|
||||
this.dateTimePickerWasteDeliveryDateFrom.Value = this.WAS_RCPT.WasteDeliveryDateFrom?.ToLocalTime();
|
||||
this.dateTimePickerWasteDeliveryDateTo.Value = this.WAS_RCPT.WasteDeliveryDateTo?.ToLocalTime();
|
||||
|
||||
OKClicked += EditWasteReceiptDialog_OKClicked;
|
||||
this.AddVisible = true;
|
||||
|
||||
_wsdpTemplates = await DBManagerAsync.GetWasteDisposalServiceProviderTemplatesAsync();
|
||||
_wsdpTemplates.Sort();
|
||||
Trace.WriteLine($"{_wsdpTemplates.Count} WSDP templates loaded");
|
||||
|
||||
this.comboBox_WSDPTemplate.ItemsSource = _wsdpTemplates;
|
||||
}
|
||||
public void CopyValuesToEntity()
|
||||
{
|
||||
// copy back
|
||||
this.WAS_RCPT.IdentificationNumber = this.textIdentificationNumber.Text?.Trim();
|
||||
this.WAS_RCPT.PortReceptionFacilityName = this.textBoxPortReceptionFacilityName.Text?.Trim();
|
||||
this.WAS_RCPT.PortReceptionFacilityProviderName = this.textBoxPortReceptionFacilityProviderName.Text?.Trim();
|
||||
this.WAS_RCPT.TreatmentFacilityProviderText = this.textBoxTreatmentFacilityProvider.Text?.Trim();
|
||||
this.WAS_RCPT.WasteDeliveryDateFrom = this.dateTimePickerWasteDeliveryDateFrom.Value?.ToUniversalTime();
|
||||
this.WAS_RCPT.WasteDeliveryDateTo = this.dateTimePickerWasteDeliveryDateTo.Value?.ToUniversalTime();
|
||||
}
|
||||
|
||||
private void EditWasteReceiptDialog_OKClicked()
|
||||
{
|
||||
this.CopyValuesToEntity();
|
||||
}
|
||||
|
||||
private void comboBox_WSDPTemplate_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
|
||||
{
|
||||
Trace.WriteLine("WSDP combo selection changed");
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
32
ENI2/EditControls/EditWasteReceivedDialog.xaml
Normal file
32
ENI2/EditControls/EditWasteReceivedDialog.xaml
Normal file
@ -0,0 +1,32 @@
|
||||
<enictrl:EditWindowBase x:Class="ENI2.EditControls.EditWasteReceivedDialog"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:ENI2.EditControls"
|
||||
xmlns:enictrl="clr-namespace:ENI2.Controls"
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
xmlns:p="clr-namespace:ENI2.Properties"
|
||||
mc:Ignorable="d"
|
||||
Title="{x:Static p:Resources.textWasteReceived}" Height="200" Width="600" WindowStyle="SingleBorderWindow" Background="AliceBlue">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="56" />
|
||||
<RowDefinition Height="28" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*" />
|
||||
<ColumnDefinition Width="2*" />
|
||||
<ColumnDefinition Width="20" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Label Name="labelCode" Grid.Row="0" Grid.Column="0" Content="{x:Static p:Resources.textCode}" />
|
||||
<Label Name="labelDescription" Grid.Row="1" Grid.Column="0" Content="{x:Static p:Resources.textDescription}" />
|
||||
<Label Name="labelAmountDisposed" Grid.Row="2" Grid.Column="0" Content="{x:Static p:Resources.textWasteAmountReceived}" />
|
||||
|
||||
<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" />
|
||||
<xctk:DoubleUpDown Grid.Row="2" Grid.Column="1" Name="doubleUpDownAmountReceived" ShowButtonSpinner="False" ParsingNumberStyle="Any" Margin="2" FormatString="N3" TextAlignment="Left" Maximum="9999.999"/>
|
||||
|
||||
</Grid>
|
||||
</enictrl:EditWindowBase>
|
||||
62
ENI2/EditControls/EditWasteReceivedDialog.xaml.cs
Normal file
62
ENI2/EditControls/EditWasteReceivedDialog.xaml.cs
Normal file
@ -0,0 +1,62 @@
|
||||
// Copyright (c) 2017- schick Informatik
|
||||
// Description: Wasre received bearbeiten..
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows;
|
||||
|
||||
using bsmd.database;
|
||||
using ENI2.Controls;
|
||||
|
||||
namespace ENI2.EditControls
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for EditWasteReceivedDialog.xaml
|
||||
/// </summary>
|
||||
public partial class EditWasteReceivedDialog : EditWindowBase
|
||||
{
|
||||
public EditWasteReceivedDialog()
|
||||
{
|
||||
InitializeComponent();
|
||||
Loaded += EditWasteReceivedDialog_Loaded;
|
||||
AddClicked += () => { this.comboBoxWasteCode.Focus(); };
|
||||
}
|
||||
|
||||
public WasteReceived WasteReceived { get; set; }
|
||||
|
||||
public void CopyValuesToEntity()
|
||||
{
|
||||
// copy back
|
||||
if (this.comboBoxWasteCode.SelectedValue != null)
|
||||
this.WasteReceived.WasteCode = (string) this.comboBoxWasteCode.SelectedValue;
|
||||
else
|
||||
this.WasteReceived.WasteCode = null;
|
||||
this.WasteReceived.WasteDescription = this.textBoxDescription.Text.Trim();
|
||||
this.WasteReceived.AmountWasteReceived_MTQ = this.doubleUpDownAmountReceived.Value;
|
||||
}
|
||||
|
||||
private void EditWasteReceivedDialog_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
Dictionary<string, string> codeDict = new Dictionary<string, string>();
|
||||
for (int i = 0; i < WAS.WasteCodes.Length; i++)
|
||||
{
|
||||
codeDict[WAS.WasteCodes[i]] = string.Format("{0} - {1}", WAS.WasteCodes[i], WAS.WasteCodeDescriptions[i]);
|
||||
}
|
||||
this.comboBoxWasteCode.ItemsSource = codeDict;
|
||||
this.comboBoxWasteCode.SelectedValue = this.WasteReceived.WasteCode;
|
||||
this.textBoxDescription.Text = this.WasteReceived.WasteDescription;
|
||||
this.doubleUpDownAmountReceived.Value = this.WasteReceived.AmountWasteReceived_MTQ;
|
||||
|
||||
OKClicked += EditWasteReceiptDialog_OKClicked;
|
||||
this.AddVisible = true;
|
||||
}
|
||||
|
||||
private void EditWasteReceiptDialog_OKClicked()
|
||||
{
|
||||
this.CopyValuesToEntity();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@ -8,7 +8,7 @@
|
||||
xmlns:p="clr-namespace:ENI2.Properties"
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
mc:Ignorable="d"
|
||||
Title="{x:Static p:Resources.textErrors}" Height="300" Width="600" Background="AliceBlue" Icon="/ENI2;component/Resources/bullet_ball_red.ico">
|
||||
Title="{x:Static p:Resources.textErrors}" Height="300" Width="600" Background="AliceBlue" Icon="/ENI2Test;component/Resources/bullet_ball_red.ico" Topmost="False">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*" />
|
||||
|
||||
31
ENI2/EditControls/FixImportDialog.xaml
Normal file
31
ENI2/EditControls/FixImportDialog.xaml
Normal file
@ -0,0 +1,31 @@
|
||||
<enictrl:EditWindowBase x:Class="ENI2.EditControls.FixImportDialog"
|
||||
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:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
xmlns:local="clr-namespace:ENI2.EditControls"
|
||||
mc:Ignorable="d"
|
||||
Title="Fix imported value" Height="200" Width="500" WindowStyle="SingleBorderWindow" Background="AliceBlue" Loaded="EditWindowBase_Loaded">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="80" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
</Grid.RowDefinitions>
|
||||
<Label Content="Type" Grid.Row="0" Grid.Column="0" Focusable="False" />
|
||||
<Label Content="Value" Grid.Row="1" Grid.Column="0" Focusable="False" />
|
||||
<Label Content="Selection" Grid.Row="2" Grid.Column="0" Focusable="False"/>
|
||||
|
||||
<TextBlock FontWeight="DemiBold" VerticalAlignment="Center" Name="textBlockType" Grid.Row="0" Grid.Column="1" Focusable="False">bla</TextBlock>
|
||||
<TextBlock FontWeight="DemiBold" VerticalAlignment="Center" Name="textBlockValue" Grid.Row="1" Grid.Column="1" Focusable="False">bla</TextBlock>
|
||||
<xctk:WatermarkComboBox Grid.Column="1" Grid.Row="2" x:Name="comboBoxValues" IsTextSearchEnabled="True" SelectedValuePath="Key" DisplayMemberPath="Value" Margin="2" IsEditable="True" Watermark="Select an appropriate value" />
|
||||
<enictrl:LocodeControl Grid.Column="1" Grid.Row="2" x:Name="locodeControl" Visibility="Hidden" />
|
||||
|
||||
</Grid>
|
||||
</enictrl:EditWindowBase>
|
||||
88
ENI2/EditControls/FixImportDialog.xaml.cs
Normal file
88
ENI2/EditControls/FixImportDialog.xaml.cs
Normal file
@ -0,0 +1,88 @@
|
||||
// Copyright (c) 2017- schick Informatik
|
||||
// Description: Dialog to confirm values during excel import (e.g. CREW/PAS)
|
||||
//
|
||||
|
||||
using ENI2.Controls;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows;
|
||||
using bsmd.database;
|
||||
|
||||
namespace ENI2.EditControls
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for FixImportDialog.xaml
|
||||
/// </summary>
|
||||
public partial class FixImportDialog : EditWindowBase
|
||||
{
|
||||
public FixImportDialog()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public bool LocodeMode
|
||||
{
|
||||
get { return this.locodeControl.Visibility == Visibility.Visible; }
|
||||
set
|
||||
{
|
||||
this.locodeControl.Visibility = value ? Visibility.Visible : Visibility.Hidden;
|
||||
this.comboBoxValues.Visibility = value ? Visibility.Hidden : Visibility.Visible;
|
||||
}
|
||||
}
|
||||
|
||||
public string SelectedValue
|
||||
{
|
||||
get
|
||||
{
|
||||
if (LocodeMode) return this.locodeControl.LocodeValue;
|
||||
return this.comboBoxValues.SelectedValue as string;
|
||||
}
|
||||
}
|
||||
|
||||
public string Value
|
||||
{
|
||||
get { return this.textBlockValue.Text; }
|
||||
set { this.textBlockValue.Text = value.Trim(); }
|
||||
}
|
||||
|
||||
public string ValueType
|
||||
{
|
||||
get { return this.textBlockType.Text; }
|
||||
set { this.textBlockType.Text = value; }
|
||||
}
|
||||
|
||||
public Dictionary<string, string> SelectionValues { get; set; }
|
||||
|
||||
#region event handler
|
||||
|
||||
private void EditWindowBase_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.EnableOK(false);
|
||||
|
||||
if (LocodeMode)
|
||||
{
|
||||
this.locodeControl.SetFocus();
|
||||
this.locodeControl.PropertyChanged += LocodeControl_PropertyChanged;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.comboBoxValues.ItemsSource = this.SelectionValues;
|
||||
this.comboBoxValues.SelectionChanged += ComboBoxValues_SelectionChanged;
|
||||
this.comboBoxValues.Focus();
|
||||
}
|
||||
}
|
||||
|
||||
private void ComboBoxValues_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
|
||||
{
|
||||
string val = this.comboBoxValues.SelectedValue as string;
|
||||
this.EnableOK(!val.IsNullOrEmpty());
|
||||
}
|
||||
|
||||
private void LocodeControl_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||
{
|
||||
this.EnableOK(!locodeControl.LocodeValue.IsNullOrEmpty());
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
@ -7,7 +7,7 @@
|
||||
xmlns:enictrl="clr-namespace:ENI2.Controls"
|
||||
xmlns:p="clr-namespace:ENI2.Properties"
|
||||
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.RowDefinitions>
|
||||
<RowDefinition Height="*" />
|
||||
|
||||
43
ENI2/EditControls/NewDGItemDialog.xaml
Normal file
43
ENI2/EditControls/NewDGItemDialog.xaml
Normal file
@ -0,0 +1,43 @@
|
||||
<enictrl:EditWindowBase x:Class="ENI2.EditControls.NewDGItemDialog"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:ENI2.EditControls"
|
||||
xmlns:enictrl="clr-namespace:ENI2.Controls"
|
||||
xmlns:p="clr-namespace:ENI2.Properties"
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
mc:Ignorable="d"
|
||||
Title="{x:Static p:Resources.textNewDGItem}" Height="350" Width="600" WindowStyle="SingleBorderWindow" Background="AliceBlue" ResizeMode="CanResize"
|
||||
Icon="/ENI2Test;component/Resources/bullet_ball_yellow.ico" Loaded="EditWindowBase_Loaded">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="90" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
<RowDefinition Height="28" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="80" />
|
||||
<ColumnDefinition Width="2*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Label Content="{x:Static p:Resources.textType}" Grid.Row="0" Grid.Column="0" />
|
||||
<ComboBox Name="comboBoxType" Grid.Column="1" Grid.Row="0" Margin="2" SelectionChanged="comboBoxType_SelectionChanged" />
|
||||
<Label Content="{x:Static p:Resources.textDescription}" Grid.Row="1" Grid.Column="0" />
|
||||
<xctk:WatermarkTextBox Margin="2" Watermark="{x:Static p:Resources.textSearch}" Name="textBoxSearchDescription" Grid.Row="1" Grid.Column="1" TextChanged="textBoxSearchDescription_TextChanged" />
|
||||
<ListBox Name="listBoxDescription" Grid.Column="1" Grid.Row="2" Margin="2" SelectionChanged="listBoxDescription_SelectionChanged" />
|
||||
<Label Content="{x:Static p:Resources.textRemarks}" Grid.Row="5" Grid.Column="0" />
|
||||
<Border BorderThickness="1" Grid.Column="1" Grid.Row="3" Grid.RowSpan="2" BorderBrush="Black" Margin="2">
|
||||
<TextBlock Name="textBlockDescription" Margin="2" Background="LightGray" TextWrapping="Wrap"/>
|
||||
</Border>
|
||||
<Border BorderThickness="1" Grid.Column="1" Grid.Row="5" Grid.RowSpan="2" BorderBrush="Black" Margin="2">
|
||||
<TextBlock Name="textBlockRemarks" Margin="2" Background="LightGray" TextWrapping="Wrap" />
|
||||
</Border>
|
||||
|
||||
</Grid>
|
||||
</enictrl:EditWindowBase>
|
||||
92
ENI2/EditControls/NewDGItemDialog.xaml.cs
Normal file
92
ENI2/EditControls/NewDGItemDialog.xaml.cs
Normal file
@ -0,0 +1,92 @@
|
||||
// Copyright (c) 2017- schick Informatik
|
||||
// Description: select a new DG item from a selection of templates
|
||||
//
|
||||
|
||||
using bsmd.database;
|
||||
using ENI2.Controls;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace ENI2.EditControls
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for NewDGItemDialog.xaml
|
||||
/// </summary>
|
||||
public partial class NewDGItemDialog : EditWindowBase
|
||||
{
|
||||
private List<HAZPosTemplate> _data = null;
|
||||
private static readonly object filterLock = new object();
|
||||
|
||||
public NewDGItemDialog()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public HAZPosTemplate SelectedTemplate
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.listBoxDescription.SelectedItem as HAZPosTemplate;
|
||||
}
|
||||
}
|
||||
|
||||
private void EditWindowBase_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// load combo boxes
|
||||
_data = LocalizedLookup.LoadHAZTemplates();
|
||||
this.listBoxDescription.ItemsSource = _data;
|
||||
this.comboBoxType.ItemsSource = Enum.GetValues(typeof(HAZPosTemplate.SublistType));
|
||||
this.OkVisible = false;
|
||||
this.AddVisible = true;
|
||||
}
|
||||
|
||||
private void comboBoxType_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
FilterDescriptions();
|
||||
}
|
||||
|
||||
private void listBoxDescription_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
if (this.listBoxDescription.SelectedItem is HAZPosTemplate selectedTemplate)
|
||||
{
|
||||
this.textBlockDescription.Text = selectedTemplate.Description;
|
||||
this.textBlockRemarks.Text = selectedTemplate.Comment;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.textBlockDescription.Text = "";
|
||||
this.textBlockRemarks.Text = "";
|
||||
}
|
||||
}
|
||||
|
||||
private void textBoxSearchDescription_TextChanged(object sender, TextChangedEventArgs e)
|
||||
{
|
||||
FilterDescriptions();
|
||||
}
|
||||
|
||||
private void FilterDescriptions()
|
||||
{
|
||||
string searchText = this.textBoxSearchDescription.Text.Trim();
|
||||
|
||||
lock (filterLock)
|
||||
{
|
||||
IEnumerable<HAZPosTemplate> filtered = _data;
|
||||
if (searchText.Length > 0)
|
||||
{
|
||||
filtered = _data.Where(elem => elem.Description.ToUpperInvariant().Contains(searchText.ToUpperInvariant()));
|
||||
}
|
||||
if (this.comboBoxType.SelectedItem != null)
|
||||
{
|
||||
HAZPosTemplate.SublistType sType = (HAZPosTemplate.SublistType)this.comboBoxType.SelectedItem;
|
||||
filtered = filtered.Where(elem => elem.TemplateType == sType);
|
||||
}
|
||||
this.listBoxDescription.ItemsSource = filtered;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@ -8,7 +8,7 @@
|
||||
xmlns:p="clr-namespace:ENI2.Properties"
|
||||
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
|
||||
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.RowDefinitions>
|
||||
|
||||
@ -30,13 +30,16 @@ namespace ENI2.EditControls
|
||||
|
||||
List<KeyValuePair<Message.NSWProvider, string>> comboDataSource = new List<KeyValuePair<Message.NSWProvider, string>>()
|
||||
{
|
||||
new KeyValuePair<Message.NSWProvider, string>( Message.NSWProvider.DUDR, "HIS-Nord live" ),
|
||||
new KeyValuePair<Message.NSWProvider, string>( Message.NSWProvider.DUDR_TEST, "HIS-Nord Testsystem" ),
|
||||
new KeyValuePair<Message.NSWProvider, string>(Message.NSWProvider.DBH, "DBH")
|
||||
new KeyValuePair<Message.NSWProvider, string>( Message.NSWProvider.DUDR, "HIS-Nord" ),
|
||||
new KeyValuePair<Message.NSWProvider, string>(Message.NSWProvider.DBH, "DBH"),
|
||||
new KeyValuePair<Message.NSWProvider, string>(Message.NSWProvider.DBH_MAERSK, "DBH / Maersk")
|
||||
};
|
||||
|
||||
this.comboBoxInitialHIS.ItemsSource = comboDataSource;
|
||||
this.comboBoxInitialHIS.SelectedIndex = 0;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
public bool ValidId { get; set; }
|
||||
@ -53,11 +56,19 @@ namespace ENI2.EditControls
|
||||
|
||||
private void textBoxVisitTransitId_TextChanged(object sender, TextChangedEventArgs e)
|
||||
{
|
||||
this.CheckComplete();
|
||||
this.CheckComplete();
|
||||
if(textBoxVisitTransitId.Text.StartsWith("DEBRE") || textBoxVisitTransitId.Text.StartsWith("DEBRV"))
|
||||
{
|
||||
this.comboBoxInitialHIS.SelectedValue = Message.NSWProvider.DBH;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.comboBoxInitialHIS.SelectedValue = Message.NSWProvider.DUDR;
|
||||
}
|
||||
}
|
||||
|
||||
private void CheckComplete()
|
||||
{
|
||||
{
|
||||
bool isComplete = true;
|
||||
|
||||
bool isValidId = bsmd.database.Util.IsVisitId(textBoxVisitTransitId.Text) || bsmd.database.Util.IsTransitId(textBoxVisitTransitId.Text);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user