From 7506fb74b73c6c9896ab444e331caafce465bffa Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Tue, 10 Nov 2015 06:58:46 +0000 Subject: [PATCH] Korrekturen, Version 2.4.6 --- Stundensheet.xlsx | Bin 18339 -> 18512 bytes nsw/Source/SQL/Update_2.0_To_2.4.sql | 10 +++ .../SendNSWMessageService/NSWSendService.cs | 5 ++ nsw/Source/bsmd.database/HAZ.cs | 59 +++++++++++++++--- .../LastTenPortFacilitiesCalled.cs | 8 +-- nsw/Source/bsmd.database/MDH.cs | 20 +++--- nsw/Source/bsmd.database/Message.cs | 5 ++ nsw/Source/bsmd.database/MessageCore.cs | 13 ++-- .../Properties/AssemblyProductInfo.cs | 2 +- .../Properties/AssemblyProjectInfo.cs | 2 +- ...vitiesDuringLastTenPortFacilitiesCalled.cs | 13 ++-- nsw/Source/bsmd.dbh/Request.cs | 2 + nsw/Source/bsmd.herberg.FormService/Util.cs | 22 +++++-- 13 files changed, 123 insertions(+), 38 deletions(-) create mode 100644 nsw/Source/SQL/Update_2.0_To_2.4.sql diff --git a/Stundensheet.xlsx b/Stundensheet.xlsx index 74e3b04a2575c0241139ee744e217410549f4c11..e886a0aaac0bb6ce5dce1f62d048633d83d33c13 100644 GIT binary patch delta 9158 zcmZ8{WmFwa5G4>SSa5fDg4@I0g1b8ecV}=X_=7y$CAd2Tm*5T|1a}Bd&?VpQo|XAC zea`KgF1yuTeWox0dO8uh7MlQxedoDF7aIzy&^kp0ivVC}^>(n2GhB1j@4yIPn+DLY z=hgF?Z>4ytJU1Qm9D{M`eSLkj?D;W1>sJ@2G(JC|jS?g`j417bvZxCOH}(2AQ5eSc za|2&(%#Es&lx^F`+r|L?&eQ7B*L9N8 zo}RxqHGpt{i2u{^y+@0n(n$Z>h3~_SyKhf>CrCJOy~{BHFY<1ksO!@I-g`agAeYRT zHQ}7B<1~fn`oVQ&(kga*>GZ|nNXQ`IDJr4=>gvVC8ZDux^X%8BU!%ikmVT5k!!?h0 z+t+(@b2&y0A+%&2`^Se4Za33EIu3Uy=y>l$Zh?;T;hpo8x!bF$j`a0y+dD~$j8C5; z??g^>l)XCA@dVpxQZyg`I^U<0Jj#eq*gy)2%u82I=bi&5G2lz4BV7GFjv~ zmONpytN+F-wtY3Yku_n_+pcO!9aGfI0Z{Yr_!`juWVQa$><{7tAnH!&vX6n?8)U=P z=M6iG7^OvZrv5r%(9?R+FK5gVSkC@|<_Dt*D+3}0W>w6*16C6dMC z?_n|ch@!0EOA-k^yxDHun%+oL(S0cN8b6`-?1@6X;sM8ef2FF0Vi)vUDCk398DQzt z&ulW1=wb5qrFdZ7YPuzJkMc-sz@{8&pb|$M`4>XOy!be})$%0aA5;9^d?k7T=sUhZ z=GJD)o$pOr)3p%?97QF;6k-y{!YJ>?4ucDav8N-L=xeo9rbRu`;>zVrWD`F|)|=pe zY(`nR&xm47D?7lE)M1K&f_Z2DnG(RqloBOJdDn@^thaK2@&491(K5Mi@wj|lc8a&> z@85IaCEm8?$7N}*u%Yl;S5x1>`aQG;{5oO-w6^XYB-V;WV()5D zYU%d)k1OI6b>k_u}C$DB#FDGG~6??A}rII4ud&|&%frlVCa5)x2sX7kO1 zbW`72cvw}GJ2~V%GakD}HzQKtTwHX4tr{cPMvrqgu6&0UpAcTtmV6#z1``|vf2M>Axxl1D}~vWg4Gorn~J>F=`L$6L^&ze}%G zlw(>dQX|P(48+n25Yfmtq(kjaG>da#D@G z88IYTpzC8M>9Mlrs_km^V^W91zYR|%zQlx5>7Yj%J!kKL=ks{L=+`8A=9Pa&pC~Z> zJm1f&IPmnHl2z3(ZLMtQ*u%frx2HB$wJ>%$su2^--qaUs3e~9Vx2vxr$&RD@8 zo589Y-d7tqX8&bYVlCE$s5oZQE;8iia%g6kur_r z>&$5@W{K|VcLqmvl{8xH^^)KmhXG`#(o2eOOvW%-e^0hvduc?8!-*$s>(hO?V!Jk* z8?5qx6){g#m5-EsI)_{T#giA&ZQcv8(MrEkeoNum@#%fM!SVkt@>D^vOQ8qcB zCYZuWrF2jb8dSlR&pGqKQXKbk(ppleVs~;LM?gJ&<|%lR`inT1zAOb*lsYLsBvjn2H%}#W>o^XbeeiNEhp!zYX_f z<)_fo%NS6^Hn~doKC~;by`D*fsVE=XZIv*Zr-Jj}e?cKdz+2y<?EQxr&YDlb>r-6u1ITLOF;hYtu7aVM)8~6aZ^$`Xd>e^W)D==m{h_k;kc#z z4IX;I28mW0i{mGNSOCeqx_-)?-ZA%k8|g6nZ@8MvDWuWnymqu!2F?t|mhwNS|MXeK z#4HF;5i#0C;JqbQ1^wNZByjm+<9n+dg**AeuL`e86=VHMI;D9w$4q@kJky9rBZ=H) zgVx6VgW!!2U1bTDS?M_#`%$Zo6kac3^t?%2GI-90M8MvEG+ve$vS`O(+mD)MrYTrN z@e72G<@qN#mLbc9OZJ7HY7#?9Pz`fNTt=_A0M!j%Gulk%h$1-7`$Do1#ZY4IOX@VU zdr=l`XayGm*7jE%I%#jn^Kz!pm8-I=m4Ua7?_0V^*3sQe2gSdMY!fr)#QsBy-UIq3 z=>O;~4%)9Ji6`e1*&c^jw=u9FDcNGE5A)JMYxiF}4(n`S)p zv?pc##tm~b*AP4^bsvaoSP5X889v?EO&q!gcZV*;xh8?~7FNZg_eODwyS86m$Q{J~ zXT9_6+(C0>4z7?~Q4Oc30?o7zx`XDlQU@BQW56r455ZcEy;@Dxus%U|)O!=j zm(*bSCYbTYRe0N$$+&3DyXp;Zm`e>r7Q%?m*1fNhpgeP~!RON8)Bgo%kD%`@f5{Nlpdl;>ce}mg=9^2FOA0148 zK_tT*NLcyDF5+)|IqGkr|6zS77?E{-QXu+kaRJ81E&{b9#xSmbGLO+`D6D8|lv8|U zc&zVdKl5!1)O0Qfe7 zi#|CZ7tY9t&6&+>Su?+Xi>~}_i)d>o#P^mJqB6=5ocH!=>NU7qO5_OdZV##Asl?Z? z{1SjORVv*XCoS|Nx!A9*p&BXM12xnBt>_ARYJqg|FE}tgNR6Y~9rS&^8t8KFJPs5YT{BIh^ zVmLTBcZwKRV=XTW6qdN6M0V_^)!c3`nE6e(N@EAJzioxLr@q#_o;%@^ynI zb-Y`a7BqA4+s%I>5a_c>ca`*jQb&oelWKw?U0jtC-=b_$>sqlCmy?zWKOBf?vIt4aYU^hcormILEa!lb!pqE2dW8qLa(O|i1(wdAgaLTjer zi>gwcSYnY|CT;EllEuqvUsvG;PV2~(=dFe!laJ)#H4N!GVgx9*<>(}a+%L!FOIvKS z%Te7|`^Dtw$UdoMW3w4fM_LWlwyVHLPvh3WQKwQE*}Qy_hoUbJOawz#MJt5JQj0DR z#T5n>3^|b_6E9$hL{%9*N1!&jC(t~g^NLEWiL_ZsVfS}|Pz^sxdb!2Tg`s{ zBHA=DRmM(3*>7X$Y~1IxZ<8Oyd^OdHWNBEW$``AhLMGxIT-rNK6wX4vgAL$AS-z}C zDXHJMVQUXI587+eD|Q>MijFP#3w6|QB70p~8IE9`)jwU8;gYS2J%K2HPL1ZV9W+=r zFVNRq(;oxyY=@`G!bF{lq;BX(Fw9>ZsK1)|MnSbu#AxzWst6;nbyL9WbhX#kBu3r~ z!^0(0`~}asuVWz~x$nxsLRgCgg+BG(O3Sw~8bV98{~m@FQRJ0`8(A$N9o;G}N!rJ> znRWh6HJcwfPz*I~2n9F0f{+ihgK}twN;}%!U91lTX~o})&V>n0@9GCdjtXk91gd#b zec8sf5$J+j3@0H^Ag#?^C?K)z>P53zyBTC&hr0NP@J(_wu`=0Ul<+T&SC@cuM&UwT z|5OQf=+==1!uyNRZ`;Z@qgz6LL~pgm5@DpW{q`J|7yN+GBMUxs6b2Q zuaM%5M5*}jD;YL3UxjFSG2JS6{yZtFSf(QmwLRE zg|4~Ts_8%EiwxY7^EtiCzr|J2Q|-1ozzI*w8$SJ5$(kxAMjvRCN!r?vZZy*gycex1 zCo3v0;YrjxDZ4hH*igMm@wKYOrA{;TC`XA=+w_!FBj9K*F(uUPiAR|c7piV80dCP$ z^whg8%D4xKXy04v7}AFpsEmAiv!~9GutYA*Hxn1KY9b{kr&`w3ug~l*Jm$&pKaKAD znh?fep=gsqi*e+jXY=`8zGNN!{3>Vu^ti1Qffn9a9zC|F;Css`Jft}lexx~S@h&A~ zB?t2P99sGE@kksb)lT@$6aY?^zTYMUDs;CUIgi}^y}T^_BZ2pMlIY{vo)QM9{vE)^Eg`>f@0)H272#TDSeSaDXMS zGIeYG+4PLOZseV=zJY>8)w3^>MKFR;X@V((uAcO|>KP34Y`p)yEL{$0UB?Fqs%A-| zXtt_@;ovG_D^Nx6-wNw4#oS8NJO*ZQA+UwKgdO>wiNAGw2LyW zStO3?JQ95A6L)1q50oO55eNXnU`=zTJS5%VEDAx_!Q+4~_nMc0 zNt!~;R?)&Ft^2ALwxWdrX`d1xB+ssdK52zk4I>+Ro2st!Cx5CE;_u^SCX8MqR(-)D zFGL8sY<~&?Xy0x7fVxjPu!WixbecL!)tA3`o}Lg_KW^Gf;PC`t7t%qi8=}@osQrvi z$Rp^v3C@8&Ij-+f8wfS#8+- z@7Xk5fYKU&m&JwpT<)tsR5YurdP7c(^8j!ax{rR$X$lT`|8eTdD zpD%@dHoDJ+1Ao0HbcclV%xsz~Zy0QM*Y5c~1m5!n*x%8axitapIe||Xqg`#j1l>ma zd#^CiP$?Lq*Z|SBRZsKU0As3h+7&LX8P!uq_tpDi=^-R; z9J!Jm)l)ghYUE_@tGi7c&57n-8BdGnieu9c3s!Yg$ch@{6UVqaBlAmnAz1e_Lx~k@ zu~N$7+Vk^WmBzqZOU|*C9Zupe}qBqj6eKoX_F^$`ZB2dD5uY0%WYc~V{(nxa0AbGeL3)a zna!DSHbF<0v7oe8T~n@~GbBVrrMA_SpJxyO-YmZjhQ8ZP!jsf{Cd|*r2H>h=L-XVTh8n8m12oc%BdN37z+7X1?IsRvqj42RnaNGa^#jVyd{ohM#M; zT^0l--p92U{_#9n6NOlopn!p~AaPWH*w@0aP+(n^xZi~CN^*@^6;6g5J$Q3qUVx}~ z=jj~v^oWQqPHeTPSJHZ1S0KgTTe9>w{?&G|y~{{_S1LWj zvlYo<79Je(E7ytbb3#It+smRA&wJl{R;z1ojdQLY3Bu@N%6pSr`^O(vq2!I2)<@Ay zlJ2L4toW4Z6P(i5L{Yt?qkungDDU@QsfNQEkzevBaODn;_Ik9bB5GT9`$&+6 zLEq=zh6MTVMs!eoG9rWnDmq0ymjszJ=i%f!rdR0>n8wtpPTiWQI?eVu8Re-?NR{cn zg5&e0cq4~QJM3;*t9AV*pVjPPy2+uvNFzu^d87OjuwddNrxns8)+EbF$^=Mr3~)FG zxzX`-9^=ydS(j@N)Hr#PL=l`n>IW=w#nX_C|2@jgk-z(}^hYiZ$i4Czs&YT)bk_yN z<{}Rzdd~XKm8_lB4lb;Vi@Z|`As)t<-bFX1H~1X z_Yx{ahu({Ml*{A-QNq2I$dEQBLxCiyDcj;JAYUL|_gfiFXo>B`xw9Igeg7m+Z%4co zeyuPrb;jX~3f8s(PLRT<#=@0NYmOSL9a+C3N4=7;Y*#-1bz<`kclxo#*U2WcjfEmR z2#ch9H8Q55y_Cj*4`c9oQKal-)SubiW~QIx2~szJA|jtH`l^vFV8aAHFz3QNsFqrJ z2|ex5e1DGWr&3#|-h81STvxuzBTq?g92do~{cEwb4<~$ASWL5Z#t&pC<07nlOmJ=qm1@eiUi_(HB%+ zFz71gbWFO$k(za$G3jrlG}(C0+}iY;U|g5ghXIrTSf;wP_L_QJbHPXQx^9r18J%je zPUC-!l-RE=gewf1=)G*|%R&*Ep&!S5Xi_~rZp9%ZBFq(7XuB${GP^J*Ff(TCG#fxV ztqP0`gjQ}}ONSd>&$EGj?eyObT%#CvkQnc-tEAvW&-xI=F-xgrJM|3eB~sWlp@DHM zTZKXZzS#U-i=<0qDG?N~zV- zetU5RQ_~G76hm{;)8m@p)cC`W`-OLB$@7!Mj+#;Jw16f!5shaAo5Ug*8@WZm(j$#P zDZW*_>qq1S(_{-7{38A%|AvQSE>ZfJVEUh}R%bjO-$R+F4$hjFNN#*g!Zd0e|J1;< z>YSOvgrZL|8?>qM!rN>G$ziAk_NZcnIfw1F5NseVt4>3^JnEMQHU~(-dcgZoJ|bcH z49-*`jBmjeqbc<}MPKv@*@Sxueor_6R8T>wa(7=F#2?7Fwr(8n3A7z^{uDUHfQ?pPhhLkHpU10lUye(z5dJ$IB5nPY zQ>J_e1%-j0BFRey*sjvDQ0wNWF;YN_e@^0ab|EZn+F7P>Ne5F+^{Zb{$6XyuKc=iV z*9sMxTR%;_TAUc3Vn#U1g4MqVnDf=5NZ!j!rq%>(kGlr)bE~kjCw#=px*y8f8Pfc7 z8J<2aL=}rlfe8&e6<|(f`7p$FwGctgM;4Xp?2Q%6{2dbvtgQZ+i~CKl9f@hR3f|3l zU-A~^=g ziU-M#sXNRSNW!UCc)!c3Vel%uDCA0Bo6NXjr1#Dbl-YKs^8EAAzDPqjtx1R*KNwzp z*pqm;>F3Nq_A>&BX!wfz$rlzcP+c}9WZ3UJb3H0%ILBg9Lsc>w4-DI&T5{Z!X)vR2 zn=-{NpN95V0l1BKKaWw)BX1=IO>kk}v0>}NE>z;F0c|+maRZo?*)uoN&k9L>oY-nH zuu)N4O}{gsZ5QbnDI+h*<5)BXf%p%#UUgb|iDqNIn%`nzB^c`mnDCH{Wti%?b=IJr zgh=sDx1@UwOC!BLFJwvcDXj#eS!p=@hO*Of&x=$%2?|)Hr5N3lBI`tT2iZL@>i4rA zWf!sFNeDl0voyH`COoG>+k{lno=c+@1xlKATDq=uUdMx9WGUN~Ov)--h3AMU zFpv>9Yz{vh5q@-!VUqMq|L~H6E{fBjC!qcgt_emGPo$w z3r~vwm3Gi%v`r)L|6A{J(T08o1EitKespFgvohzAqtGJALDp4DU&UTyE zs$3``<6@V!MF9pJWtj1D{Sm0A>fuz;TX%v}NTW_ACFzQ=v1S9?JfUR8^5EbEyv5b! zUpk?)F15)}#=fd^Z`y2sDsA1jXOMPrCG+Pb=%`lcSV5=SE8PjWy5^{iAzI&%hpIqg z$Z+lrbKh{R`{^B7&Pf+cdO)-lS6c?psha%$NeqnTKh#dBfuXu^z>*(jN zYM{y7XPy#yNWwdR6g8K~hJRHka#Lg|(amOA_VUNa7{v^6!qXr?A^vUUO~4 z?dtJeSKG`TmQU9cFkX5ZvDKw!?$dS|DcYXrI%Gbv7ngN-I5V@bx_sm5b+_0tla$tX z?h;V)A{yK(9z^c5Y%j2Xd=1S}-Cb~7e)_u@&?59qN*R%s_B8X8JU7^Hxg)P5Y3sx* zfZ@5c_HW$G-O0>lZmywJ;nvBHci`HJDF3QcV9@Q4@u#>a;N&mU{q2~=Fh?t67L zdJyQF^kcE|R=^gxQomW?)i)I}X3gq1uN;i`8T#~WNYbETy(?;``F6(Bd-D6jk>0fP z#B!VZP~R;MJ%*A{kh2RazW`d)XcFIV=mLiVb5tc9< zF49vd23vRe1K$a#*Er`R$@eSFf|z^o@OyFK}RU^dpR6Qh`lQ44Iop1Y=GPc!vPnq$L}v0Dn@RTVN-SO z?JO`ox{4+7^q5Ae8emN*@qBmiFmO^$&u}t`1>xS8Pv6=1Dg33nz8d%mp5i*>>)S~a zJ{A)0tnu0smuA$LXtXk#I_9aaX1yqw9V|-Pg-I>|0U#@ld|blhS?W!Y*Hex1$&^a@;CRVwJ4*1ftf$BfO@Ir5Udh(D8H0@`Vi?0JWJ&P8*zJ75nX7Bwso5S&&-rF^=gt8k1@*{gP6A)4M8|tvW>fzr z^3ZA`8*)IHHIGzOR!%o}aHrhOozQ~H!SUB{6}SVPjiFauuLXZqpObg;GEbB~9c#(O zu79N|b1}|6Gp1~>l&$Xj0W z)|8D#3WK$@pMg{jNk&wXU)f4i(;~rq(tC>_F%lj6k#t4;3AR|Nqk2F__CPxuSJQql zC}K|%b}kZCK9V0VG8#vg?`+1s)oVAJw>4SMQM%P7)1Wjkctpo56S}y0;BUkT)i#KG zg#*>_%tCA@KG!NWW`}Cmggd6HZQw7Ul_}#zxz0#V@Na^fweREk*v#Rw@2$>&0eVSt zF!{J+ecFQ)VL;y#Fq`>l7r(xeNW+WomuAtI0j2g?{iIz*W$o0$8?I?^-L*EN?g2N$ zH2A@?Kf08REcB1+jJv(NT@i|DBhf2J&l1F}?>HRSx@y`F+f0Uu<`-sh0>lZ?fltsAcOpF~HW?C5+HiOU-7>=_I8y9wY@W?E5 zet6BHzY;qNaYFxa_Np&az#D&o@|Bg%1&Nx762qDn)AG$;xL0LN_eW(_rAZJ(5~=gJ zDuI%KT}9@a6&K<6gU+85f4|a}^mbsbzpcQxe1=tjDHg2=RakZMA2wOoyrpQ(M91@& zG-?`6%crG>4*u0~uag=r4yG`z=y-ao@V;a5cM0Hw_36PfoZ)1fGardg@s||B!|w^@ zukn|tUDoQxgc2SZ*G=_Gf7m$(R0g1i!KUT4*#h zU(~G)f+h!|ONH*VR}7bMaSOmn5@s6#0ynstqW62UBp<&x_}{2U68?M^(nQqN$Deq9 zyFxVW5r7u72-op%`{z9nm#2_JFL}i0MMpu7W)8}i>B5~%C}ksfS<~p=g|DKqH*p3v ztR(J&Q+XpEPha`}!p2luZme~$o!jbySgNxG zLL7HHIgP^tKUN&N4%^=SnWZ7bN@IFYfh(RQDgJ6M6Lh;Q*BP>a04R8V+eEw<`2r?S zX)F_AM~O9s87{hU3DNQPXUrGe+nP0BxC;6xi>gC6A5)dJ518N)Kd#VqStV$dIk%s< zk2$kimw20^%7@+#jZh+A5>IOmx>gGspEIjBT*Eo#_${Sg8TI&`f7{mUE0|H~v^gMu z9_+74{uvHF$qvA9bS4zenDf%8WnDOv+k8-OBIET(<1rXMmj^FEt9}0Gu-#~M2F}CS z7HzEcj(PXn2QCjp-3%TE?zpTtk6fJGd%CCo_#|;v>n^3*#9TY}gl4rXym746c3xRV_ish zwi|MkP?2Mog+_{yHO-}S7I!aC#GK)f5ce+B#}@pVgGd=xw$YrktRjRM4w3HlgeIz{a|*)%`{rspebj9h;slf@(({z-fDz+{VdzoK4G53Axsts zvtRoJl>k6%CV0>QPTNB`*}-gM^)z^7(0$d9k2gLMh1NtQ(Jm&RSuSDv;WMdL$)tW- z-P{9xSjE`4+Rgjf$h00^tOlC{vy-Y(X?xQihC>9Mo!A_LxN`Y+^eW*vjw+~&v0sLX z5zqDmYLmh1sUF_=7YN4LI2`a}eu1A_*`7!|fQGBLJwM+mJj!{nF_}2nVEEQubo|N04N1HO``*EmN z?kqd1SXLKZxDJ5hM5NWi0N6P#MNTdN z46!DbO4e4)Wq4Rj{-e!MUAuy*XEMMf)klKdrTPo4tO9Epb~o>pWXf!ug$v%fJyYhO za-~C-<`~_4+x1(X09f5?%hB#Z>wdH$j`uznqPqJz%;0h*mPW9MD~+gTbxTd9qO|cV zIl577h|#a@f=^H-i&^d^qkwq&1IYr8IZzB+VU=U#8?7$XYMK(hs(~l zo-yhj+dlYYwK(R3MiBL&b}TB(2?2Ag#^`I_t>M@L@kI~$_78)fmySc5QcE2>{nM1q zou)t1xzh*D#}M$%3_&Wy2W5ja(#E53;2(O)xq^QeT@}B=T!fzL2W9}3Lvd2uqRFeQ z5+r!nu)V`NX66t1tO}fCxCH)5TIrdM(gC+DHjL&dDbg+HH!O&{1l%PB@i_1}=pM2` z|2Zm<)$kmwaS;8EthuQpq~c*wa~8>KBr**)NK}0F)4z*~<2rLq(IL&|OJT6ONyL(x zv`4mhRJIAg#>WCJ=W>|5?9fC585hc&GUa-m9T#4k2#>qOzlYZ^G92xV(ULo{|LL2nZDrsW6C zO=!kMxkMZ4IAjF2HKH-;U(Rh0vYWSL2~i zSF8XS3iv9y5nZjW%UxuKX%JBfHYM0Z9nizAe0HerwFF-X`JQ8Nb^nZ+f8g+@^r7z^0(< zC%cN~?ut72?K$|HHls$`YNAD0mo{i-5g8T5E|qdJx>EAC^87GI>*0R4Wo&_Ugt;mc z;=sNQ63Thl)OqQHP3DIqf-Gj&qY|AJQe!?VVflO$P@{(6RD#Cmxm(Pz(8=vK7&QQ8 z2Ti73W8eAkOt5-WR2J>pHA?z;ql+%N7BelJ`=17DGTI=b*bZyR_VFsoc7V`8F7Z(K zfi@<>Q_%wSN;F#yeAHk?Mw!pypB-`Yf0uwu_}ONklmY63i^^vr8s@qR4OqGSUlatx zAsT+!CG5+|8n*EHP}^`Z<*f!RK%?w1VzBSnz``s4hz0d)al&oc-MMuBVeLUFqSmFA z>@WEj?B&Asc8u^PV@alh!0|~Ou;S#QH?bbk2!sm1s}aPpVu`H4duk4+!F3(hI6I4| z75z5lH_Nt2MX>h78!IU-61}t$2qS^30$mEV3>U_X;v+xzE6^4z)#JAS1Yf(;rYwCE zBk8|r-@T%pWXG7Hll~Viwx*UAzSHp;4q8rJz3E6DR0B~i|HCeAJ~|05X^B#}e->fp zk|d)hE9&%5cSC`@4CE&e6A{TMsY-4ROGMyBh=9M_jKouP4X0Py)v|hnJnhB{g z6uj?MkVcMMA)OFi6et*BK3<>^(2o$+^d^PzVcPQxO+GVzYdgxoQN#sC7k4NV!;n7m zcQ#7;#LgC);x>jC)(EosVLqV@nW}7KKlZDmz8{Pk`f*Ia&q3@(COy z8&&sHcFG5WhVKIA*eR%ejIu%tN{0iLjWGXPqej6#POgV8p{O7XtYcbHFH-U``mZoU=7t6bfFKpZc!Z~h{u*z?wKrXaOA8!nZqQlArqi9c3w{XK!Jg=PO4%f17ZwE z-O1W;R!f;*Cexy2)$Zbh+~}Kq>7k4X^*a895ly&mT2v^Qd+vyRFvLHmh4T`MyLwno z@2rI|#x&?YyW4KnM@SY<1wC9j-t9l7u@)nhgAyyZ2A6Lv!-_I@8)OHDzQ%1e%-3RY z>y>3FdeFy_sZaC%zJ0!nptWYT1Zug5zJkA3x|Uj(pk<)U{M6UlNb{@Vu{>9Q>ocaT z!o`Eez+-}-4nOIUT}Fv%gp_$yQ5N>K?!#gD5@w}5h$6CXGC9B z2xG~vDN-wH@`Rv*7BA=%O1yhPo|F{Acy?Sw+Db&Ima5v8I1WCcv-s817kdj$;58(0 zE_-xFo{V<)Y9w~;;)w@9kL%p(eVctQEJwG-pYs=J)PLZ7Ljpk2va)iO; z?}hUEGCWpGu)vvoj+0&Oz}IJ`J(?_h;peG`2`i=jR$aeItg+(A2_Dyh>Hr(JKAFyH7E%2_RX7gMtb*15OB65qqZ5 zbOZLR5?*sXJy;9QiDIhp$FhTV8I^vxL`%gTO4eKnj!`nju?yyNfColQ_7rZgDHNB7 zH3-Jc^&R?@zpuP|s)NvXPYLokb{eNArlu}UPYj+2H>Fop;>mIc+@txKuX%7+S4q`Wn5k)fILG8fIg03OR=!YNKRaUpP@rOwM#0*SapUYrg2fk7 zP5svYE2%(_Gho7#WlL;_4|{Y))a!u8xLEZ~8O8YUk`UjO+ub)Wk7Y_2E(dw?5Xzbw z*XirShJLLrPu_O7$?vN6f~>q<))*P*Lon)Zotpaw&3*n0&|V)g0nX;eP5c9?hgKlTSK$i`yAnTqeqS;0R<-qz>}(8eq?M~0;|Q#sJ>rEM zaon0b;SZoAYBwgMa`I5&Y=#IKuMh#KAk$r=u)^*x`$z`VUty?CIBsmoO3sJe2~4J_ z^je`_TB@K(=Jm&T`}l12vppu3wT zuq{O#^75Vod05}Ig=}-XSQ9d$VsqQkR}Tt`Z$zsO3hgYQ;h7d+5b0&{7B4K|?L9g7 z%zXa~h+>5b@nSBo*7^924|;5*S>c@_ptRg_Uco@+wvn>29Yn*;pu8)^(#KMBN}m3v zBlruFCKks$dKax0U9gJdi#l*`yL$qkOlMdVJZXpy-TWC=B~1F>arvecMB4w;<1(94ZX#Rn9 z2vqMwidLfvp`Vq|-(<~WKmN=4wNsp!m$E2VGg%Ss9QCTtPIE#}X*b4`-4wIOOu5X7 zd;xqlS|NAB?GK--?{Gv4o)`hETh?Yamb6h6Y|7Bg)sdo-^lcu8;Pe{wR zmAJpjZXg!cwN6_;aMs!#E;_Q3orEZCf6N7%!x*lIf}Y`l=+CA3QyZ15Gm_c$za<#hQlw5Rfr!gYgCld-yw*l zSC+`EW|$OJEfS{F&WN?weP5d*hc{$b3Ho_Gw5mxx*FqYWLVs0B;d4L-rSMhAo}Cq4 zD~NztK3ZtM5risRY!NGQl4DQ!w*ZKnCI{IvW1z*aqs~94tqbh)K`afrSvB)(W4T$t z%^d1yu?-hnXS|TfMO_N`?%SHO4`^X9{#NYt#?_N%v(`eNy|OiyQy(@+Vkp!r9KM-M zwn2x!qtg=wl+73sd9CMo)muf z!#=rpqYZu?iNUj4`piDw*GtjjHKXfJAlCT&TmE^5c1{4W#6&2ON_~^k%c4*<`TL=3 zl4D)T=Whj7D_Qc_bxQr(6*qzH78i$K0;w1_@}ZZo8iPhQByU^t6nw3j-d4$VW9S;M zcjLST{+<;n?|fd9x{NO`W9-aEa&GAt`9dee;O-HGhl_biISE!}uJgw@Sh-vQ&`UTjCJ_1aZmj}%eGWRpZ~)Is(4M>CQezNE7^O9v0lh=!dJbj%R%lu0k2Sv$t421HrT zmmxNs5i=-xhf5hjel}NjDba=(kVp1@CEGpGq7)szh!Ovd@vudW6%+sG8o+p->qZzA zQ?ghA z%>;U%QQg+orrE*_9}-|)Wj5ViXG(y|k(xfkERC#g(H%R#Ryqm;${(-JehJOK)OKoX zYR!D-djT2ik15pIloa3%ZGRqNC3Ie<90&c*Dr%x8az3ekfgc}Q#j>=IU3}ARP7vI@ z_8oA1d91Gud!ajc!b)04#z(!c_m{YagMm53NE#HN1tgA3j1}vp6;tA2s9h2SKYS!D z{l1+SFQ_t_u(wg}i#w>4*)ny)?`$lKb+AYRTwabFB(2-^kw9tvq>7Q*e6|fDBa2nb z48Zey1CJL=(%@d29#vFaBV#QCfvHP-sr;sxl^PUHWGY!4qxZ%2`c0;+3*lQ&S)~6^r-d--T2O6hQ7iop8b%=vQ*kCkbh- z3&ZG(z)NMZp_7$9>z%9TuF`$TN5`qSlaSX(LK-a^DoMF zXFyD`R$^GZMtdS05BBlu7kNgAAc}P}bgi=}U@>df0gK8&p;kmL8e5Te-uGI1E6ahe z3HI>7`ALj@si^u>gjySx|6H!T;OL?^rX??^C1OYK31IA}SR6_mqRZ27o(zH{8KyP& zP~1q}KGo>E5u2i@c`uNxP+#K)O?+&k0KVdu++KBVC9vWBH;++vY}d^I-4+T~RD(c0n= z=~v|-4RLsk<9oMxr&5L@g`G)gwRqG;|DThtmLhb!BX8_K3~Z7h{?()1{VB~2VsXfo z&cf2CMh3b8dhO^NTL-TTq{PX@zV2yW@FMdgAgjn)SZ4XtNG>_D9z!R1+m(giQL$k4xx=w- z4)b%|ZEn(OZh%sgXqoT>>|urcUL?aCIfxuBOULL`Kx-5cqkHcAABXZXv9aru^(`Gg z!YvEFojH-g&+D%jNKVJ1Bo%htezrX7r@;47`mj&sN>*^yC@-X8Y3lW)>hWZRKu{0JPPl1>pGTGCKtc#+yjt{@Sw)?Ijkdpr4y)&oD8A|Tw zF`5>l{p2e_oeL{-GODie2=|YTG)zlsApGy=C9LwI=!~E}$i!JFJ8(~tW zJT}??^&c1*jQ_m`hBawGUKmz2Q9%c8P$Vfqlqm^NV1|nkO{!F&A^*2^urM&1uhxb0 Z|7^<>OFB>xgC$COr$~! igcPositions = new List(); private List imsbcPositions = new List(); private List marpolPositions = new List(); + private bool _isDeparture; public HAZ() { @@ -66,8 +67,21 @@ namespace bsmd.database public List MARPOLPositions { get { return this.marpolPositions; } } + // selektor HAZA / HAZD [ShowReport] - public bool IsDeparture { get; set; } // selektor HAZA / HAZD + public bool IsDeparture { get { return this._isDeparture; } + set + { + this._isDeparture = value; + this.tablename = this._isDeparture ? "[dbo].[HAZD]" : "[dbo].[HAZA]"; + } + } + + /// + /// No NSW field! Set to determine whether HAZ info should be reported to the NSW + /// + [ShowReport] + public string TransmissionType { get; set; } #endregion @@ -86,29 +100,55 @@ namespace bsmd.database scmd.Parameters.AddWithNullableValue("@P7", this.DPGClassificationIBC); scmd.Parameters.AddWithNullableValue("@P8", this.DPGClassificationIMSBC); scmd.Parameters.AddWithNullableValue("@P9", this.DPGClassificationMARPOL_ANNEX_I); + scmd.Parameters.AddWithNullableValue("@P10", this.TransmissionType); if (this.IsNew) { this.CreateId(); scmd.Parameters.AddWithValue("@ID", this.Id); - scmd.CommandText = string.Format("INSERT INTO {0} (Id, MessageHeaderId, NoDPGOnBoardOnArrival, DPGManifestOnBoardOnArrival, " + - "INFShipClass, DPGClassificationIMDG, DPGClassificationIGC, DPGClassificationIBC, DPGClassificationIMSBC, " + - "DPGClassificationMARPOL_ANNEX_I) VALUES (@ID, @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9)", this.Tablename); + if (IsDeparture) + { + scmd.CommandText = string.Format("INSERT INTO {0} (Id, MessageHeaderId, NoDPGOnBoardOnDeparture, DPGManifestOnBoardOnDeparture, " + + "INFShipClass, DPGClassificationIMDG, DPGClassificationIGC, DPGClassificationIBC, DPGClassificationIMSBC, " + + "DPGClassificationMARPOL_ANNEX_I, TransmissionType) VALUES (@ID, @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10)", this.Tablename); + } + else + { + scmd.CommandText = string.Format("INSERT INTO {0} (Id, MessageHeaderId, NoDPGOnBoardOnArrival, DPGManifestOnBoardOnArrival, " + + "INFShipClass, DPGClassificationIMDG, DPGClassificationIGC, DPGClassificationIBC, DPGClassificationIMSBC, " + + "DPGClassificationMARPOL_ANNEX_I, TransmissionType) VALUES (@ID, @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10)", this.Tablename); + } } else { scmd.Parameters.AddWithValue("@ID", this.Id); - scmd.CommandText = string.Format("UPDATE {0} SET NODPGOnBoardOnArrival = @P2, DPGManifestOnBoardOnArrival = @P3, " + - "INFShipClass = @P4, DPGClassificationIMDG = @P5, DPGClassificationIGC = @P6, DPGClassificationIBC = @P7, " + - "DPGClassificationIMSBC = @P8, DPGClassificationMARPOL_ANNEX_I = @P9 WHERE Id = @ID", this.Tablename); + if (IsDeparture) + { + scmd.CommandText = string.Format("UPDATE {0} SET NODPGOnBoardOnDeparture = @P2, DPGManifestOnBoardOnDeparture = @P3, " + + "INFShipClass = @P4, DPGClassificationIMDG = @P5, DPGClassificationIGC = @P6, DPGClassificationIBC = @P7, " + + "DPGClassificationIMSBC = @P8, DPGClassificationMARPOL_ANNEX_I = @P9, TransmissionType = @P10 WHERE Id = @ID", this.Tablename); + } + else + { + scmd.CommandText = string.Format("UPDATE {0} SET NODPGOnBoardOnArrival = @P2, DPGManifestOnBoardOnArrival = @P3, " + + "INFShipClass = @P4, DPGClassificationIMDG = @P5, DPGClassificationIGC = @P6, DPGClassificationIBC = @P7, " + + "DPGClassificationIMSBC = @P8, DPGClassificationMARPOL_ANNEX_I = @P9, TransmissionType = @P10 WHERE Id = @ID", this.Tablename); + } } } public override void PrepareLoadCommand(System.Data.IDbCommand cmd, Message.LoadFilter filter, params object[] criteria) - { + { string query = string.Format("SELECT Id, NoDPGOnBoardOnArrival, DPGManifestOnBoardOnArrival, INFShipClass, " + "DPGClassificationIMDG, DPGClassificationIGC, DPGClassificationIBC, DPGClassificationIMSBC, " + - "DPGClassificationMARPOL_ANNEX_I FROM {0} ", this.Tablename); + "DPGClassificationMARPOL_ANNEX_I, TransmissionType FROM {0} ", this.Tablename); + + if (this.IsDeparture) + { + query = string.Format("SELECT Id, NoDPGOnBoardOnDeparture, DPGManifestOnBoardOnDeparture, INFShipClass, " + + "DPGClassificationIMDG, DPGClassificationIGC, DPGClassificationIBC, DPGClassificationIMSBC, " + + "DPGClassificationMARPOL_ANNEX_I, TransmissionType FROM {0} ", this.Tablename); + } switch (filter) { @@ -142,6 +182,7 @@ namespace bsmd.database if (!reader.IsDBNull(6)) haz.DPGClassificationIBC = reader.GetBoolean(6); if (!reader.IsDBNull(7)) haz.DPGClassificationIMSBC = reader.GetBoolean(7); if (!reader.IsDBNull(8)) haz.DPGClassificationMARPOL_ANNEX_I = reader.GetBoolean(8); + if (!reader.IsDBNull(9)) haz.TransmissionType = reader.GetString(9); result.Add(haz); } diff --git a/nsw/Source/bsmd.database/LastTenPortFacilitiesCalled.cs b/nsw/Source/bsmd.database/LastTenPortFacilitiesCalled.cs index 952d3ff0..dc90688c 100644 --- a/nsw/Source/bsmd.database/LastTenPortFacilitiesCalled.cs +++ b/nsw/Source/bsmd.database/LastTenPortFacilitiesCalled.cs @@ -138,14 +138,14 @@ namespace bsmd.database public override void Validate(List errors, List violations) { - bool locationOK = (!this.PortFacilityPortLoCode.IsNullOrEmpty()) || - (!this.PortFacilityPortName.IsNullOrEmpty() && !this.PortFacilityPortCountry.IsNullOrEmpty()); + bool locationInsufficient = (this.PortFacilityPortLoCode.IsNullOrEmpty()) && + (this.PortFacilityPortName.IsNullOrEmpty() || this.PortFacilityPortCountry.IsNullOrEmpty()); - if (!locationOK) + if (locationInsufficient) { string val = string.Format("LoCode:{0} Port:{1} Country:{2}", this.PortFacilityPortLoCode ?? "", this.PortFacilityPortName ?? "", this.PortFacilityPortCountry ?? ""); - RuleEngine.CreateViolation(ValidationCode.V703, "Either LoCode or Country + Name must be given", val); + RuleEngine.CreateViolation(ValidationCode.V703, "Last 10 Port facilities: Either LoCode or Country + Name must be given", val); } } diff --git a/nsw/Source/bsmd.database/MDH.cs b/nsw/Source/bsmd.database/MDH.cs index f1a5ebb5..91487882 100644 --- a/nsw/Source/bsmd.database/MDH.cs +++ b/nsw/Source/bsmd.database/MDH.cs @@ -261,7 +261,7 @@ namespace bsmd.database } public override void Validate(List errors, List violations) - { + { if (this.GetValidationBlock() == ValidationBlock.BLOCK1) { @@ -270,10 +270,10 @@ namespace bsmd.database } else { - if((this.NonAccidentalDeathsDuringVoyage ?? false) && ((this.NonAccidentalDeathsDuringVoyageCount ?? 0) == 0)) + if ((this.NonAccidentalDeathsDuringVoyage ?? false) && ((this.NonAccidentalDeathsDuringVoyageCount ?? 0) == 0)) violations.Add(RuleEngine.CreateViolation(ValidationCode.V761, "NonAccidentalDeathsDuringVoyageCount missing", null)); - if((this.NumberOfIllPersonsHigherThanExpected ?? false) && ((this.NumberOfIllPersons ?? 0) == 0)) + if ((this.NumberOfIllPersonsHigherThanExpected ?? false) && ((this.NumberOfIllPersons ?? 0) == 0)) violations.Add(RuleEngine.CreateViolation(ValidationCode.V762, "Number of ill persons missing", null)); if ((this.SanitaryMeasuresApplied ?? false) && ( @@ -293,12 +293,16 @@ namespace bsmd.database (!this.InfectedAreaDate.HasValue || this.InfectedAreaPort.IsNullOrEmpty())) violations.Add(RuleEngine.CreateViolation(ValidationCode.V766, "Infected area date or port missing", null)); - } + if (this.portOfCallLast30Days.Count == 0) + { + errors.Add(RuleEngine.CreateError(ValidationCode.NOT_NULL, "Port of Call last 30 day list is EMPTY", null)); + } - foreach (PortOfCallLast30Days poc30d in this.portOfCallLast30Days) - { - RuleEngine.ValidateProperties(poc30d, errors); - poc30d.Validate(errors, violations); + foreach (PortOfCallLast30Days poc30d in this.portOfCallLast30Days) + { + RuleEngine.ValidateProperties(poc30d, errors); + poc30d.Validate(errors, violations); + } } } diff --git a/nsw/Source/bsmd.database/Message.cs b/nsw/Source/bsmd.database/Message.cs index 43c3de3b..36ed8ea1 100644 --- a/nsw/Source/bsmd.database/Message.cs +++ b/nsw/Source/bsmd.database/Message.cs @@ -212,6 +212,11 @@ namespace bsmd.database /// public List ViolationList { get { return this.violationList; } } + /// + /// Property to overwrite reporting party in certain circumstances (other melder meldet) + /// + public Guid? ReportingPartyId { get { return this.reportingPartyId; } set { this.reportingPartyId = value; } } + #endregion #region IDatabaseEntity implementation diff --git a/nsw/Source/bsmd.database/MessageCore.cs b/nsw/Source/bsmd.database/MessageCore.cs index 8086eaa1..c5cc3fe0 100644 --- a/nsw/Source/bsmd.database/MessageCore.cs +++ b/nsw/Source/bsmd.database/MessageCore.cs @@ -99,6 +99,8 @@ namespace bsmd.database public string SietasSheetVersion { get; set; } + public Guid? DefaultReportingPartyId { get; set; } + #endregion #region DatabaseEntity implementation @@ -142,6 +144,7 @@ namespace bsmd.database scmd.Parameters.AddWithValue("@P22", this.ReportStatus); scmd.Parameters.AddWithNullableValue("@P23", this.SietasSheetVersion); scmd.Parameters.AddWithValue("@P24", this.Incoming ? 1 : 0); + scmd.Parameters.AddWithNullableValue("@P25", this.DefaultReportingPartyId); if (this.IsNew) { @@ -150,9 +153,9 @@ namespace bsmd.database string query = string.Format("INSERT INTO {0} (Id, VisitId, TransitId, IMO, ENI, PoC, Portname, ETA, CustomerId, " + "Previous, Next, IsTransit, Wetris_zz_56_datensatz_id, BSMDStatus, InitialHIS, HerbergFormGuid, " + "HerbergFormTemplateGuid, HerbergReportType, HerbergEmailcontactReportingVessel, HerbergEmail24HrsContact, " + - "ETAKielCanal, HerbergRevDate, ReportStatus, SietasSheetVersion, Incoming) VALUES " + + "ETAKielCanal, HerbergRevDate, ReportStatus, SietasSheetVersion, Incoming, DefaultReportingPartyId) VALUES " + "(@ID, @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10, @P11, @P12, @P13, @P14, @P15, @P16, @P17, " + - "@P18, @P19, @P20, @P21, @P22, @P23, @P24)", + "@P18, @P19, @P20, @P21, @P22, @P23, @P24, @P25)", this.Tablename); scmd.CommandText = query; } @@ -164,7 +167,7 @@ namespace bsmd.database "Wetris_zz_56_datensatz_id = @P12, BSMDStatus = @P13, InitialHIS = @P14, HerbergFormGuid = @P15, " + "HerbergFormTemplateGuid = @P16, HerbergReportType = @P17, HerbergEmailContactReportingVessel = @P18, " + "HerbergEmail24HrsContact = @P19, ETAKielCanal = @P20, HerbergRevDate = @P21, ReportStatus = @P22, " + - "SietasSheetVersion = @P23, Incoming = @P24 WHERE Id = @ID", this.Tablename); + "SietasSheetVersion = @P23, Incoming = @P24, DefaultReportingPartyId = @P25 WHERE Id = @ID", this.Tablename); scmd.CommandText = query; } } @@ -174,7 +177,8 @@ namespace bsmd.database string query = string.Format("SELECT Id, VisitId, TransitId, IMO, ENI, PoC, Portname, " + "ETA, CustomerId, Previous, Next, IsTransit, Wetris_zz_56_datensatz_id, BSMDStatus, InitialHIS, " + "HerbergFormGuid, HerbergFormTemplateGuid, HerbergReportType, HerbergEmailContactReportingVessel, " + - "HerbergEmail24HrsContact, ETAKielCanal, HerbergRevDate, ReportStatus, SietasSheetVersion, Incoming FROM {0} ", + "HerbergEmail24HrsContact, ETAKielCanal, HerbergRevDate, ReportStatus, SietasSheetVersion, Incoming, " + + "DefaultReportingPartyId FROM {0} ", this.Tablename); switch (filter) @@ -256,6 +260,7 @@ namespace bsmd.database if (!reader.IsDBNull(22)) core.ReportStatus = (ReportStatusEnum) Enum.ToObject(typeof(ReportStatusEnum), reader.GetByte(22)); if (!reader.IsDBNull(23)) core.SietasSheetVersion = reader.GetString(23); if (!reader.IsDBNull(24)) core.Incoming = reader.GetBoolean(24); + if (!reader.IsDBNull(25)) core.DefaultReportingPartyId = reader.GetGuid(25); result.Add(core); } diff --git a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs index d684ec1b..b9ea5645 100644 --- a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs +++ b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs @@ -2,6 +2,6 @@ [assembly: AssemblyCompany("Informatikbüro Daniel Schick")] [assembly: AssemblyProduct("BSMD NSW interface")] -[assembly: AssemblyInformationalVersion("2.4.3")] +[assembly: AssemblyInformationalVersion("2.4.6")] [assembly: AssemblyCopyright("Copyright © 2014-2015 Informatikbüro Daniel Schick. All rights reserved.")] [assembly: AssemblyTrademark("")] \ No newline at end of file diff --git a/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs b/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs index 1ce61e7d..d4b62414 100644 --- a/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs +++ b/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs @@ -4,6 +4,6 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.4.3.*")] +[assembly: AssemblyVersion("2.4.6.*")] // wenn das nicht auskommentiert wird erhalten wir eine Warnung // [assembly: AssemblyFileVersion("1.0.0.*")] diff --git a/nsw/Source/bsmd.database/ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.cs b/nsw/Source/bsmd.database/ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.cs index 331b970b..2e601226 100644 --- a/nsw/Source/bsmd.database/ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.cs +++ b/nsw/Source/bsmd.database/ShipToShipActivitiesDuringLastTenPortFacilitiesCalled.cs @@ -139,14 +139,13 @@ namespace bsmd.database { // check violation 701 + bool locationInsufficient = (this.ShipToShipActivityLocationLoCode.IsNullOrEmpty()) && + (!this.ShipToShipActivityLocationCoordinatesLatitude.HasValue || !this.ShipToShipActivityLocationCoordinatesLongitude.HasValue); - bool locationOK = !this.ShipToShipActivityLocationName.IsNullOrEmpty() || - !this.ShipToShipActivityLocationLoCode.IsNullOrEmpty() || - (this.ShipToShipActivityLocationCoordinatesLatitude.HasValue && - this.ShipToShipActivityLocationCoordinatesLongitude.HasValue); - - if (!locationOK) - violations.Add(RuleEngine.CreateViolation(ValidationCode.V701, "Either LoCode, Name or Coordinates must be given", null)); + if (locationInsufficient) + { + violations.Add(RuleEngine.CreateViolation(ValidationCode.V701, "Ship To Ship: Either LoCode or Coordinates must be given", null)); + } } #endregion diff --git a/nsw/Source/bsmd.dbh/Request.cs b/nsw/Source/bsmd.dbh/Request.cs index 2b8cb6b3..5677ee84 100644 --- a/nsw/Source/bsmd.dbh/Request.cs +++ b/nsw/Source/bsmd.dbh/Request.cs @@ -570,6 +570,8 @@ namespace bsmd.dbh rootInfo.ConstructionCharacteristicsOfShip = info.ConstructionCharacteristicsOfShip; if (info.FumigatedBulkCargo.HasValue) rootInfo.FumigatedBulkCargo = (info.FumigatedBulkCargo.Value == 0) ? RootINFOFumigatedBulkCargo.Y : RootINFOFumigatedBulkCargo.N; + else + rootInfo.FumigatedBulkCargo = RootINFOFumigatedBulkCargo.N; rootInfo.DeadWeightSummer_TNESpecified = info.DeplacementSummerDraught_TNE.HasValue; if (info.DeplacementSummerDraught_TNE.HasValue) rootInfo.DeadWeightSummer_TNE = (float) info.DeplacementSummerDraught_TNE.Value; diff --git a/nsw/Source/bsmd.herberg.FormService/Util.cs b/nsw/Source/bsmd.herberg.FormService/Util.cs index 2e739d4d..d9b1381d 100644 --- a/nsw/Source/bsmd.herberg.FormService/Util.cs +++ b/nsw/Source/bsmd.herberg.FormService/Util.cs @@ -32,6 +32,7 @@ namespace bsmd.herberg.FormService if (repDict[key].Name.Equals("BSMD")) { bsmdParty = repDict[key]; + break; } } @@ -152,7 +153,10 @@ namespace bsmd.herberg.FormService List saveMessages = new List(); // 1:n messages - foreach (string groupMessageType in groupedVals.Keys) + List groupedValsKeyList = new List(groupedVals.Keys); + groupedValsKeyList.Sort(); // "AGENT" now at the beginning! + + foreach (string groupMessageType in groupedValsKeyList) { string messageType = groupMessageType; @@ -803,14 +807,19 @@ namespace bsmd.herberg.FormService info.SpecialRequirementsOfShipAtBerth = aMessageCore.Customer.Name; else { - if((aMessageCore.Customer != null) && (aMessageCore.Customer.Name != null)) + if((aMessageCore.Customer != null) && (aMessageCore.Customer.Name != null) && !info.SpecialRequirementsOfShipAtBerth.Contains("- Agent: ")) info.SpecialRequirementsOfShipAtBerth = string.Format("{0} - Agent: {1}", info.SpecialRequirementsOfShipAtBerth, aMessageCore.Customer.Name); } if (vDict.ContainsKey("ConstructionCharacteristicsOfShip")) info.ConstructionCharacteristicsOfShip = vDict["ConstructionCharacteristicsOfShip"]; if (vDict.ContainsKey("FumigatedBulkCargo") && !vDict["FumigatedBulkCargo"].IsNullOrEmpty()) + { info.FumigatedBulkCargo = (byte)Enum.Parse(typeof(Enums.FumigatedBulkCargo), vDict["FumigatedBulkCargo"]); + _log.DebugFormat("FumigatedBulkCargo {0} parsed to {1}", vDict["FumigatedBulkCargo"], info.FumigatedBulkCargo); + } else - info.FumigatedBulkCargo = (byte) Enums.FumigatedBulkCargo.N; + { + info.FumigatedBulkCargo = (byte)Enums.FumigatedBulkCargo.N; + } } catch(Exception ex) { @@ -1135,6 +1144,8 @@ namespace bsmd.herberg.FormService if (poc.PortFacilityGISISCode.IsNullOrEmpty()) { poc.PortFacilityGISISCode = "0000"; + if (poc.PortFacilitySecurityMattersToReport.IsNullOrEmpty()) poc.PortFacilitySecurityMattersToReport = string.Format("Remark: GISIS-Code not reported"); + else poc.PortFacilitySecurityMattersToReport = string.Format("{0} - Remark: GISIS-Code not reported", poc.PortFacilitySecurityMattersToReport); } else { Regex rgx = new Regex("[0-9]{4}"); @@ -1142,6 +1153,8 @@ namespace bsmd.herberg.FormService { _log.WarnFormat("PortFacilityGISISCode invalid: {0}, replacing with 0000", poc.PortFacilityGISISCode); poc.PortFacilityGISISCode = "0000"; + if (poc.PortFacilitySecurityMattersToReport.IsNullOrEmpty()) poc.PortFacilitySecurityMattersToReport = string.Format("Remark: Reported GISIS-Code: {0}", sDict["PortFacilityGISISCode"] ?? ""); + else poc.PortFacilitySecurityMattersToReport = string.Format("{0} - Remark: Reported GISIS-Code: {1}", poc.PortFacilitySecurityMattersToReport, sDict["PortFacilityGISISCode"] ?? ""); } } @@ -1347,7 +1360,8 @@ namespace bsmd.herberg.FormService if (haz != null) { try - { + { + if (vDict.ContainsKey("TransmissionType")) haz.TransmissionType = vDict["TransmissionType"]; if (vDict.ContainsKey("NoDPGOnBoard")) haz.NoDPGOnBoardOnArrival = vDict["NoDPGOnBoard"].Equals("Y"); if (vDict.ContainsKey("DPGManifestOnBoard")) haz.DPGManifestOnBoardOnArrival = vDict["DPGManifestOnBoard"].Equals("Y"); if (vDict.ContainsKey("INFShipClass")) haz.INFShipClass = (byte)Enum.Parse(typeof(Enums.INFShipClass), vDict["INFShipClass"], true);