From 7653b92eb6715e8df8ef261970b74858273ae184 Mon Sep 17 00:00:00 2001 From: Meik Date: Thu, 13 Nov 2025 15:03:17 +0100 Subject: [PATCH] =?UTF-8?q?rote=20rahmen=20f=C3=BCr=20req=20im=20fallabsch?= =?UTF-8?q?luss?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 2025-11-13 11_35_00-Clipboard.png | Bin 1594 -> 0 bytes 2025-11-13 14_52_24-.png | Bin 0 -> 3037 bytes .../Basics/UserControls/ComboBoxPageable.xaml | 21 +++-- .../Ticket/CloseCaseDialogWithTicket.xaml.cs | 56 ++++++----- .../Ticket/CloseTicketDialog.xaml | 25 +++-- .../Ticket/CloseTicketDialog.xaml.cs | 88 +++++++++++++----- .../Ticket/ForwardTicketDialog.xaml | 44 ++++++--- .../Ticket/ForwardTicketDialog.xaml.cs | 65 ++++++++++--- 8 files changed, 206 insertions(+), 93 deletions(-) delete mode 100644 2025-11-13 11_35_00-Clipboard.png create mode 100644 2025-11-13 14_52_24-.png diff --git a/2025-11-13 11_35_00-Clipboard.png b/2025-11-13 11_35_00-Clipboard.png deleted file mode 100644 index 2cf55a59f25872e92a163e82cdd0255543a0ff15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1594 zcmaJ>c{tR082`G$Xbf^aG*s)DCw4tKI$XI1Gp_O5EL~G*G$@H-9FK^>BIhIP-kG(o zgeFG~#I3c+xC@$|FWUZ$6>yFm*|M8VDJerQ;CB0q5OO) zfI{^RBLSx{5-B8{e2GHzl7UsEI&luR$D)YK&pgPxN$P!X9UyF;-@PO+6aq3>I69i> z?3d`MoIeF66QNjT6vS4~*^T{EA!dJ}e?uZ67^Q;B^~)$ss>LeoG^6XDtznuj=#_ZK zSD;+0hT8j!9|{JA)aUjA^KsMtf`x&0+(=eYQPJ6gf`Zm_EJzH{`L)qBC6FLvmQ4@` z3XC~LJOKMfE$w814XxM-BL;pYtRiIjn{sMhauO1nQL6xu^@4~(#x^C)Shk|GscTUWcVpWu059FR17`W@rGAI3t%X@UV{>ynYyw$1$JfA5s4Q0SPR#Zu2IZQzN{mH) zh!I%lWre@HqIzb_`Dt&9p5`m=lmwth)J7wbq+;wN@$1Nf%%xL2N<;8Mc;@&nP6fu5$Vda*{pCf0K` z3|X0sQPs#yOUy@>t8plAT(ua@r)#(^=K*L|Gc)25@aE=`Zu8^xaZ9;!cB}L8!y~q? zeS<>(%L7w~VztZq>;ic`876>kRTIrhg$#*-Z6S)gjA#b~_BI{qor~FE5@MDNiK0sUi5^p9%z2`iY<<`mC(5=`!K2v+RFL zil-?Jno(wr{K$L&1j^q-Lq-<>#ULV+(Gh2HY_J>|tnZPsICFn5g#y5>*(V#XQNexL zshn;HAL6OCl4hwOqA%m7t6TEobNW^a01sRu$e6$!UKO_{I++$miabaw*V;e=kkj7K z5IX+?d&jfo-z;;_>B|DL>9XONPNUZW5#*yoI&A43fKIOS_YbM_8||31XGIDMw{8KT z?B=#|LZxDkufy*tSoKuhE_R=kc!6E~kj?;~F)SbUnTkiP$*{Y*-d_7H3K zg~;U(`8H+BoS8u_KUvdz4`-e7e5@k_4s?Y38E-$?at`}Aw52WMf2myF!_|<+K>dZ9 z7HGBw*S{6TuZX9+BP!)##T4t9vc-6VakF=E#=lFhEM#Ai_bC5lRT{m{zIA)anp*Z% zUKNk-Rw9?K{bbB;pS;Gqp)Nu%0-p*=GbK4a!Cu$kIl5|2vae0@5$DhRA7BSzaZiEG zk*NA~xIt06@yh6Wy)TwR+%}ya^Bf%~Q>8dJe!+MPZz{Ra)6DqsO&v^Nc>>U`aC6m#HZS3m6CGe#HSQDn=}^*}^0VQqy(9 z;@vB8)@hYg6zGAHM)x&}U{9t&YYAh2+rs@o%0u$&PY!%8`?xh=d3?$WC_7p7f8K@j zTt&!L-ZV6%jWL-7v{pcB+Ay4Iu0Z${Js9`aYvlt!zALI>l}JS=h_A2Fg5u*>O!}|0 zj@-eWWX!2(;OQ!sYj37>(s4TN8?*%%@2;y7L%O`R%XNe72*7dr4?K!a#BvL7T4rR# zJI`lvyJ=`>x<%e*vj$#PH6s~D=w}MJ$D5tiSvri4$mQzLSC3XTp8$-$sPYyL7C0=_ zXEG$u3J3WaqT-`h1{zoU8^YGQCuUZtCc@o-|Hn5s-Iv*d`wi@|gChaJLFDn<>#=)y b7<#Yiz3fSDXZ;of?|Fd3x;r%3olX1)@6XKH diff --git a/2025-11-13 14_52_24-.png b/2025-11-13 14_52_24-.png new file mode 100644 index 0000000000000000000000000000000000000000..ea7984cbb85c39c8964838fc01b768201e290422 GIT binary patch literal 3037 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 xcs{{OG - - + + diff --git a/FasdDesktopUi/Basics/UserControls/Ticket/CloseCaseDialogWithTicket.xaml.cs b/FasdDesktopUi/Basics/UserControls/Ticket/CloseCaseDialogWithTicket.xaml.cs index 2860741..cb25345 100644 --- a/FasdDesktopUi/Basics/UserControls/Ticket/CloseCaseDialogWithTicket.xaml.cs +++ b/FasdDesktopUi/Basics/UserControls/Ticket/CloseCaseDialogWithTicket.xaml.cs @@ -1939,32 +1939,38 @@ namespace FasdDesktopUi.Basics.UserControls } break; - case "ErrorTypeValue": - if (DynamicStatusAdditionBorder.Child is CloseTicketDialog closeTicketDialog2) - { - if (closeTicketDialog2.SelectedErrorType == null || closeTicketDialog2.SelectedErrorType is ComboBoxItem b && b.Tag == null) - { - if (!_errors.ContainsKey(propertyName)) - _errors.Add(propertyName, cMultiLanguageSupport.GetItem("Dialog.CloseCase.ValidationErrorTypeEmpty")); - } - else - { - if (_errors.ContainsKey(propertyName)) - _errors.Remove(propertyName); - } - } - break; + case "ErrorTypeValue": + if (DynamicStatusAdditionBorder.Child is CloseTicketDialog closeTicketDialog2) + { + if (closeTicketDialog2.SelectedErrorType == null || closeTicketDialog2.SelectedErrorType is ComboBoxItem b && b.Tag == null) + { + closeTicketDialog2.UpdateErrorTypeValidationState(true); + if (!_errors.ContainsKey(propertyName)) + _errors.Add(propertyName, cMultiLanguageSupport.GetItem("Dialog.CloseCase.ValidationErrorTypeEmpty")); + } + else + { + closeTicketDialog2.UpdateErrorTypeValidationState(false); + if (_errors.ContainsKey(propertyName)) + _errors.Remove(propertyName); + } + } + break; - case "SelectedRoleAndPerson": - if (DynamicStatusAdditionBorder.Child is ForwardTicketDialog forwardTicketDialog) - { - if ((forwardTicketDialog.SelectedPerson.Key == null || forwardTicketDialog.SelectedPerson.Value == null) && - (forwardTicketDialog.SelectedRole.Key == null || forwardTicketDialog.SelectedRole.Value == null)) - { - if (!_errors.ContainsKey(propertyName)) - _errors.Add(propertyName, cMultiLanguageSupport.GetItem("Dialog.CloseCase.ValidationErrorRoleAndPersonEmpty")); - } - else + case "SelectedRoleAndPerson": + if (DynamicStatusAdditionBorder.Child is ForwardTicketDialog forwardTicketDialog) + { + bool hasError = (forwardTicketDialog.SelectedPerson.Key == null || forwardTicketDialog.SelectedPerson.Value == null) && + (forwardTicketDialog.SelectedRole.Key == null || forwardTicketDialog.SelectedRole.Value == null); + + forwardTicketDialog.UpdateResponsibleSelectionValidationState(hasError); + + if (hasError) + { + if (!_errors.ContainsKey(propertyName)) + _errors.Add(propertyName, cMultiLanguageSupport.GetItem("Dialog.CloseCase.ValidationErrorRoleAndPersonEmpty")); + } + else { if (_errors.ContainsKey(propertyName)) _errors.Remove(propertyName); diff --git a/FasdDesktopUi/Basics/UserControls/Ticket/CloseTicketDialog.xaml b/FasdDesktopUi/Basics/UserControls/Ticket/CloseTicketDialog.xaml index 1540a25..aa3f067 100644 --- a/FasdDesktopUi/Basics/UserControls/Ticket/CloseTicketDialog.xaml +++ b/FasdDesktopUi/Basics/UserControls/Ticket/CloseTicketDialog.xaml @@ -20,15 +20,22 @@ - + + + - - - - - + + + + + + + + + > GetRoleSelectionData(cF4SDHealthCardRawData.cHealthCardTable dataTable) - { + private ObservableCollection> GetRoleSelectionData(cF4SDHealthCardRawData.cHealthCardTable dataTable) + { try { if (dataTable is null || dataTable.Name != "M42Wpm-Ticket-Roles") @@ -191,6 +206,30 @@ namespace FasdDesktopUi.Basics.UserControls } return null; - } - } -} + } + + public void UpdateResponsibleSelectionValidationState(bool hasError) + { + try + { + if (RoleValidationBorder != null) + { + if (defaultRoleBorderBrush == null) + defaultRoleBorderBrush = RoleValidationBorder.BorderBrush?.CloneCurrentValue(); + RoleValidationBorder.BorderBrush = hasError ? ValidationBrush : defaultRoleBorderBrush; + } + + if (PersonValidationBorder != null) + { + if (defaultPersonBorderBrush == null) + defaultPersonBorderBrush = PersonValidationBorder.BorderBrush?.CloneCurrentValue(); + PersonValidationBorder.BorderBrush = hasError ? ValidationBrush : defaultPersonBorderBrush; + } + } + catch (Exception E) + { + LogException(E); + } + } + } +}