TaskFlow/app/TaskFlow/frmValidator.vb
2025-05-08 15:49:54 +02:00

6341 lines
346 KiB
VB.net
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Imports DevExpress.DataAccess.Native.Sql
Imports DevExpress.DataProcessing.InMemoryDataProcessor
Imports DevExpress.Utils
Imports DevExpress.XtraBars
Imports DevExpress.XtraEditors
Imports DevExpress.XtraEditors.Mask
Imports DevExpress.XtraEditors.Repository
Imports DevExpress.XtraExport.Helpers
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Columns
Imports DevExpress.XtraGrid.Views.Base
Imports DevExpress.XtraGrid.Views.Grid
Imports DigitalData.Controls.LookupGrid
Imports DigitalData.GUIs.Common
Imports DigitalData.GUIs.Common.DocumentResultList
Imports DigitalData.Modules.Base
Imports DigitalData.Modules.EDMI.API.Constants
Imports DigitalData.Modules.EDMI.API.DatabaseWithFallback
Imports DigitalData.Modules.Interfaces
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.ZooFlow
Imports DigitalData.Modules.ZooFlow.Constants
Imports System.ComponentModel
'Imports System.Data.SqlClient
Imports System.Globalization
Imports System.IO
Imports System.Reflection
Imports System.Runtime.InteropServices
Imports System.Text.RegularExpressions
Imports System.Threading
'Imports System.Windows.Forms.VisualStyles.VisualStyleElement
'Imports System.Windows.Forms.VisualStyles.VisualStyleElement.TextBox
Imports WINDREAMLib
Public Class frmValidator
Public Event CustomColumnDisplayText As CustomColumnDisplayTextEventHandler
Private Property Current_Document As DocumentResultList.Document = Nothing
''' <summary>
''' Contains all controls for the current profile
''' </summary>
Private Property DT_CONTROLS As DataTable
''' <summary>
''' Contains all grid columns for the current profile
''' </summary>
Private Property DT_COLUMNS_GRID As DataTable
''' <summary>
''' Contains all grid columns for the current profile which have an sql but don't have a reference to a control
''' </summary>
Private Property DT_COLUMNS_GRID_WITH_SQL As DataTable
''' <summary>
''' Contains all grid columns for the current profile which have an sql and have a reference to a control
''' </summary>
Private Property DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER As DataTable
Private Property DTInfoDoc As DataTable
Private Property PROFIL_sortbynewest As Boolean
Private Property PROFIL_VEKTORINDEX
Private Property PROFIL_FINISH_SQL
Private Property PROFIL_LOGINDEX
Private Property PROFIL_CURRENCY_ATTRIBUTE
Private Property PROFIL_REJECT_ACTIONS_ATTRIBUTE As String = ""
Private Property PROFIL_REJECT_COMMENT_ATTRIBUTE As String = ""
Private Property PROFIL_NOT_RESP_COMMENT_ATTR As String = ""
Private Property REJECTION_ACTIVE As Boolean = False
Private Property oErrMsgMissingInput
Private Const PMDelimiter As String = "~"
Private Property finalProfile As Boolean
Private Property Move2Folder As String
'Private Property DataASorDB As ClassDataASorDB
Private Property allgFunk As New ClassAllgemeineFunktionen
Public Shared Property WMDocPathWindows As String
Private Property DocPathWindows As String
'Anzahl der Validierungsdokumente
Private Property Amount_Docs2Validate As Integer
Private Property first_control As Control
Private Property last_control As Control
Public Shared Property idxerr_message As String = ""
Private Property _frmValidatorSearch As frmValidatorSearch
Private Property DT_AdditionalSearches_Resultset_Docs As DataTable
Private Property _Indexe_Loaded As Boolean = False
Private Property _DependingControl_In_Action As Boolean = False
Private Property _DependingColumn_In_Action As Boolean = False
Private Property _SetControlValue_In_Action As Boolean = False
Public Property _FormLoaded As Boolean = False
Private Property _FormClosing As Boolean = False
Private Property _ControlHandleStarted As Boolean = False
Private Property _ItemWorked As Boolean = False
Private Property Override As Boolean = False
Private Property OverrideAll As Boolean = False
Private Property Override_SQLCommand As String = ""
Private Property listChangedLookup As New List(Of String)
Private DD_Documentloader As Loader
Private ControlCreator As ClassControlCreator
Private PerformanceLogger As Logger
Private Validator As Validator
Private Const LOG_PERF = True
Private ReadOnly ValidatorLogger As Logger
Private Property OperationMode As OperationMode
Private ReadOnly Environment As Environment
Private AdditionalDocResultsExist As Boolean = False
Private AdditionalDataResultsExist As Boolean = False
Private oProfileFinalText As String = ""
Private oProfileRejectionText As String = ""
Private oProfileNotResponsibleText As String = ""
Private oProfileNotResponsibleQuestion As String = ""
Private oProfile_REJECT_SQL_REASONS As String
Private oProfile_NOT_RESP_SQL As String
Private listofControls As New List(Of String)
Private frmMessages As frmValidator_Messages
Private Class S
Inherits My.Resources.frmValidator_Strings
End Class
Public Sub New(pEnvironment As Environment)
PerformanceLogger = LOGCONFIG.GetLoggerFor("PERF")
If LOG_PERF Then PerformanceLogger.Info("New")
ValidatorLogger = LOGCONFIG.GetLogger()
'MyBase.New
ValidatorLogger.Debug("Initialize Components...")
InitializeComponent()
Environment = pEnvironment
Try
ValidatorLogger.Debug("Initialize _frmValidatorSearch...")
_frmValidatorSearch = New frmValidatorSearch(Me, Environment)
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
End Sub
Private Function GetOperationMode() As OperationMode
Dim oOperationMode As OperationMode
If Environment.Service.Client Is Nothing And OPERATION_MODE_FS <> ClassConstants.OpModeFS_ZF Then
Return OperationMode.NoAppServer
End If
If Not IsNothing(Environment.Service.Client) Then
If Environment.Service.Client.IsOnline AndAlso Environment.Service.Client.ServerAddress <> String.Empty And IDB_USES_WMFILESTORE = False Then
oOperationMode = OperationMode.WithAppServer
Else
oOperationMode = OperationMode.NoAppServer
End If
End If
If OPERATION_MODE_FS = ClassConstants.OpModeFS_ZF Then
oOperationMode = OperationMode.ZooFlow
End If
Return oOperationMode
End Function
Private Function IsPositionVisible(position As Point) As Boolean
For Each scr As Screen In Screen.AllScreens
If scr.WorkingArea.Contains(position) Then
Return True ' Punkt ist sichtbar
End If
Next
Return False ' Punkt ist außerhalb aller sichtbaren Bereiche
End Function
Private Sub frmValidation_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Try
If LOG_PERF Then PerformanceLogger.Info("frmValidation_Load")
ValidatorLogger.Debug("###frmValidation_Load###")
ValidatorLogger.Debug("Current User Language: [{0}]", USER_LANGUAGE)
' Operation mode is either guessed from service settings
' or explictly set from OperationModeOverride in Params
OperationMode = GetOperationMode()
DD_Documentloader = New Loader(LOGCONFIG, OperationMode, Environment.Service.Client, Environment.User)
ControlCreator = New ClassControlCreator(LOGCONFIG)
Validator = New Validator(LOGCONFIG)
Override = False
_ItemWorked = False
SplitContainer1.Panel2Collapsed = True
first_control = Nothing
_FormClosing = False
_FormLoaded = False
Catch ex As Exception
ValidatorLogger.Warn($"Error in frmValidation_load1: {ex.Message}")
End Try
Try
If My.Settings.frmValidatorPosition.IsEmpty = False Then
If IsPositionVisible(My.Settings.frmValidatorPosition) Then
' Position ist sichtbar, das Formular wird dort angezeigt
Try
ScreenEx.RestoreFormPosition(Me, My.Settings.frmValidatorPosition)
Catch ex As Exception
Me.StartPosition = FormStartPosition.CenterScreen
End Try
If My.Settings.frmValidatorPosition.X > 0 And My.Settings.frmValidatorPosition.Y > 0 Then
Location = My.Settings.frmValidatorPosition
Else
Try
ValidatorLogger.Debug($"!! Invalid PositionData X({My.Settings.frmValidatorPosition.X}), Y({My.Settings.frmValidatorPosition.Y})")
Catch ex As Exception
End Try
End If
Else
' Position ist unsichtbar, Standardposition verwenden
Me.StartPosition = FormStartPosition.CenterScreen
End If
End If
If My.Settings.frmValidatorSize.IsEmpty = False Then
If My.Settings.frmValidatorSize.Width > 0 And My.Settings.frmValidatorSize.Height > 0 Then
If My.Settings.frmValidatorWindowState = "Normal" Then
Size = My.Settings.frmValidatorSize
Else
Me.WindowState = FormWindowState.Maximized
End If
End If
End If
Catch ex As Exception
ValidatorLogger.Info($"Error loading position: {ex.Message}")
End Try
Dim _step = 0
Try
DocumentViewerValidator.Init(LOGCONFIG, GDPICTURE_LICENSE)
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
Try
_step = 1
_step = 2
DTVWCONTROL_INDEX.Clear()
Dim oExpression = $"PROFIL_ID = {CURRENT_ProfilGUID}"
DTVWCONTROLS_INDEX.Select(oExpression, "Y_LOC, X_LOC").CopyToDataTable(DTVWCONTROL_INDEX, LoadOption.PreserveChanges)
_step = 3
ValidatorLogger.Debug("Profile Data loaded")
Catch ex As Exception
ValidatorLogger.Error(ex)
MsgBox("Error LOADING profile-data(" & _step.ToString & "):" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:")
ValidatorLogger.Info(">> Error in LOADING profile-data: " & ex.Message, True)
Me.Close()
End Try
ValidatorLogger.Debug("frmValidation_Load finished till Step 3!")
Try
If CURRENT_DT_PROFILE.Rows.Count = 0 Then
ValidatorLogger.Info(">> ProfileData could not be loaded - Profile: : " & CURRENT_ProfilName, True)
MsgBox("ProfileData could not be loaded - Profile: " & CURRENT_ProfilName, MsgBoxStyle.Critical, "Attention:")
Me.Close()
End If
_step = 4
ValidatorLogger.Debug("Step 4")
If CURRENT_DT_PROFILE.Rows.Count > 1 Then
MsgBox("More than 1 profile (" & CURRENT_DT_PROFILE.Rows.Count & ") returned!!", MsgBoxStyle.Critical, "Attention:")
Else
_step = 5
ValidatorLogger.Debug("Step 5")
If CURRENT_DT_PROFILE.Rows.Count = 1 Then
_step = 6
ValidatorLogger.Debug("Step 6")
For Each oProfileRow As DataRow In CURRENT_DT_PROFILE.Rows
PROFIL_FINISH_SQL = oProfileRow.Item("SQL_BTN_FINISH")
PROFIL_VEKTORINDEX = oProfileRow.Item("PM_VEKTOR_INDEX")
PROFIL_CURRENCY_ATTRIBUTE = oProfileRow.Item("CURRENCY_ATTRIBUTE")
PROFIL_REJECT_ACTIONS_ATTRIBUTE = oProfileRow.Item("REJECT_ACTIONS_ATTRIBUTE")
PROFIL_REJECT_COMMENT_ATTRIBUTE = oProfileRow.Item("REJECT_COMMENT_ATTRIBUTE")
PROFIL_NOT_RESP_COMMENT_ATTR = oProfileRow.Item("NOT_RESP_COMMENT_ATTRIBUTE")
REJECTION_ACTIVE = False
PROFIL_LOGINDEX = oProfileRow.Item("LOG_INDEX")
CURRENT_PROFILE_LOG_INDEX = PROFIL_LOGINDEX
Dim oProfileTitle As String = ""
Dim oProfileDescription As String = ""
For Each oRow As DataRow In CURRENT_DT_PROFILE_LANGUAGE.Rows
Console.WriteLine(oRow.Item("TITLE"))
If oRow.Item("TITLE") = $"PROFILE_TITLE{CURRENT_ProfilGUID}" Then
oProfileTitle = oRow.Item("STRING1")
ElseIf oRow.Item("TITLE") = $"PROFILE_DESCRIPTION{CURRENT_ProfilGUID}" Then
oProfileDescription = oRow.Item("STRING1")
ElseIf oRow.Item("TITLE") = $"PROFILE_FINAL_TEXT{CURRENT_ProfilGUID}" And oRow.Item("LANGUAGE") = USER_LANGUAGE Then
If oRow.Item("STRING1") <> "" Then
oProfileFinalText = oRow.Item("STRING1")
End If
ElseIf oRow.Item("TITLE") = $"PROFILE_REJECTION_CAPT{CURRENT_ProfilGUID}" Then
oProfileRejectionText = oRow.Item("STRING1")
ElseIf oRow.Item("TITLE") = $"PROFILE_NOT_RESPONSIBLE_CAPT{CURRENT_ProfilGUID}" And oRow.Item("LANGUAGE") = USER_LANGUAGE Then
oProfileNotResponsibleText = oRow.Item("STRING1")
ElseIf oRow.Item("TITLE") = $"PROFILE_NOT_RESPONSIBLE_QUEST{CURRENT_ProfilGUID}" And oRow.Item("LANGUAGE") = USER_LANGUAGE Then
oProfileNotResponsibleQuestion = oRow.Item("STRING1")
End If
Next
If oProfileTitle = "" Then
oProfileTitle = oProfileRow.Item("TITLE")
End If
Me.Text = ADDITIONAL_TITLE & " - " & oProfileTitle
If oProfileDescription = "" Then
IIf(IsDBNull(oProfileRow.Item("DESCRIPTION")), "", oProfileRow.Item("DESCRIPTION"))
End If
TITLELabel1.Text = oProfileTitle
DESCRIPTIONLabel.Text = oProfileDescription
If PROFIL_VEKTORINDEX.GetType.ToString.ToLower = "system.dbnull" Then
PROFIL_VEKTORINDEX = ""
End If
If PROFIL_LOGINDEX.GetType.ToString.ToLower = "system.dbnull" Then
PROFIL_LOGINDEX = ""
End If
finalProfile = oProfileRow.Item("FINAL_PROFILE")
Move2Folder = IIf(IsDBNull(oProfileRow.Item("MOVE2Folder")), "", oProfileRow.Item("MOVE2Folder"))
Try
If finalProfile = True Then
If oProfileFinalText = "" Then
oProfileFinalText = IIf(IsDBNull(oProfileRow.Item("FINAL_TEXT")), "", oProfileRow.Item("FINAL_TEXT") & (" (F2)"))
Else
oProfileFinalText = $"{oProfileFinalText} (F2)"
End If
btnSave.Text = oProfileFinalText
Else
oProfileFinalText = IIf(IsDBNull(oProfileRow.Item("FINAL_TEXT")), "", oProfileRow.Item("FINAL_TEXT") & (" (F2)"))
'btnSave.Text = ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO("frmValidator.ValidationButton")
If oProfileFinalText = String.Empty Then
oProfileFinalText = ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO("frmValidator.ValidationButton")
End If
btnSave.Text = oProfileFinalText
End If
ValidatorLogger.Debug("Buttontext validation loaded")
Catch ex As Exception
ValidatorLogger.Error(ex)
MsgBox("Error loading final profile text:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:")
ValidatorLogger.Info(">> Error loading final profile text: " & ex.Message, True)
End Try
Dim PROF_BTN_RE_CAPT = oProfileRow.Item("BTN_REJECT_CAPTION")
Dim PROF_SQL_BTN_REJECT = oProfileRow.Item("SQL_BTN_REJECT")
oProfile_REJECT_SQL_REASONS = oProfileRow.Item("REJECT_SQL_REASONS")
oProfile_NOT_RESP_SQL = oProfileRow.Item("NOT_RESP_SQL")
If oProfileRejectionText = String.Empty Then
oProfileRejectionText = PROF_BTN_RE_CAPT
End If
ValidatorLogger.Debug($"oProfileRejectionText: " + oProfileRejectionText)
ValidatorLogger.Debug($"oProfile_REJECT_SQL_REASONS: " + oProfile_REJECT_SQL_REASONS)
ValidatorLogger.Debug($"oProfileNotResponsibleText: " + oProfileNotResponsibleText)
ValidatorLogger.Debug($"oProfile_NOT_RESP_SQL: " + oProfile_NOT_RESP_SQL)
ValidatorLogger.Debug($"oProfileRejectionText: " + oProfileRejectionText)
Dim functBtnReject As Boolean = False
Dim functBtnNR As Boolean = False
If oProfileRejectionText <> String.Empty And oProfile_REJECT_SQL_REASONS <> String.Empty Then
functBtnReject = True
End If
If oProfileNotResponsibleText <> String.Empty And oProfile_NOT_RESP_SQL <> String.Empty Then
If IDB_ACTIVE = True Then
functBtnNR = True
End If
End If
If functBtnReject = False And functBtnNR = False Then
ValidatorLogger.Debug($"!Keine Ablehnung und Nicht zuständig Funktion konfiguriert!")
SplitContainerReject_NotResp.Visible = False
SplitContainerButtons.CollapsePanel = SplitCollapsePanel.None
SplitContainerButtons.PanelVisibility = SplitPanelVisibility.Panel2
Else
SplitContainerButtons.CollapsePanel = SplitCollapsePanel.Panel1
SplitContainerReject_NotResp.Visible = True
If functBtnReject = True And functBtnNR = True Then
ValidatorLogger.Debug($"Nicht zuständig und Ablehnungs-Buttons werden eingeblendet!")
SplitContainerReject_NotResp.CollapsePanel = SplitCollapsePanel.None
SplitContainerButtons.PanelVisibility = SplitPanelVisibility.Both
btnReject.Text = oProfileRejectionText
btnNotResponsible.Text = oProfileNotResponsibleText
If USER_GHOST_MODE_ACTIVE Then
btnReject.Enabled = False
btnNotResponsible.Enabled = False
Else
btnReject.Enabled = True
btnNotResponsible.Enabled = True
End If
Else
If functBtnNR = True Then
ValidatorLogger.Debug($"Nicht zuständig Button wird eingeblendet!")
SplitContainerReject_NotResp.CollapsePanel = SplitCollapsePanel.Panel1
SplitContainerReject_NotResp.PanelVisibility = SplitPanelVisibility.Panel2
btnReject.Visible = False
SplitContainerReject_NotResp.Collapsed = True
btnNotResponsible.Text = oProfileNotResponsibleText
If USER_GHOST_MODE_ACTIVE Then
btnNotResponsible.Enabled = False
Else
btnNotResponsible.Enabled = True
End If
Else
SplitContainerReject_NotResp.CollapsePanel = SplitCollapsePanel.Panel2
SplitContainerReject_NotResp.PanelVisibility = SplitPanelVisibility.Panel1
SplitContainerReject_NotResp.Collapsed = True
btnNotResponsible.Visible = False
btnReject.Text = oProfileRejectionText
If USER_GHOST_MODE_ACTIVE Then
btnReject.Enabled = False
Else
btnReject.Enabled = True
End If
End If
End If
End If
bbtniNext.Visibility = BarItemVisibility.Always
If CURRENT_JUMP_DOC_GUID <> 0 Then
bbtniNext.Visibility = BarItemVisibility.Never
Amount_Docs2Validate = 1
Else
Amount_Docs2Validate = 0
End If
Next
ValidatorLogger.Debug(" >> profiledata saved:")
ValidatorLogger.Debug(" >> finalProfile: " & finalProfile)
ValidatorLogger.Debug(" >> Move2Folder: " & Move2Folder)
ValidatorLogger.Debug(" >> Right_Delete: " & USER_RIGHT_FILE_DELETE)
PROFIL_sortbynewest = CURRENT_DT_PROFILE.Rows(0).Item("SORT_BY_LATEST")
ValidatorLogger.Debug("PROFIL_sortbynewest: " & PROFIL_sortbynewest.ToString)
'Delete Button anzeigen ja/nein
If USER_RIGHT_FILE_DELETE = True Then
bbtniDelete.Visibility = BarItemVisibility.Always
Else
bbtniDelete.Visibility = BarItemVisibility.Never
End If
If CBool(CURRENT_DT_PROFILE.Rows(0).Item("ANNOTATE_WORK_HISTORY_ENTRY")) = True Then
bbtniAnnotation.Visibility = BarItemVisibility.Always
Else
bbtniAnnotation.Visibility = BarItemVisibility.Never
End If
ValidatorLogger.Debug("Right_Delete: " & USER_RIGHT_FILE_DELETE.ToString)
Create_Controls()
End If
End If
'oErrMsgMissingInput = ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO("frmValidator.MissingInput")
oErrMsgMissingInput = S.Bitte_validieren_Sie_die_rot_markierten_Felder_
ValidatorLogger.Debug("frmValidation_Load finished!")
Catch ex As Exception
ValidatorLogger.Error(ex)
MsgBox("Error LOADING Profile-Data1:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:")
ValidatorLogger.Info("Unexpected error in LOADING Profile-Data1: " & ex.Message)
End Try
End Sub
Private Sub frmValidation_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Try
_FormClosing = True
If Application.OpenForms().OfType(Of frmValidator_Messages).Any Then
If Not IsNothing(frmMessages) Then
frmMessages.Close()
End If
End If
Try
' Position und Größe speichern
My.Settings.frmValidatorSize = Me.Size
My.Settings.frmValidatorPosition = Me.Location
My.Settings.Save()
Catch ex As Exception
ValidatorLogger.Error(ex)
ValidatorLogger.Info("Error in Load FormLayout: " & ex.Message)
End Try
My.Settings.frmValidatorSize = Me.Size
My.Settings.Save()
If INACTIVITY_DURATION <> 0 Then frmMain.Timer_Inactivity_Reset_Disable("FormClosing")
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
Try
Dim oDel = $"DELETE FROM TBPM_DOCWALKOVER WHERE UserID = {USER_ID}"
DatabaseFallback.ExecuteNonQueryECM(oDel)
Catch ex As Exception
ValidatorLogger.Error(ex)
MsgBox("Error in delete jumped files:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
If CURRENT_DOC_GUID <> 0 Then
Try
If _ItemWorked = False Then
'Dim sql = $"UPDATE TBPM_PROFILE_FILES Set IN_WORK = 0, IN_WORK_WHEN = NULL, WORK_USER = NULL WHERE GUID = {CURRENT_DOC_GUID}"
'DatabaseFallback.ExecuteNonQueryECM(sql)
PRTF_PROFILE_FILES_WORK("FreeFile")
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
End If
Reset_CurrentReferences()
Try
DocumentViewerValidator.CloseDocument()
DocumentViewerValidator.Done()
Catch ex As Exception
ValidatorLogger.Warn($"Unexpected error in DocumentViewerValidator.Done: {ex.Message}")
End Try
Try
_frmValidatorSearch.Close()
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
End Sub
Sub Reset_CurrentReferences()
ValidatorLogger.Info("Attention: Reset_CurrentReferences....")
If Not IsNothing(DT_AdditionalSearches_Resultset_Docs) Then
DT_AdditionalSearches_Resultset_Docs.Clear()
End If
End Sub
Public Function Test_Additional_Data_Searches_Exist() As Boolean
If BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows.Count > 0 Then
Dim oDataResultCommand As String
Dim oDatatableDataResult As DataTable = Nothing
If BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows.Count > 0 Then
'Check whether DocData is there
Dim oConID = BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows(0).Item("CONN_ID")
oDataResultCommand = BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows(0).Item("SQL_COMMAND")
oDataResultCommand = clsPatterns.ReplaceAllValues(oDataResultCommand, PanelValidatorControl, True)
oDatatableDataResult = DatabaseFallback.GetDatatableWithConnection(oDataResultCommand, oConID)
End If
Dim oDataResultsExist As Boolean = False
If BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows.Count > 0 Then
If Not IsNothing(oDatatableDataResult) Then
If oDatatableDataResult.Rows.Count > 0 Then
oDataResultsExist = True
End If
End If
End If
Return oDataResultsExist
Else
Return False
End If
End Function
Public Function Test_Additional_Doc_Searches_Exist() As Boolean
If DT_FILTERED_PROFILE_SEARCHES_DOC.Rows.Count > 0 Then
Dim oDocResultCommand As String
Dim oDatatableDocResult As DataTable = Nothing
'Check whether DocData is there
Dim oConID = DT_FILTERED_PROFILE_SEARCHES_DOC.Rows(0).Item("CONN_ID")
oDocResultCommand = DT_FILTERED_PROFILE_SEARCHES_DOC.Rows(0).Item("SQL_COMMAND")
oDocResultCommand = clsPatterns.ReplaceAllValues(oDocResultCommand, PanelValidatorControl, True)
ValidatorLogger.Debug($"oDocResultCommand is: {oDocResultCommand}")
oDatatableDocResult = DatabaseFallback.GetDatatableWithConnection(oDocResultCommand, oConID)
Dim oDocResultsExist As Boolean = False
If Not IsNothing(oDatatableDocResult) Then
If oDatatableDocResult.Rows.Count > 0 Then
oDocResultsExist = True
DT_AdditionalSearches_Resultset_Docs = oDatatableDocResult
End If
End If
Return oDocResultsExist
Else
Return False
End If
End Function
Public Sub Load_Additional_Searches(Preload As Boolean)
Try
AdditionalDocResultsExist = Test_Additional_Doc_Searches_Exist()
AdditionalDataResultsExist = Test_Additional_Data_Searches_Exist()
'If Test_Additional_Searches_Exist() Then
If AdditionalDataResultsExist = True Or AdditionalDocResultsExist = True Then
Try
Dim oPnl1Collapsed As Boolean = True
Dim oPnl2Collapsed As Boolean = True
If AdditionalDataResultsExist = True Then
oPnl1Collapsed = False
Else
oPnl1Collapsed = True
End If
oPnl2Collapsed = False
Dim oConID As Int16
Dim oCommand As String
If Preload = False Then
If AdditionalDocResultsExist Then
_frmValidatorSearch.TabPreload(oPnl1Collapsed, oPnl2Collapsed, BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows.Count, DT_FILTERED_PROFILE_SEARCHES_DOC.Rows.Count,
BASEDATA_DT_PROFILE_SEARCHES_SQL, DT_FILTERED_PROFILE_SEARCHES_DOC)
_frmValidatorSearch._DTDocSearches = DT_FILTERED_PROFILE_SEARCHES_DOC
oConID = DT_FILTERED_PROFILE_SEARCHES_DOC.Rows(0).Item("CONN_ID")
oCommand = DT_FILTERED_PROFILE_SEARCHES_DOC.Rows(0).Item("SQL_COMMAND")
oCommand = clsPatterns.ReplaceAllValues(oCommand, PanelValidatorControl, True)
_frmValidatorSearch.RefreshTabDoc(oConID, oCommand, 0, DT_FILTERED_PROFILE_SEARCHES_DOC.Rows(0).Item("TAB_TITLE"))
End If
If AdditionalDataResultsExist Then
_frmValidatorSearch._DTSQLSearches = BASEDATA_DT_PROFILE_SEARCHES_SQL
oConID = BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows(0).Item("CONN_ID")
oCommand = BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows(0).Item("SQL_COMMAND")
oCommand = clsPatterns.ReplaceAllValues(oCommand, PanelValidatorControl, True)
_frmValidatorSearch.Refresh_Load_GridSQL(oConID, oCommand, 0, BASEDATA_DT_PROFILE_SEARCHES_SQL.Rows(0).Item("TAB_TITLE"))
End If
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
bbtniRefreshSearches.Visibility = BarItemVisibility.Always
Else
ValidatorLogger.Debug("AdditionlSearhes result = false!")
bbtniRefreshSearches.Visibility = BarItemVisibility.Never
rbnPgGroupAttmt.Visible = False
End If
'Else
' Logger.Debug("Not loading AdditionalSearches 2...!")
' bbtniRefreshSearches.Visibility = BarItemVisibility.Never
'End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, ADDITIONAL_TITLE)
End Try
End Sub
Sub LoadSQLData(control As Control, pControlId As Integer)
Try
If TypeOf control Is Label Then
Exit Sub
End If
ValidatorLogger.Debug($"in LoadSQLData for ControlID [{pControlId}]...")
Dim oDTforControl As DataTable = DTCONTROLS_WITH_SQL.Clone()
Dim oExpression = $"GUID = {pControlId} AND PROFIL_ID = {CURRENT_ProfilGUID}"
DTCONTROLS_WITH_SQL.Select(oExpression).CopyToDataTable(oDTforControl, LoadOption.PreserveChanges)
If IsNothing(oDTforControl) Then Exit Sub
If oDTforControl.Rows.Count = 0 Then Exit Sub
For Each row As DataRow In oDTforControl.Rows
Dim name As String = row.Item("NAME")
Dim oGUID As String = row.Item("GUID")
Dim oReadOnly As Boolean = row.Item("READ_ONLY")
ValidatorLogger.Debug($"LoadSQLData for Control [{name}] with GUID [{oGUID}] ...")
'If clsPatterns.HasComplexPatterns(row.Item("SQL_UEBERPRUEFUNG")) Then
' Logger.Debug($"SQL [{row.Item("SQL_UEBERPRUEFUNG")}] has complex patterns - GUID: {oGUID}")
' Continue For
'End If
If oReadOnly = True Then
ValidatorLogger.Debug("Control for Index [{0}] is read-only. Continuing.")
Continue For
End If
If IsDBNull(row.Item("CONNECTION_ID")) Then
ValidatorLogger.Info($"No CONNECTION_ID for SQL-Data - oGUID: {oGUID}")
Continue For
End If
If IsDBNull(row.Item("SQL_UEBERPRUEFUNG")) Then
Continue For
End If
Dim oSQLStatement As String = row.Item("SQL_UEBERPRUEFUNG")
Dim oConnectionId As Integer = row.Item("CONNECTION_ID")
'If clsPatterns.HasComplexPatterns(sqlStatement) Then
' Continue For
'End If
If IsNothing(oSQLStatement) Then
Continue For
End If
'oSql = clsPatterns.ReplaceUserValues(sqlStatement, USER_PRENAME, USER_SURNAME, USER_SHORTNAME, USER_LANGUAGE, USER_EMAIL, USER_ID, CURRENT_CLICKED_PROFILE_ID)
'oSql = clsPatterns.ReplaceInternalValues(oSql)
oSQLStatement = clsPatterns.ReplaceAllValues(oSQLStatement, PanelValidatorControl, True)
If IsNothing(oSQLStatement) Then
Continue For
End If
If clsPatterns.HasComplexPatterns(oSQLStatement) Then
ValidatorLogger.Warn($"Unexpected error LoadSQLData2 - sql Statement still has complex patterns! [{oSQLStatement}]")
Continue For
End If
Dim oDTContent As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSQLStatement, DatabaseType.ECM) With {
.ConnectionId = oConnectionId
})
If IsNothing(oDTContent) Then
ValidatorLogger.Warn($"SQL-Query [{oSQLStatement}] for control {control.Name} is invalid.")
Exit Sub
End If
Dim oValue
' Because LookupControl is a subtype of TextEdit,
' we need to check for LookupControl first!
If TypeOf control Is LookupControl3 Then
Try
Dim lookup As LookupControl3 = control
lookup.Properties.DataSource = oDTContent
lookup.Properties.ValueMember = oDTContent.Columns.Item(0).ColumnName
lookup.Properties.DisplayMember = oDTContent.Columns.Item(0).ColumnName
Catch ex As Exception
ValidatorLogger.Warn("Error in LookUpLoadSQLData: " & ex.Message)
End Try
ElseIf TypeOf control Is DevExpress.XtraEditors.TextEdit Or TypeOf control Is MemoEdit Then
Try
Dim firstRow As DataRow = oDTContent.Rows(0)
Dim value = firstRow.Item(0)
DirectCast(control, BaseEdit).EditValue = value
oValue = value
Catch ex As Exception
ValidatorLogger.Warn("Error in TextBoxLoadSQLData: " & ex.Message)
End Try
ElseIf TypeOf control Is Windows.Forms.ComboBox Then
Try
Dim oMyComboBox As Windows.Forms.ComboBox = control
Dim oselectedIndex = oMyComboBox.SelectedIndex
ValidatorLogger.Debug($"oMyComboBox {oMyComboBox.Name} - Saving selected index {oselectedIndex}")
Dim list As New List(Of String)
For Each _row As DataRow In oDTContent.Rows
list.Add(_row.Item(0))
Next
oMyComboBox.DataSource = list
oMyComboBox.SelectedIndex = oselectedIndex
Catch ex As Exception
ValidatorLogger.Warn("Error in ComboBoxLoadSQLData: " & ex.Message)
End Try
ElseIf TypeOf control Is GridControl Then
Try
Dim dataGridView As GridControl = control
Dim oDataSource As DataTable = dataGridView.DataSource
If oDataSource Is Nothing OrElse oDataSource.Rows.Count = 0 Then
'dataGridView.DataSource = dt
Dim oDatatable As DataTable = oDTContent.Clone()
For Each oColumn As DataColumn In oDatatable.Columns
If oDataSource.Columns(oColumn.ColumnName) Is Nothing Then
'oDataSource.Columns.Add(oColumn)
oDataSource.Columns.Add(oColumn.ColumnName, oColumn.DataType)
End If
Next
For Each oRow As DataRow In oDTContent.Rows
oDataSource.ImportRow(oRow)
Next
dataGridView.DataSource = oDataSource
End If
Catch ex As Exception
ValidatorLogger.Warn("Error in GridControlSQLData: " & ex.Message)
End Try
End If
Next
Catch ex As Exception
ValidatorLogger.Warn($"{ex.Message} - Loading ControlID: {pControlId}")
MsgBox("Error in LoadSQLData: " & ex.Message, MsgBoxStyle.Critical, ADDITIONAL_TITLE)
End Try
End Sub
Private Function PreventNulletc(myObject As Object, pType As String)
If IsDBNull(myObject) Then
If pType = "String" Then
Return String.Empty
Else
Return 0
End If
ElseIf IsNothing(myObject) Then
If pType = "String" Then
Return String.Empty
Else
Return 0
End If
Else
Return myObject
End If
End Function
Sub Create_Controls()
If LOG_PERF Then PerformanceLogger.Info("Create_Controls")
Dim oControlInfo As String
Try
PanelValidatorControl.Controls.Clear()
Dim oSQL = $"SELECT [dbo].[FNPM_LANGUAGE_CONTROL_TEXT] (NAME,'{USER_LANGUAGE}',CTRL_TYPE,CTRL_TEXT) CTRL_CAPTION_LANG, * FROM TBPM_PROFILE_CONTROLS WHERE CONTROL_ACTIVE = 1 AND PROFIL_ID = {CURRENT_ProfilGUID} ORDER BY Y_LOC, X_LOC"
DT_CONTROLS = DatabaseFallback.GetDatatable("TBPM_PROFILE_CONTROLS_LANGUAGE", New GetDatatableOptions(oSQL, DatabaseType.ECM) With {
.FilterExpression = $"LANGUAGE = '{USER_LANGUAGE}' AND PROFIL_ID = {CURRENT_ProfilGUID}",
.SortByColumn = "Y_LOC, X_LOC"
})
oSQL = $"SELECT IIF(LANG.CAPTION IS NULL,T.SPALTEN_HEADER,LANG.CAPTION) SPALTEN_HEADER_LANG, T.* from TBPM_CONTROL_TABLE T INNER JOIN TBPM_PROFILE_CONTROLS T1 ON T.CONTROL_ID = T1.GUID
LEFT JOIN (SELECT * FROM TBPM_CONTOL_TABLE_LANG WHERE LANG_CODE = '{USER_LANGUAGE}') LANG ON T.GUID = LANG.COL_ID WHERE T1.CONTROL_ACTIVE = 1 AND T.CONTROL_ID = T1.GUID AND T1.PROFIL_ID = {CURRENT_ProfilGUID} ORDER BY T.SEQUENCE"
DT_COLUMNS_GRID = DatabaseFallback.GetDatatable("TBPM_CONTROL_TABLE", New GetDatatableOptions(oSQL, DatabaseType.ECM) With {
.FilterExpression = $"PROFIL_ID = {CURRENT_ProfilGUID} AND LANG_CODE = '{USER_LANGUAGE}' ",
.SortByColumn = "SEQUENCE"
})
oSQL = "SELECT T1.GUID As CONTROL_ID, T1.PROFIL_ID, T.CONNECTION_ID, T.SQL_COMMAND, T.SPALTENNAME,T.FORMATTYPE,T.FORMATSTRING, T.ADVANCED_LOOKUP from TBPM_CONTROL_TABLE T, TBPM_PROFILE_CONTROLS T1 WHERE T1.CONTROL_ACTIVE = 1 AND T.CONTROL_ID = T1.GUID AND T1.PROFIL_ID = " & CURRENT_ProfilGUID & " AND LEN(T.SQL_COMMAND) > 0 ORDER BY T.SEQUENCE"
'DT_COLUMNS_GRID_WITH_SQL = DataASorDB.GetDatatable("DD_ECM", oSQL, "DTGRID_SQL_DEFINITION", $"PROFIL_ID = {CURRENT_ProfilGUID}", "SEQUENCE")
DT_COLUMNS_GRID_WITH_SQL = DatabaseFallback.GetDatatable("DTGRID_SQL_DEFINITION", New GetDatatableOptions(oSQL, DatabaseType.ECM) With {
.FilterExpression = $"PROFIL_ID = {CURRENT_ProfilGUID}",
.SortByColumn = "SEQUENCE"
})
oSQL = "SELECT
T1.GUID As CONTROL_ID,
T1.PROFIL_ID,
T.CONNECTION_ID,
T.SQL_COMMAND,
T.SPALTENNAME,
T.FORMATTYPE,
T.FORMATSTRING,
T.ADVANCED_LOOKUP
FROM
TBPM_CONTROL_TABLE T,
TBPM_PROFILE_CONTROLS T1
WHERE
T1.CONTROL_ACTIVE = 1 AND
T.CONTROL_ID = T1.GUID AND
T1.PROFIL_ID = " & CURRENT_ProfilGUID & " AND
LEN(T.SQL_COMMAND) > 0 AND
T.SQL_COMMAND LIKE '%{#CTRL%'
ORDER BY T.SEQUENCE"
'DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER = DataASorDB.GetDatatable("DD_ECM", oSQL, "DTGRID_SQL_DEFINITION", $"PROFIL_ID = {CURRENT_ProfilGUID}", "SEQUENCE")
DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER = DatabaseFallback.GetDatatable("DTGRID_SQL_DEFINITION", New GetDatatableOptions(oSQL, DatabaseType.ECM) With {
.FilterExpression = $"PROFIL_ID = {CURRENT_ProfilGUID}",
.SortByColumn = "SEQUENCE"
})
Dim oTabIndexCounter As Integer = 0
For Each oControlRow As DataRow In DT_CONTROLS.Rows
Dim oMyControl As Control
Dim oIndexName = oControlRow.Item("INDEX_NAME")
Dim oControlID = oControlRow.Item("GUID")
oControlInfo = $"CtrlID: {oControlID} - CtrlName: {oControlRow.Item("NAME")} - CtrlIndex: {oControlRow.Item("INDEX_NAME")}"
Try
If LOG_PERF Then PerformanceLogger.Info(oControlInfo + "")
Select Case oControlRow.Item("CTRL_TYPE").ToString.ToUpper
Case ClassControlCreator.PREFIX_TEXTBOX
If LOG_PERF Then PerformanceLogger.Info("Create_Controls/Textbox")
Try
oControlInfo = ClassControlCreator.PREFIX_TEXTBOX & "#" & oControlInfo
ValidatorLogger.Debug($"[{oControlInfo}] - TXT Try to create control...")
Dim txt As BaseEdit = ControlCreator.CreateExistingTextbox(oControlRow, False)
If oIndexName = "@@DISPLAY_ONLY" Then
txt.ReadOnly = True
End If
AddHandler txt.GotFocus, AddressOf OnTextBoxFocus
AddHandler txt.LostFocus, AddressOf OnTextBoxLostFocus
AddHandler txt.KeyUp, AddressOf OnTextBoxKeyUp
oMyControl = txt
ValidatorLogger.Debug($"[{oControlInfo}] - TXT Created!!")
Catch ex As Exception
ValidatorLogger.Warn($"Unexpected error in Create_Controls TXT [{oControlInfo}]: {ex.Message}")
End Try
Case "LBL"
oControlInfo = "LBL#" & oControlInfo
oMyControl = ControlCreator.CreateExistingLabel(oControlRow, False)
Case "CMB"
If LOG_PERF Then PerformanceLogger.Info("Create_Controls/ComboBox")
oControlInfo = "CMB#" & oControlInfo
ValidatorLogger.Debug($"[{oControlInfo}] - CMB Try to create control...")
If oControlRow.Item("READ_ONLY") Then
Dim cmbReadonly = ControlCreator.CreateExistingTextbox(oControlRow, False)
oMyControl = cmbReadonly
Else
Dim oComboBox = ControlCreator.CreateExistingCombobox(oControlRow, False)
AddHandler oComboBox.SelectedValueChanged, AddressOf OnCmbselectedIndex
AddHandler oComboBox.GotFocus, Sub(sender As Control, e As EventArgs)
If DirectCast(oComboBox.Tag, ClassControlCreator.ControlMetadata).ReadOnly = False Then
oComboBox.BackColor = Color.LightSteelBlue
End If
End Sub
AddHandler oComboBox.LostFocus, Sub(sender As Control, e As EventArgs)
If DirectCast(oComboBox.Tag, ClassControlCreator.ControlMetadata).ReadOnly = False Then
oComboBox.BackColor = Color.White
End If
End Sub
ValidatorLogger.Debug("In add_ComboBox - GUID: " & oControlID)
Dim oCONID As Integer
Try
oCONID = PreventNulletc(oControlRow.Item("CONNECTION_ID"), "Integer")
Catch ex As Exception
oCONID = 0
End Try
If oCONID > 0 Then
Dim oCommandSQL_UBPF
Try
oCommandSQL_UBPF = oControlRow.Item("SQL_UEBERPRUEFUNG")
Catch ex As Exception
oCommandSQL_UBPF = ""
End Try
ValidatorLogger.Debug("ConID <> String.Empty")
If oCONID > 0 And oCommandSQL_UBPF <> String.Empty Then
ValidatorLogger.Debug("ConID > 0 And commandsql <> String.Empty")
Try
oSQL = PreventNulletc(oControlRow.Item("SQL_UEBERPRUEFUNG"), "String")
If clsPatterns.HasOnlySimplePatterns(oSQL) Then
ValidatorLogger.Debug("SQL HasOnlySimplePatterns!")
oSQL = clsPatterns.ReplaceInternalValues(oSQL)
oSQL = clsPatterns.ReplaceControlValues(oSQL, PanelValidatorControl, True)
'Dim oDT As DataTable = ClassDatabase.Return_Datatable_ConId(oSQL, oCONID, $"CreateControls - oControlID: {oControlID}")
Dim oDT As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSQL, DatabaseType.ECM) With {
.ConnectionId = oCONID
})
If Not IsNothing(oDT) Then
For Each oRow As DataRow In oDT.Rows
oComboBox.Items.Add(oRow.Item(0))
Next
End If
End If
Catch ex As Exception
ValidatorLogger.Warn($"Unexpected error in CMB GetValues SQL - Error: {ex.Message}")
End Try
Else
ValidatorLogger.Debug("Else Row 571")
End If
Else
ValidatorLogger.Debug("AListe Handling")
Dim AListe As String = oControlRow.Item("CHOICE_LIST")
ValidatorLogger.Debug("In add_ComboBox - AListe: " & AListe)
If AListe Is Nothing = False Then
'Dim liste = _windreamPM.GetValuesfromAuswahlliste(AListe)
Dim liste = WINDREAM.GetValuesfromAuswahlliste(AListe)
If liste IsNot Nothing Then
oComboBox.Items.Add("")
For Each index As String In liste
oComboBox.Items.Add(index)
Next
oComboBox.SelectedIndex = -1
Else
MsgBox("Resultliste windream is nothing!", MsgBoxStyle.Exclamation, AListe)
End If
Else
MsgBox("AListe from database is nothing!", MsgBoxStyle.Exclamation, AListe)
End If
End If
oMyControl = oComboBox
End If
ValidatorLogger.Debug($"[{oControlInfo}] - CMB CONTROL created")
Case "DTP"
oControlInfo = "DTP#" & oControlInfo
oMyControl = ControlCreator.CreateExistingDatepicker(oControlRow, False)
Case "DGV"
Dim dgv = ControlCreator.CreateExistingDataGridView(oControlRow, False)
AddHandler dgv.RowValidating, AddressOf onDGVRowValidating
oMyControl = dgv
Case "LOOKUP"
If LOG_PERF Then PerformanceLogger.Info("Create_Controls/Lookup")
oControlInfo = "LOOKUP#" & oControlInfo
Dim oMultiselect = oControlRow.Item("MULTISELECT")
Dim oReadonly = oControlRow.Item("READ_ONLY")
If oMultiselect = False And oReadonly = True Then
Dim lookupReadonly = ControlCreator.CreateExistingTextbox(oControlRow, False)
oMyControl = lookupReadonly
Else
Dim MyLookupControl As LookupControl3 = ControlCreator.CreateExistingLookupControl(oControlRow, False)
MyLookupControl.Properties.PreventDuplicates = oControlRow.Item("VKT_PREVENT_MULTIPLE_VALUES")
'MyLookupControl.Properties.AllowAddNewValues = oControlRow.Item("VKT_ADD_ITEM")
MyLookupControl.Properties.MultiSelect = oMultiselect
If ObjectEx.NotNull(oControlRow.Item("DEFAULT_VALUE"), "") <> "" Then
MyLookupControl.Properties.SelectedValues = New List(Of String) From {oControlRow.Item("DEFAULT_VALUE")}
End If
oMyControl = MyLookupControl
AddHandler MyLookupControl.Properties.SelectedValuesChanged, AddressOf LookupListChanged
'Wenn Multiselect false dann prüfen ob abhängiges Control
If CBool(oControlRow.Item("MULTISELECT")) = False Then
Dim oFilteredData As DataTable = DT_CONTROLS.Clone()
Dim oExpression = $"SQL_UEBERPRUEFUNG like '%#CTRL#{oMyControl.Name}%'"
DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredData, LoadOption.PreserveChanges)
If oFilteredData.Rows.Count >= 1 Then
ValidatorLogger.Debug($"createControlsLU - Found {oFilteredData.Rows.Count} Controls which are depending on {oMyControl.Name}")
'AddHandler lookup.EditValueChanged, AddressOf onLookUp1
AddHandler MyLookupControl.Properties.SelectedValuesChanged, AddressOf onLookUpselectedValue
End If
oExpression = $"SQL_ENABLE like '%#CTRL#{oMyControl.Name}%'"
DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredData, LoadOption.PreserveChanges)
If oFilteredData.Rows.Count >= 1 Then
ValidatorLogger.Debug($"createControlsLU - Found {oFilteredData.Rows.Count} Controls which' enable state is depending on {oMyControl.Name}")
'AddHandler lookup.EditValueChanged, AddressOf onLookUp1
AddHandler MyLookupControl.Properties.SelectedValuesChanged, AddressOf onLookUpselectedValue
End If
oFilteredData = DT_CONTROLS.Clone()
oExpression = $"GUID = {oControlRow.Item("GUID")} and Len(SET_CONTROL_DATA) > 0"
DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredData, LoadOption.PreserveChanges)
If oFilteredData.Rows.Count = 1 Then
'AddHandler lookup.EditValueChanged, AddressOf onLookUp1
AddHandler MyLookupControl.Properties.SelectedValuesChanged, AddressOf onLookUpselectedValue_Control2Set
End If
oFilteredData = DT_CONTROLS.Clone()
End If
AddHandler MyLookupControl.GotFocus, Sub(sender As Control, e As EventArgs)
If DirectCast(MyLookupControl.Tag, ClassControlCreator.ControlMetadata).ReadOnly = False Then
MyLookupControl.BackColor = Color.LightSteelBlue
End If
End Sub
AddHandler MyLookupControl.LostFocus, Sub(sender As Control, e As EventArgs)
If DirectCast(MyLookupControl.Tag, ClassControlCreator.ControlMetadata).ReadOnly = False Then
MyLookupControl.BackColor = Color.White
End If
End Sub
End If
'Return filteredData
'AddHandler lookup.Leave, AddressOf onLookUp0
Case "CHK"
oControlInfo = "CHK#" & oControlInfo
oMyControl = ControlCreator.CreateExisingCheckbox(oControlRow, False)
Dim mycheckbox As CheckBox = oMyControl
AddHandler mycheckbox.CheckedChanged, AddressOf onCheckBox_CheckedChange
Case "TABLE"
If LOG_PERF Then PerformanceLogger.Info("Create_Controls/Table")
oControlInfo = "TABLE#" & oControlInfo
Dim oFilteredDatatable As DataTable = DT_COLUMNS_GRID.Clone()
Dim oExpression = $"CONTROL_ID = {oControlRow.Item("GUID")}"
DT_COLUMNS_GRID.Select(oExpression, "SEQUENCE").CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges)
If oFilteredDatatable.Rows.Count >= 1 Then
ValidatorLogger.Debug("We got a DTGRID_COLUMNS definition for [{0}] ", oControlInfo)
Else
ValidatorLogger.Debug("DTGRID_COLUMNS definition for control [{0}] does not contain any rows!", oControlInfo)
Continue For
End If
Dim oGrid = ControlCreator.CreateExistingGridControl(oControlRow, oFilteredDatatable, False)
oMyControl = oGrid
'AddHandler oGrid.Views(0).c AddressOf GridView_CustomColumnDisplayText
Case "LINE"
oMyControl = ControlCreator.CreateExistingLine(oControlRow, False)
Case "BUTTON"
Dim obutton = ControlCreator.CreateExistingButton(oControlRow, False)
AddHandler obutton.Click, AddressOf onCustomButtonClick
oMyControl = obutton
End Select
ValidatorLogger.Debug($"[{oControlInfo}]: End of Select...")
If TypeOf oMyControl IsNot Label Then
listofControls.Add(oMyControl.Name)
If first_control Is Nothing Then
' If Not (oMyControl.GetType = GetType(LookupControl3) Or oMyControl.GetType = GetType(Button)) Then
first_control = oMyControl
'End If
End If
last_control = oMyControl
oMyControl.TabIndex = oTabIndexCounter
End If
' oMyControl.Tag = CInt(oControlRow.Item("GUID"))
PanelValidatorControl.Controls.Add(oMyControl)
oTabIndexCounter += 1
Catch ex As Exception
Dim st As New StackTrace(True)
st = New StackTrace(ex, True)
'Logger.Error(ex)
Dim omsg = $"Unexpected Error in Create_Controls (Select Case) [{oControlInfo}] - ERROR: {ex.Message}"
ValidatorLogger.Warn(omsg)
If DEBUG = False Then MsgBox(omsg, MsgBoxStyle.Critical, "Attention:")
End Try
Next
ValidatorLogger.Debug("Create_Controls finished!")
Catch ex As Exception
ValidatorLogger.Error(ex)
If DEBUG = False Then MsgBox("Error CreateControls: " & ex.Message, MsgBoxStyle.Critical, "Attention:")
End Try
End Sub
Private Sub GridControlColumnWidthChanged(sender As System.Object, e As System.EventArgs)
Try
Dim oMyGridView As DevExpress.XtraGrid.Views.Grid.GridView = sender
Dim oControlID = DirectCast(oMyGridView.GridControl.Tag, ClassControlCreator.ControlMetadata).Guid
SaveDevExpressGridControl_Layout(CURRENT_ProfilGUID, oControlID, oMyGridView)
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
End Sub
Sub Clear_all_Input()
For Each inctrl As Control In Me.PanelValidatorControl.Controls
Dim Type As Type = inctrl.GetType
Select Case True
Case Type = GetType(DevExpress.XtraEditors.TextEdit) Or Type = GetType(MemoEdit)
'inctrl.Text = ""
DirectCast(inctrl, BaseEdit).EditValue = Nothing
Case Type = GetType(Windows.Forms.ComboBox)
Dim cmb As Windows.Forms.ComboBox = inctrl
cmb.SelectedIndex = -1
Case Type = GetType(DataGridView)
Dim dgv As DataGridView = inctrl
If dgv.Rows.Count > 0 Then
dgv.Rows.Clear()
End If
End Select
Next
Focus_FirstControl()
End Sub
Public Sub OnTextBoxFocus(sender As Object, e As EventArgs)
Dim oTextbox As BaseEdit = sender
Dim oMeta As ClassControlCreator.ControlMetadata = oTextbox.Tag
If oMeta.ReadOnly = False Then
oTextbox.BackColor = Color.LightSteelBlue
oTextbox.ForeColor = GraphicsEx.GetContrastedColor(Color.LightSteelBlue)
oTextbox.SelectAll()
End If
End Sub
Public Sub OnTextBoxLostFocus(sender As System.Object, e As System.EventArgs)
Dim oTextbox As BaseEdit = sender
Dim oMeta As ClassControlCreator.ControlMetadata = oTextbox.Tag
If oMeta.ReadOnly = False Then
oTextbox.BackColor = oMeta.BackColor
oTextbox.ForeColor = GraphicsEx.GetContrastedColor(oMeta.BackColor)
End If
SetControlValues_FromControl(oTextbox)
ControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER)
End Sub
Private Function GetControlID(ByVal PROFILEID As Integer, Controlname As String)
For Each oROW As DataRow In DTVWCONTROL_INDEX.Rows
Next
End Function
Public Sub OnTextBoxKeyUp(sender As Object, e As KeyEventArgs)
If _ControlHandleStarted = True Then
_ControlHandleStarted = False
Exit Sub
End If
Dim oTextBox As BaseEdit = sender
If oTextBox.Text <> String.Empty And _FormClosing = False And _Indexe_Loaded = True And oTextBox.Height < 25 Then
If (e.KeyCode = Keys.Return) Or (e.KeyCode = Keys.Tab) Or (e.KeyCode = Keys.Enter) Then
Try
Dim CONTROL_ID = DirectCast(oTextBox.Tag, ClassControlCreator.ControlMetadata).Guid
Dim oSql = String.Format("SELECT NAME, CONNECTION_ID, SQL_UEBERPRUEFUNG FROM TBPM_PROFILE_CONTROLS WHERE CONTROL_ACTIVE = 1 AND PROFIL_ID = {0} AND SQL_UEBERPRUEFUNG LIKE '%{1}%'", CURRENT_ProfilGUID, oTextBox.Name)
Dim DTCONTROLS_UEBP As DataTable
DTCONTROLS_UEBP = DatabaseFallback.GetDatatable("TBPM_PROFILE_CONTROLS_SQL_UEP", New GetDatatableOptions(oSql, DatabaseType.ECM) With {
.FilterExpression = $"PROFIL_ID = {CURRENT_ProfilGUID} AND SQL_UEBERPRUEFUNG LIKE '%{oTextBox.Name}%'"
})
If Not IsNothing(DTCONTROLS_UEBP) AndAlso DTCONTROLS_UEBP.Rows.Count > 0 Then
For Each oRow As DataRow In DTCONTROLS_UEBP.Rows
Try
Dim oControlName = oRow.Item("NAME").ToString
Dim oSqlStatement = oRow.Item("SQL_UEBERPRUEFUNG")
Dim oConnectionId = oRow.Item("CONNECTION_ID")
If Not IsDBNull(oSqlStatement) And Not IsDBNull(oConnectionId) Then
oSqlStatement = clsPatterns.ReplaceAllValues(oSqlStatement, PanelValidatorControl, True)
_DependingControl_In_Action = True
Depending_Control_Set_Result(oControlName, oSqlStatement, oConnectionId)
_DependingControl_In_Action = False
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
ValidatorLogger.Info("Unexpected Error in Display SQL result for control: " & oRow.Item("NAME") & " - ERROR: " & ex.Message)
End Try
Next
End If
ControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER)
Catch ex As Exception
ValidatorLogger.Error(ex)
ValidatorLogger.Info("Unexpected Error in Eventhandler Variable SQL Result - ERROR: " & ex.Message)
End Try
If oTextBox.Name <> last_control.Name Then
SendKeys.Send("{TAB}")
_ControlHandleStarted = True
End If
End If
End If
End Sub
Private Sub onCustomButtonClick(sender As System.Object, e As System.EventArgs)
Try
Cursor = Cursors.WaitCursor
Dim oButton As Windows.Forms.Button = sender
Dim oControlID = DirectCast(oButton.Tag, ClassControlCreator.ControlMetadata).Guid
Dim oSQL = ControlCreator.GET_CONTROL_PROPERTY(DT_CONTROLS, oControlID, "SQL_UEBERPRUEFUNG")
If IsNothing(oSQL) Then
ValidatorLogger.Warn("onCustomButtonClick - SQL_UEBERPRUEFUNG IS NOTHING")
Exit Sub
End If
If Check_UpdateIndexe() = False Then
ValidatorLogger.Warn("onCustomButtonClick - Check_UpdateIndexe = False >> Exit Click")
Exit Sub
End If
Override_SQLCommand = ControlCreator.GET_CONTROL_PROPERTY(DT_CONTROLS, oControlID, "SQL2")
If IsNothing(Override_SQLCommand) Then
Override_SQLCommand = ""
End If
oSQL = clsPatterns.ReplaceAllValues(oSQL, PanelValidatorControl, True)
Override_SQLCommand = clsPatterns.ReplaceAllValues(Override_SQLCommand, PanelValidatorControl, True)
Dim oDT_ACTIONS As DataTable = DatabaseFallback.GetDatatableECM(oSQL) ', "onCustomButtonClick")
If IsNothing(oDT_ACTIONS) Then
MsgBox("Something went wrong in custom action - Please check Your log!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
Exit Sub
ElseIf oDT_ACTIONS.Rows.Count = 0 Then
MsgBox("Something went wrong in custom action (No row) - Please check Your log!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
Exit Sub
End If
Dim oAction
Dim oControlName
Dim oQuestion
Dim oTitle
Dim oCaption
Dim oColor
Try
oAction = oDT_ACTIONS?.Rows(0).Item("ActionType")
Catch ex As Exception
oAction = ""
End Try
Try
oControlName = oDT_ACTIONS?.Rows(0).Item("Controlname")
Catch ex As Exception
oControlName = ""
End Try
Try
oQuestion = oDT_ACTIONS?.Rows(0).Item("Question")
Catch ex As Exception
oQuestion = ""
End Try
Try
oTitle = oDT_ACTIONS?.Rows(0).Item("Title")
Catch ex As Exception
oTitle = ""
End Try
Try
oCaption = oDT_ACTIONS?.Rows(0).Item("CaptionButton").ToString
Catch ex As Exception
oCaption = ""
End Try
Try
oColor = System.Drawing.Color.FromName(oDT_ACTIONS?.Rows(0).Item("Color"))
Catch ex As Exception
oColor = ""
End Try
Try
OverrideAll = oDT_ACTIONS?.Rows(0).Item("OverrideAll")
Catch ex As Exception
ValidatorLogger.Warn($"Could not set OverrideAll {ex.Message}")
OverrideAll = False
End Try
If OverrideAll = True Then
ValidatorLogger.Info($"CURRENT_DOC_ID: {CURRENT_DOC_ID} - OverrideAll will be in Action!")
End If
ValidatorLogger.Debug($"ActionType [{oAction}]")
Select Case oAction.ToString.ToUpper
Case "SetButton".ToUpper
btnSave.Text = oCaption & " (F2)"
btnSave.Appearance.BackColor = oColor
Case "Override_Question".ToUpper
If oQuestion <> "" Then
Dim result As MsgBoxResult
result = MessageBox.Show(oQuestion, oTitle, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)
If result = MsgBoxResult.Yes Then
Override = True
Finish_WFStep()
End If
End If
Case "Update_Single_Control".ToUpper
Dim oResult1 As Boolean = True
If oQuestion <> "" Then
Dim result As MsgBoxResult
result = MessageBox.Show(oQuestion, oTitle, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)
If result = MsgBoxResult.No Then
oResult1 = False
End If
Else
End If
If oResult1 = True Then
Dim oREsult As Boolean = True
If Override_SQLCommand <> "" Then
oREsult = DatabaseFallback.ExecuteNonQueryECM(Override_SQLCommand)
End If
If oREsult = True Then
Reload_Controls(oControlName)
Else
MsgBox("Unexpected error in Button Refresh_Controls - Check Your log!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
End If
End If
Case "Update_Controls".ToUpper
If oQuestion <> "" Then
Dim result As MsgBoxResult
result = MessageBox.Show(oQuestion, oTitle, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)
If result = MsgBoxResult.Yes Then
Dim oREsult As Boolean = True
If Override_SQLCommand <> "" Then
oREsult = DatabaseFallback.ExecuteNonQueryECM(Override_SQLCommand)
End If
If oREsult = True Then
SetStatusLabel("Refreshed single control", "Yellow")
FillIndexValues(False)
Else
MsgBox("Unexpected error in Button Refresh_Controls - Check Your log!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
End If
End If
End If
Case "Override_Direct".ToUpper
Override = True
If Check_UpdateIndexe() = True Then
Finish_WFStep(False)
End If
Case "Override incFinal".ToUpper
If Check_UpdateIndexe() = True Then
Finish_WFStep(False)
End If
Case "MsgboxResult".ToUpper
MessageBox.Show(oQuestion, oTitle, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Case Else
MsgBox($"No configured action provided for onCustomButtonClick [{oAction}]", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
ValidatorLogger.Warn($"No configured action provided for onCustomButtonClick [{oAction}]")
End Select
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
Cursor = Cursors.Default
End Sub
Public Sub onDGVRowValidating(ByVal sender As Object, ByVal e As DataGridViewCellCancelEventArgs)
Dim dgv As DataGridView = sender
Try
Dim CONTROL_ID = DirectCast(dgv.Tag, ClassControlCreator.ControlMetadata).Guid
Dim sql = String.Format("select NAME,CONNECTION_ID,SQL_UEBERPRUEFUNG FROM TBPM_PROFILE_CONTROLS WHERE CONTROL_ACTIVE = 1 AND PROFIL_ID = {0} And SQL_UEBERPRUEFUNG Like '%{1}%'", CURRENT_ProfilGUID, dgv.Name)
Dim DT As DataTable = DatabaseFallback.GetDatatable("TBPM_PROFILE_CONTROLS", New GetDatatableOptions(sql, DatabaseType.ECM) With {
.FilterExpression = String.Format("CONTROL_ACTIVE = 1 AND PROFIL_ID = {0} And SQL_UEBERPRUEFUNG Like '%{1}%'", CURRENT_ProfilGUID, dgv.Name)
})
If Not IsNothing(DT) And DT.Rows.Count > 0 Then
For Each ROW As DataRow In DT.Rows
Try
Dim displayboxname = ROW.Item("NAME").ToString
If Not IsDBNull(ROW.Item("CONNECTION_ID")) And Not IsDBNull(ROW.Item("SQL_UEBERPRUEFUNG")) Then
Dim sql_Statement = ROW.Item("SQL_UEBERPRUEFUNG")
Dim cellvalue = dgv.Rows(dgv.Rows.Count - 2).Cells(0).Value.ToString()
sql_Statement = sql_Statement.ToString.Replace(dgv.Name, cellvalue)
'Dim resultDT As DataTable = ClassDatabase.Return_Datatable_ConId(sql_Statement, ROW.Item(1), $"oControlID[{CONTROL_ID}]")
Dim resultDT As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(sql_Statement, DatabaseType.ECM) With {
.ConnectionId = ROW.Item("CONNECTION_ID")
})
If resultDT.Rows.Count >= 1 Then
'Nur dediziert einen Wert zurückerhalten
For Each row1 As DataRow In resultDT.Rows
Dim result = row1.Item(0)
If Not IsNothing(result) Then
PanelValidatorControl.Controls(displayboxname).Text = result.ToString
Exit For
Else
PanelValidatorControl.Controls(displayboxname).Text = "RESULT = NOTHING"
Exit For
End If
Next
Else
PanelValidatorControl.Controls(displayboxname).Text = "NO RESULT"
End If
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
ValidatorLogger.Info("Unexpected Error in Display SQL result for control: " & ROW.Item(0).ToString & " - ERROR: " & ex.Message)
End Try
Next
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
ValidatorLogger.Info("Unexpected Error in Eventhandler Variable SQL Result - ERROR: " & ex.Message)
End Try
End Sub
Public Sub onLookUpselectedValue(sender As Object, SelectedValues As List(Of String))
Try
ValidatorLogger.Debug("onLookUpselectedValue")
If _FormLoaded = False Then
Exit Sub
End If
Dim oRepositoryItem As RepositoryItemLookupControl3 = sender
Dim oLookup As LookupControl3 = oRepositoryItem.OwnerEdit
Try
If Not IsNothing(SelectedValues) Then
If SelectedValues.Count = 1 Then
LookupControl_DependingControls(oLookup, SelectedValues)
LookupControl_EnablingControls(oLookup, SelectedValues)
LookupControl_DependingColumn(oLookup, SelectedValues)
Else
ValidatorLogger.Debug("Attention: onLookUpselectedValue: SelectedValues.Count <> 1 ")
End If
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
Catch ex As Exception
ValidatorLogger.Warn("Unexpected error in onLookUpselectedValue - " + ex.Message)
ValidatorLogger.Error(ex)
End Try
End Sub
Public Sub LookupListChanged(sender As Object, SelectedValues As List(Of String))
If _FormLoaded = False Or PanelValidatorControl.Enabled = False Then
Exit Sub
End If
Try
Dim oLookup As RepositoryItemLookupControl3 = sender
listChangedLookup.Add(oLookup.Name)
ControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER)
'Verschiebt den Fokus auf das nächste Control
Dim oFound As Boolean = False
For Each oString As String In listofControls
If oString = oLookup.Name And oFound = False Then
oFound = True
ElseIf oFound = True Then
For Each oControl As Control In PanelValidatorControl.Controls
If oControl.Name = oString Then
oControl.Focus()
Exit For
End If
Next
Exit For
End If
Next
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
End Sub
Public Sub onCheckBox_CheckedChange(sender As Object, e As EventArgs)
ValidatorLogger.Debug("onCheckBox_CheckedChange")
If _FormLoaded = False Then
Exit Sub
End If
Dim oCheckbox As CheckBox = sender
Try
CheckBox_DependingControls(oCheckbox)
Checkbox_EnablingControls(oCheckbox)
CheckBox_DependingColumn(oCheckbox)
SetControlValues_FromControl(oCheckbox)
ControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER)
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
End Sub
Public Sub onLookUpselectedValue_Control2Set(sender As Object, SelectedValues As List(Of String))
If _FormLoaded = False Or PanelValidatorControl.Enabled = False Then
Exit Sub
End If
ValidatorLogger.Debug("onLookUpselectedValue_Control2Set")
Dim oRepositoryItem As RepositoryItemLookupControl3 = sender
Dim oLookup As LookupControl3 = oRepositoryItem.OwnerEdit
SetControlValues_FromControl(oLookup)
End Sub
Private Sub SetControlValues_FromControl(pControl As Control)
Dim oControlName = pControl.Name
Dim oControlMeta = DirectCast(pControl.Tag, ClassControlCreator.ControlMetadata)
Dim oControlID = oControlMeta.Guid
If _SetControlValue_In_Action = True Then
ValidatorLogger.Debug("SetControlValue in action. Exiting.")
Exit Sub
End If
Dim oFilteredDatatable As DataTable = DT_CONTROLS.Clone()
DT_CONTROLS.
Select($"GUID = {oControlID} and LEN(SET_CONTROL_DATA) > 0").
CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges)
If oFilteredDatatable.Rows.Count < 1 Then
ValidatorLogger.Debug("SET_CONTROL_DATA is empty for control [{0}]. Exiting.", oControlName)
Exit Sub
End If
Dim oRow As DataRow = oFilteredDatatable.Rows.Item(0)
Dim oControlGUID2Set = oControlID
Dim oControlname2Set = oRow.Item("NAME")
ValidatorLogger.Debug($"Workin on SetControLValue for {oControlname2Set} ...")
Dim oConnectionId = oRow.ItemEx("CONNECTION_ID", -1)
Dim oControlDataSql = oRow.ItemEx("SET_CONTROL_DATA", String.Empty)
If oConnectionId = -1 Or oControlDataSql = String.Empty Then
ValidatorLogger.Debug($"Error: Check CoNN ID and SQL on NULL VALUES!")
Exit Sub
End If
oControlDataSql = clsPatterns.ReplaceAllValues(oControlDataSql, PanelValidatorControl, True)
Dim oControlDataResult As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oControlDataSql, DatabaseType.ECM) With {
.ConnectionId = oConnectionId
})
If oControlDataResult Is Nothing Then
Exit Sub
End If
Dim oButtonFinishSet As Boolean = False
For Each oResultRow As DataRow In oControlDataResult.Rows
Try
_SetControlValue_In_Action = True
Dim oControl2Set = oResultRow.ItemEx("Control2Set", String.Empty)
Dim oControlCaption = oResultRow.ItemEx("Caption", String.Empty)
Dim oControlBackColor = Color.FromName(oResultRow.ItemEx("BackgroundColor", "Transparent"))
Dim oControlFontColor = Color.FromName(oResultRow.ItemEx("FontColor", "Black"))
Dim oControlTextOption = oResultRow.ItemEx("TextOption", "Replace")
If oControl2Set.ToString.ToUpper = "BTN_FINISH".ToUpper Then
btnSave.Text = oControlCaption & " (F2)"
btnSave.Appearance.BackColor = oControlBackColor
btnSave.Appearance.ForeColor = oControlFontColor
oButtonFinishSet = True
_SetControlValue_In_Action = False
Continue For
End If
Dim oFound As Boolean = False
Dim oControlId2Set As Integer
'If Not Integer.TryParse(oControl2Set, oControlId2Set) Then
' Logger.Warn("Careful: the oControl2Set contains no CONTROL_GUID")
' Exit Sub
'End If
Dim oControlObject2Set = PanelValidatorControl.Controls.Cast(Of Control).
Where(Function(c)
Dim oMeta = DirectCast(c.Tag, ClassControlCreator.ControlMetadata)
Return oControl2Set = oMeta.Guid OrElse oControl2Set = oMeta.Name
End Function).FirstOrDefault()
If oControlObject2Set IsNot Nothing Then
Dim oControl As Control = oControlObject2Set
Dim oMeta As ClassControlCreator.ControlMetadata = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata)
ValidatorLogger.Debug($"Got the Control2Set: {oControlId2Set}..Setting the values..")
Select Case True
Case oControl.GetType() = GetType(DevExpress.XtraEditors.TextEdit) Or oControl.GetType() = GetType(MemoEdit)
Try
If oControlTextOption = "Replace" Then
oControl.Text = oControlCaption
Else
oControl.Text &= oControlCaption
End If
oControl.BackColor = oControlBackColor
oControl.ForeColor = oControlFontColor
Catch ex As Exception
ValidatorLogger.Warn($"Error while Control2Set (TextEdit): {ex.Message}")
End Try
Case oControl.GetType() = GetType(LookupControl3)
Try
Dim oDependingLookup As LookupControl3 = oControl
If oDependingLookup.Properties.MultiSelect = True Then
If oControlTextOption = "Replace" Then
oDependingLookup.Properties.SelectedValues = New List(Of String) From {oControlCaption}
Else
oDependingLookup.Properties.SelectedValues.Add(oControlCaption)
End If
Else
oDependingLookup.Properties.SelectedValues = New List(Of String) From {oControlCaption}
End If
Catch ex As Exception
ValidatorLogger.Warn($"Error while Control2Set (LookupControl3): {ex.Message}")
End Try
Case oControl.GetType() = GetType(Windows.Forms.ComboBox)
Try
Dim oDependingCombobox As Windows.Forms.ComboBox = oControl
' Versuche, den Index des Eintrags zu finden, der genau dem String entspricht
Dim oIndex As Integer = oDependingCombobox.FindStringExact(oControlCaption)
If oIndex <> -1 Then
' Wenn ein gültiger Index gefunden wurde, setze ihn als ausgewählten Index
oDependingCombobox.SelectedIndex = oIndex
Try
oDependingCombobox.BackColor = oControlBackColor
Catch ex As Exception
End Try
Try
oDependingCombobox.ForeColor = oControlFontColor
Catch ex As Exception
End Try
Else
' Optional: Handle den Fall, dass der String nicht gefunden wurde
End If
Catch ex As Exception
ValidatorLogger.Warn($"Error while Control2Set (Combobox): {ex.Message}")
End Try
Case oControl.GetType() = GetType(Windows.Forms.CheckBox)
Dim oBitValue As Boolean
Try
oBitValue = CBool(oControlCaption)
Dim oDependingCheckbox As Windows.Forms.CheckBox = oControl
oDependingCheckbox.Checked = oBitValue
Try
oDependingCheckbox.BackColor = oControlBackColor
Catch ex As Exception
End Try
Try
oDependingCheckbox.ForeColor = oControlFontColor
Catch ex As Exception
End Try
Catch ex As Exception
ValidatorLogger.Warn($"Error while Control2Set (Checkbox): {ex.Message}")
End Try
Case Else
ValidatorLogger.Warn("SetControlData used on unsupported control")
End Select
oFound = True
'Exit For
End If
If oFound = False Then
ValidatorLogger.Debug($"Could not find the Control2Set with ID {oControlGUID2Set} on panel!!!")
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
ValidatorLogger.Warn($"Error while Control2Set for [{oControlname2Set}]: " & ex.Message)
Finally
_SetControlValue_In_Action = False
End Try
Next
End Sub
Private Sub LookupControl_DependingControls(LookupControl As LookupControl3, SelectedValues As List(Of String))
Dim oLOOKUPValue = SelectedValues.Item(0
)
Dim oLOOKUPName = LookupControl.Name
ValidatorLogger.Debug($"oLOOKUPValue is [{oLOOKUPValue}]!")
Dim oControlID = DirectCast(LookupControl.Tag, ClassControlCreator.ControlMetadata).Guid
Dim oFilteredDatatable As DataTable = DT_CONTROLS.Clone()
Dim oExpression = $"SQL_UEBERPRUEFUNG like '%#CTRL#{oLOOKUPName}%'"
DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges)
If oFilteredDatatable.Rows.Count > 0 Then
ValidatorLogger.Debug($"We got {oFilteredDatatable.Rows.Count} depending controls!!")
Else
ValidatorLogger.Debug($"Sorry NO depending controls!!")
End If
For Each oRowDependingControl As DataRow In oFilteredDatatable.Rows
Dim oDEPENDING_GUID = oRowDependingControl.Item("GUID")
Dim oDEPENDING_CtrlName = oRowDependingControl.Item("NAME")
ValidatorLogger.Debug($"Control {oDEPENDING_CtrlName} is depending on lookUp {oLOOKUPName}..")
If _DependingControl_In_Action = True Then
ValidatorLogger.Debug($"..but _dependingControl_in_action = True ==> Exit Sub!")
Exit Sub
End If
If Not IsDBNull(oRowDependingControl.Item("CONNECTION_ID")) And Not IsDBNull(oRowDependingControl.Item("SQL_UEBERPRUEFUNG")) Then
Dim oSqlCommand = IIf(IsDBNull(oRowDependingControl.Item("SQL_UEBERPRUEFUNG")), "", oRowDependingControl.Item("SQL_UEBERPRUEFUNG"))
oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True)
_DependingControl_In_Action = True
'Dim oDTDEPENDING_RESULT As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oRowDependingControl.Item("CONNECTION_ID"), $"LookupControl_DependingControls - oControlID: {oControlID}")
Dim oDTDEPENDING_RESULT As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSqlCommand, DatabaseType.ECM) With {
.ConnectionId = oRowDependingControl.Item("CONNECTION_ID")
})
Try
Dim oFound As Boolean = False
For Each oControl As Control In PanelValidatorControl.Controls
If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid = oDEPENDING_GUID Then
oFound = True
ValidatorLogger.Debug($"Got the depending control ID:{oDEPENDING_GUID}..Setting the values..")
Select Case True
Case oControl.GetType() = GetType(DevExpress.XtraEditors.TextEdit) Or oControl.GetType() = GetType(MemoEdit)
Try
Dim oValue As Object = oDTDEPENDING_RESULT.Rows(0).Item(0)
oValue = ObjectEx.NotNull(Of Object)(oValue, Nothing)
Try
'oControl.Text = oValue
DirectCast(oControl, DevExpress.XtraEditors.TextEdit).EditValue = oValue
Catch ex As Exception
ValidatorLogger.Warn($"Unexpected error in Checking oTEXT: {ex.Message}")
End Try
Catch ex As Exception
ValidatorLogger.Warn($"Unexpected error in Dim oTEXT = oDTDEPENDING_RESULT.Rows(0).Item(0): {ex.Message}")
End Try
Dim oColor
Try
oColor = System.Drawing.Color.FromName(oDTDEPENDING_RESULT.Rows(0).Item("BackgroundColor"))
oControl.BackColor = oColor
Catch ex As Exception
oControl.BackColor = Color.White
End Try
Try
Dim btntext = oDTDEPENDING_RESULT.Rows(0).Item("btnFinishCaption")
btnSave.Text = btntext & " (F2)"
Catch ex As Exception
End Try
Try
oColor = System.Drawing.Color.FromName(oDTDEPENDING_RESULT.Rows(0).Item("btnFinishColor"))
btnSave.BackColor = oColor
Catch ex As Exception
btnSave.BackColor = Color.Transparent
End Try
Case oControl.GetType() = GetType(LookupControl3)
Dim oDependingLookup As LookupControl3 = oControl
oDependingLookup.Properties.DataSource = oDTDEPENDING_RESULT
oDependingLookup.Properties.ValueMember = oDTDEPENDING_RESULT.Columns.Item(0).ColumnName
oDependingLookup.Properties.DisplayMember = oDTDEPENDING_RESULT.Columns.Item(0).ColumnName
Case oControl.GetType() = GetType(GridControl)
'ClassControlCreator.GridTables
Case oControl.GetType() = GetType(CheckBox)
Try
Dim oCheckState = CBool(oDTDEPENDING_RESULT.Rows(0).Item(0))
Dim oDependingChk As CheckBox = oControl
oDependingChk.CheckState = oCheckState
Dim oColor
Try
oColor = System.Drawing.Color.FromName(oDTDEPENDING_RESULT.Rows(0).Item("BackgroundColor"))
oControl.BackColor = oColor
Catch ex As Exception
End Try
Catch ex As Exception
ValidatorLogger.Warn($"Unexpected error in Checking oCheckBoxDependingControlLOOKUP: {ex.Message}")
End Try
End Select
_DependingControl_In_Action = False
Exit For
End If
Next
If oFound = False Then
ValidatorLogger.Debug($"Could not find the depending Control with ID {oDEPENDING_GUID} on panel!!!")
End If
Catch ex As Exception
ValidatorLogger.Warn($"Error while setting depending control-value for [{oDEPENDING_CtrlName}]: " & ex.Message)
_DependingControl_In_Action = False
End Try
SendKeys.Send("{TAB}")
_ControlHandleStarted = True
Else
ValidatorLogger.Debug($"Error: Check CoNN ID and SQL on NULL VALUES!")
End If
Next
If oFilteredDatatable.Rows.Count = 1 Then
End If
End Sub
Private Sub CheckBox_DependingControls(pCheckbox As CheckBox)
Dim oCheckboxname = pCheckbox.Name
ValidatorLogger.Debug($"pCheckStateTrue [{pCheckbox.Checked}]!")
Dim oControlID = DirectCast(pCheckbox.Tag, ClassControlCreator.ControlMetadata).Guid
Dim oFilteredDatatable As DataTable = DT_CONTROLS.Clone()
Dim oExpression = $"SQL_UEBERPRUEFUNG like '%#CTRL#{oCheckboxname}%'"
DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges)
If oFilteredDatatable.Rows.Count > 0 Then
ValidatorLogger.Debug($"We got {oFilteredDatatable.Rows.Count} depending controls!!")
Else
ValidatorLogger.Debug($"Sorry NO depending controls!!")
End If
For Each oRowDependingControl As DataRow In oFilteredDatatable.Rows
Dim oDEPENDING_GUID = oRowDependingControl.Item("GUID")
Dim oDEPENDING_CtrlName = oRowDependingControl.Item("NAME")
ValidatorLogger.Debug($"Control {oDEPENDING_CtrlName} is depending on lookUp {oCheckboxname}..")
If _DependingControl_In_Action = True Then
ValidatorLogger.Debug($"..but _dependingControl_in_action = True ==> Exit Sub!")
Exit Sub
End If
If Not IsDBNull(oRowDependingControl.Item("CONNECTION_ID")) And Not IsDBNull(oRowDependingControl.Item("SQL_UEBERPRUEFUNG")) Then
Dim oSqlCommand = IIf(IsDBNull(oRowDependingControl.Item("SQL_UEBERPRUEFUNG")), "", oRowDependingControl.Item("SQL_UEBERPRUEFUNG"))
oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True)
_DependingControl_In_Action = True
'Dim oDTDEPENDING_RESULT As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oRowDependingControl.Item("CONNECTION_ID"), $"CheckBox_DependingControls - oControlID: {oControlID}")
Dim oDTDEPENDING_RESULT As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSqlCommand, DatabaseType.ECM) With {
.ConnectionId = oRowDependingControl.Item("CONNECTION_ID")
})
Try
Dim oFound As Boolean = False
'Dim oDependingLookup As LookupControl3 = pnldesigner.Controls.Find(oDEPENDING_CtrlName, False).FirstOrDefault()
For Each oControl As Control In PanelValidatorControl.Controls
If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid = oDEPENDING_GUID Then
oFound = True
ValidatorLogger.Debug($"Got the depending control ID:{oDEPENDING_GUID}..Setting the values..")
Select Case True
Case oControl.GetType = GetType(DevExpress.XtraEditors.TextEdit) Or oControl.GetType = GetType(MemoEdit)
Try
Dim oValue As Object = oDTDEPENDING_RESULT.Rows(0).Item(0)
oValue = ObjectEx.NotNull(Of Object)(oValue, Nothing)
Try
'oControl.Text = oValue
DirectCast(oControl, DevExpress.XtraEditors.TextEdit).EditValue = oValue
Catch ex As Exception
ValidatorLogger.Warn($"Unexpected error in Checking oTEXT: {ex.Message}")
End Try
Catch ex As Exception
ValidatorLogger.Warn($"Unexpected error in Dim oTEXT = oDTDEPENDING_RESULT.Rows(0).Item(0): {ex.Message}")
End Try
Dim oColor
Try
oColor = System.Drawing.Color.FromName(oDTDEPENDING_RESULT.Rows(0).Item("BackgroundColor"))
oControl.BackColor = oColor
Catch ex As Exception
oControl.BackColor = Color.White
End Try
Try
Dim btntext = oDTDEPENDING_RESULT.Rows(0).Item("btnFinishCaption")
btnSave.Text = btntext & " (F2)"
Catch ex As Exception
End Try
Try
oColor = System.Drawing.Color.FromName(oDTDEPENDING_RESULT.Rows(0).Item("btnFinishColor"))
btnSave.BackColor = oColor
Catch ex As Exception
btnSave.BackColor = Color.Transparent
End Try
Case oControl.GetType = GetType(LookupControl3)
Dim oDependingLookup As LookupControl3 = oControl
oDependingLookup.Properties.DataSource = oDTDEPENDING_RESULT
oDependingLookup.Properties.ValueMember = oDTDEPENDING_RESULT.Columns.Item(0).ColumnName
oDependingLookup.Properties.DisplayMember = oDTDEPENDING_RESULT.Columns.Item(0).ColumnName
Case oControl.GetType = GetType(GridControl)
'ClassControlCreator.GridTables
Case oControl.GetType = GetType(CheckBox)
Try
Dim oCheckState = CBool(oDTDEPENDING_RESULT.Rows(0).Item(0))
Dim oDependingChk As CheckBox = oControl
oDependingChk.CheckState = oCheckState
Dim oColor
Try
oColor = System.Drawing.Color.FromName(oDTDEPENDING_RESULT.Rows(0).Item("BackgroundColor"))
oControl.BackColor = oColor
Catch ex As Exception
End Try
Catch ex As Exception
ValidatorLogger.Warn($"Unexpected error in Checking oCheckBoxDependingControlCHK: {ex.Message}")
End Try
End Select
_DependingControl_In_Action = False
Exit For
End If
Next
If oFound = False Then
ValidatorLogger.Debug($"Could not find the depending Control with ID {oDEPENDING_GUID} on panel!!!")
End If
Catch ex As Exception
ValidatorLogger.Warn($"Error while setting depending control-value for [{oDEPENDING_CtrlName}]: " & ex.Message)
_DependingControl_In_Action = False
End Try
SendKeys.Send("{TAB}")
_ControlHandleStarted = True
Else
ValidatorLogger.Debug($"Error: Check CoNN ID and SQL on NULL VALUES!")
End If
Next
End Sub
Private Sub LookupControl_EnablingControls(LookupControl As LookupControl3, SelectedValues As List(Of String))
Dim oLOOKUPValue = SelectedValues.Item(0)
ValidatorLogger.Debug($"LookupControl_EnablingControls [{LookupControl.Name()}] - oLOOKUPValue is [{oLOOKUPValue}]!")
Dim oControlID = DirectCast(LookupControl.Tag, ClassControlCreator.ControlMetadata).Guid
Controls2beEnabled(LookupControl.Name)
End Sub
Private Sub Checkbox_EnablingControls(pCheckbox As CheckBox)
Dim oControlID = DirectCast(pCheckbox.Tag, ClassControlCreator.ControlMetadata).Guid
Controls2beEnabled(pCheckbox.Name)
End Sub
Private Sub LookupControl_DependingColumn(LookupControl As LookupControl3, SelectedValues As List(Of String))
Dim oSQLColumnDatatable As DataTable = DT_COLUMNS_GRID_WITH_SQL.Clone()
Dim oExpression = $"SQL_COMMAND like '%#CTRL#{LookupControl.Name}%'"
DT_COLUMNS_GRID_WITH_SQL.Select(oExpression).CopyToDataTable(oSQLColumnDatatable, LoadOption.PreserveChanges)
If oSQLColumnDatatable.Rows.Count > 0 Then
For Each oRow As DataRow In oSQLColumnDatatable.Rows
Dim oDEPENDING_CONTROL_ID = oRow.Item("CONTROL_ID")
Dim oCONNID = oRow.Item("CONNECTION_ID")
Dim oDEPENDING_COLUMN = oRow.Item("SPALTENNAME")
Dim oSqlCommand = oRow.Item("SQL_COMMAND")
Dim oAdvancedLookup = oRow.Item("ADVANCED_LOOKUP")
If _DependingColumn_In_Action = True Then
Exit Sub
End If
oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True)
_DependingColumn_In_Action = True
Try
'Dim oDTDEPENDING_RESULT As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oCONNID, $"LookupControl_DependingColumn - oDEPENDING_CONTROL_ID: {oDEPENDING_CONTROL_ID}")
Dim oDTDEPENDING_RESULT As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSqlCommand, DatabaseType.ECM) With {
.ConnectionId = oCONNID
})
If Not IsNothing(oDTDEPENDING_RESULT) Then
ValidatorLogger.Debug($"Trying to fill the DropDown (DC) for ControlID [{oDEPENDING_CONTROL_ID}]..RowCount: [{oDTDEPENDING_RESULT.Rows.Count}] ")
For Each oControl As Control In PanelValidatorControl.Controls
Dim oControlId = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid
If oControlId = oDEPENDING_CONTROL_ID Then
ControlCreator.GridTables_CacheDatatableForColumn(oControlId, oDEPENDING_COLUMN, oSqlCommand, oCONNID, oAdvancedLookup)
_DependingColumn_In_Action = False
Exit For
End If
Next
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
_DependingColumn_In_Action = False
End Try
Next
End If
End Sub
Private Sub CheckBox_DependingColumn(pCheckbox As CheckBox)
Dim oSQLColumnDatatable As DataTable = DT_COLUMNS_GRID_WITH_SQL.Clone()
Dim oExpression = $"SQL_COMMAND like '%#CTRL#{pCheckbox.Name}%'"
DT_COLUMNS_GRID_WITH_SQL.Select(oExpression).CopyToDataTable(oSQLColumnDatatable, LoadOption.PreserveChanges)
If oSQLColumnDatatable.Rows.Count > 0 Then
For Each oRow As DataRow In oSQLColumnDatatable.Rows
Dim oDEPENDING_CONTROL_ID = oRow.Item("CONTROL_ID")
Dim oCONNID = oRow.Item("CONNECTION_ID")
Dim oDEPENDING_COLUMN = oRow.Item("SPALTENNAME")
Dim oSqlCommand = oRow.Item("SQL_COMMAND")
Dim oAdvancedLookup = oRow.Item("ADVANCED_LOOKUP")
If _DependingColumn_In_Action = True Then
Exit Sub
End If
oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True)
_DependingColumn_In_Action = True
Try
'Dim oDTDEPENDING_RESULT As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oCONNID, $"CheckBox_DependingColumn - oDEPENDING_CONTROL_ID: {oDEPENDING_CONTROL_ID}")
Dim oDTDEPENDING_RESULT As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSqlCommand, DatabaseType.ECM) With {
.ConnectionId = oCONNID
})
If Not IsNothing(oDTDEPENDING_RESULT) Then
ValidatorLogger.Debug($"Trying to fill the DropDown (DC) for ControlID [{oDEPENDING_CONTROL_ID}]..RowCount: [{oDTDEPENDING_RESULT.Rows.Count}] ")
For Each oControl As Control In PanelValidatorControl.Controls
Dim oControlId = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid
If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid = oDEPENDING_CONTROL_ID Then
ControlCreator.GridTables_CacheDatatableForColumn(oControlId, oDEPENDING_COLUMN, oSqlCommand, oCONNID, oAdvancedLookup)
_DependingColumn_In_Action = False
Exit For
End If
Next
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
_DependingColumn_In_Action = False
End Try
Next
End If
End Sub
Public Sub OnCmbselectedIndex(sender As System.Object, e As System.EventArgs)
Dim oCombobox As Windows.Forms.ComboBox = sender
If oCombobox.SelectedIndex <> -1 And _Indexe_Loaded = True Then
If oCombobox.Name = last_control.Name Then
'Abschluss()
Else
Try
Dim CONTROL_ID = DirectCast(oCombobox.Tag, ClassControlCreator.ControlMetadata).Guid
Dim sql = String.Format("select NAME,CONNECTION_ID,SQL_UEBERPRUEFUNG FROM TBPM_PROFILE_CONTROLS WHERE CONTROL_ACTIVE = 1 AND PROFIL_ID = {0} AND SQL_UEBERPRUEFUNG LIKE '%{1}%'", CURRENT_ProfilGUID, oCombobox.Name)
Dim DT As DataTable = DatabaseFallback.GetDatatable("TBPM_PROFILE_CONTROLS", New GetDatatableOptions(sql, DatabaseType.ECM) With {
.FilterExpression = String.Format("CONTROL_ACTIVE = 1 AND PROFIL_ID = {0} And SQL_UEBERPRUEFUNG Like '%{1}%'", CURRENT_ProfilGUID, oCombobox.Name)
})
If Not IsNothing(DT) And DT.Rows.Count > 0 Then
If _DependingControl_In_Action = True Then
Exit Sub
End If
Dim _Step = 0
For Each ROW As DataRow In DT.Rows
Try
Dim displayboxname = ROW.Item(0).ToString
_Step = 1
If Not IsDBNull(ROW.Item("CONNECTION_ID")) And Not IsDBNull(ROW.Item("SQL_UEBERPRUEFUNG")) Then
_Step = 2
Dim sql_Statement = IIf(IsDBNull(ROW.Item("SQL_UEBERPRUEFUNG")), "", ROW.Item("SQL_UEBERPRUEFUNG"))
sql_Statement = clsPatterns.ReplaceAllValues(sql_Statement, PanelValidatorControl, True)
_Step = 3
_DependingControl_In_Action = True
_Step = 4
Depending_Control_Set_Result(displayboxname, sql_Statement, ROW.Item(1))
_Step = 5
_DependingControl_In_Action = False
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
ValidatorLogger.Info("Unexpected Error in Display SQL result (Combobox) for control: (" & _Step.ToString & ")" & ROW.Item(0).ToString & " - ERROR: " & ex.Message)
End Try
Next
End If
ControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER)
Controls2beEnabled(oCombobox.Name)
SetControlValues_FromControl(oCombobox)
Catch ex As Exception
ValidatorLogger.Error(ex)
ValidatorLogger.Info("Unexpected Error in Eventhandler Variable SQL Result ComboBox - ERROR: " & ex.Message)
End Try
_ControlHandleStarted = True
End If
End If
End Sub
Private Sub Controls2beEnabled(pControlName As String)
Try
' 18.10.2021: ENABLE_SQL nicht beim Form Load verarbeiten
If _FormLoaded = False Then
Exit Sub
End If
Dim oFilteredDatatable As DataTable = DT_CONTROLS.Clone()
Dim oExpression = $"SQL_ENABLE like '%#CTRL#{pControlName}%'"
DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges)
If oFilteredDatatable.Rows.Count > 0 Then
ValidatorLogger.Debug($"We got {oFilteredDatatable.Rows.Count} controls which got enable definitions!!")
Else
ValidatorLogger.Debug($"Sorry NO controls with enabling definition!!")
End If
For Each oRowEnablingControl As DataRow In oFilteredDatatable.Rows
Dim oENABLE_GUID = oRowEnablingControl.Item("GUID")
Dim oENABLE_CtrlName = oRowEnablingControl.Item("NAME")
ValidatorLogger.Debug($"Control {oENABLE_CtrlName} is depending on Control: {pControlName}..")
If _DependingControl_In_Action = True Then
ValidatorLogger.Debug($"..but _dependingControl_in_action = True ==> Exit Sub!")
Exit Sub
End If
If Not IsDBNull(oRowEnablingControl.Item("CONNECTION_ID")) And Not IsDBNull(oRowEnablingControl.Item("SQL_ENABLE")) Then
Dim oSqlCommand = IIf(IsDBNull(oRowEnablingControl.Item("SQL_ENABLE")), "", oRowEnablingControl.Item("SQL_ENABLE"))
oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True)
_DependingControl_In_Action = True
Dim oConnectionId As Integer = oRowEnablingControl.Item("CONNECTION_ID")
Dim oENABLERESULT As Boolean = False
oENABLERESULT = DatabaseFallback.GetScalarValueWithConnection(oSqlCommand, oConnectionId)
Try
Dim oFound As Boolean = False
For Each oControl As Control In PanelValidatorControl.Controls
If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid = oENABLE_GUID Then
oFound = True
ValidatorLogger.Debug($"Got the depending control ID:{oENABLE_GUID}..Setting enabled/Disabled...")
oControl.Enabled = oENABLERESULT
_DependingControl_In_Action = False
Exit For
End If
Next
If oFound = False Then
ValidatorLogger.Debug($"Could not find the enabling Control with ID {oENABLE_GUID} on panel!!!")
End If
Catch ex As Exception
ValidatorLogger.Warn($"Error while setting enabling control-value for [{oENABLE_CtrlName}]: " & ex.Message)
_DependingControl_In_Action = False
End Try
Else
ValidatorLogger.Debug($"Error: Check CoNN ID and SQL on NULL VALUES!")
End If
Next
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
End Sub
'Private Sub Controls2beDisabled()
' Try
' Dim oFilteredDatatable As DataTable = DT_CONTROLS.Clone()
' Dim oExpression = $"LEN(SQL_ENABLE) > 0"
' DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges)
' If oFilteredDatatable.Rows.Count > 0 Then
' Logger.Debug($"We got {oFilteredDatatable.Rows.Count} controls which need to be disabled!!")
' End If
' For Each oRowEnablingControl As DataRow In oFilteredDatatable.Rows
' Dim oENABLE_GUID = oRowEnablingControl.Item("GUID")
' Dim oENABLE_CtrlName = oRowEnablingControl.Item("NAME")
' For Each oControl As Control In PanelValidatorControl.Controls
' If oENABLE_GUID = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid Then
' oControl.Enabled = False
' Exit For
' End If
' Next
' Next
' Catch ex As Exception
' Logger.Error(ex)
' End Try
'End Sub
Private Sub Controls2B_EnDisabled_on_Load()
If LOG_PERF Then PerformanceLogger.Info("Controls2B_EnDisabled_on_Load")
Try
Dim oFilteredDatatable As DataTable = DT_CONTROLS.Clone()
Dim oExpression = $"LEN(SQL_ENABLE_ON_LOAD) > 0"
DT_CONTROLS.Select(oExpression).CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges)
If oFilteredDatatable.Rows.Count > 0 Then
ValidatorLogger.Debug($"We got {oFilteredDatatable.Rows.Count} controls which need to be checked dis/enable on load!")
End If
For Each oRowEnablingControl As DataRow In oFilteredDatatable.Rows
Dim oENABLE_GUID = oRowEnablingControl.Item("GUID")
Dim oENABLE_CtrlName = oRowEnablingControl.Item("NAME")
For Each oControl As Control In PanelValidatorControl.Controls
If oENABLE_GUID = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid Then
ValidatorLogger.Debug($"Found the Control on panel which needs to be checked [{oENABLE_GUID}]...")
'Dim oSqlCommand = IIf(IsDBNull(oRowEnablingControl.Item("SQL_ENABLE_ON_LOAD")), "", oRowEnablingControl.Item("SQL_ENABLE_ON_LOAD"))
'Dim oConID = oRowEnablingControl.Item("SQL_ENABLE_ON_LOAD_CONID")
Dim oConnectionId As Integer = oRowEnablingControl.ItemEx("CONNECTION_ID", 0)
Dim oSqlCommand = oRowEnablingControl.ItemEx("SQL_ENABLE_ON_LOAD", String.Empty)
oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True)
Dim oResult = DatabaseFallback.GetScalarValueWithConnection(oSqlCommand, oConnectionId)
Try
ValidatorLogger.Debug($"Result of Enable SQL [{oResult}]...")
oControl.Enabled = oResult
Catch ex As Exception
ValidatorLogger.Warn($"Error en/disabling control onLoad: [{ex.Message}]")
End Try
End If
Next
Next
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
End Sub
Private Sub Depending_Control_Set_Result(displayboxname As String, sqlCommand As String, sqlConnection As String)
Try
ValidatorLogger.Debug("Setting Values for Control [{0}]", displayboxname)
'Dim oResultTable As DataTable = ClassDatabase.Return_Datatable_ConId(sqlCommand, sqlConnection)
Dim oResultTable As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(sqlCommand, DatabaseType.ECM) With {
.ConnectionId = sqlConnection
})
If Not IsNothing(oResultTable) Then
ValidatorLogger.Debug("Result Table has [{0}] rows", oResultTable.Rows.Count)
ValidatorLogger.Debug("Result Table has [{0}] columns", oResultTable.Columns.Count)
'Ist das Control ein Control was mehrfachwerte enthalten kann
If displayboxname.StartsWith(ClassControlCreator.PREFIX_COMBOBOX) Or displayboxname.StartsWith(ClassControlCreator.PREFIX_LOOKUP) Or displayboxname.StartsWith(ClassControlCreator.PREFIX_TABLE) Then
ValidatorLogger.Debug("Control is Multivalue")
If displayboxname.StartsWith(ClassControlCreator.PREFIX_COMBOBOX) Then
ValidatorLogger.Debug("Filling Combobox with Results")
Dim oCombobox As Windows.Forms.ComboBox = PanelValidatorControl.Controls(displayboxname)
If IsNothing(oCombobox) Then
Exit Sub
End If
ValidatorLogger.Debug("Control exists, setting results.")
oCombobox.DataSource = Nothing
oCombobox.DataSource = oResultTable
oCombobox.DisplayMember = oResultTable.Columns(0).ColumnName
oCombobox.ValueMember = oResultTable.Columns(0).ColumnName
ElseIf displayboxname.StartsWith(ClassControlCreator.PREFIX_LOOKUP) Then
ValidatorLogger.Debug("Filling Lookup Control with Results")
Dim oLookup As LookupControl3 = PanelValidatorControl.Controls(displayboxname)
If IsNothing(oLookup) Then
Exit Sub
End If
ValidatorLogger.Debug("Control exists, setting results.")
oLookup.Properties.DataSource = Nothing
oLookup.Properties.DataSource = oResultTable
Else
'not implemented
ValidatorLogger.Warn("Depending_Control_Set_Result for [{0}] NOT IMPLEMENTED", displayboxname)
End If
Else
If oResultTable.Rows.Count = 1 Then
PanelValidatorControl.Controls(displayboxname).Text = oResultTable.Rows(0).Item(0).ToString
Else
PanelValidatorControl.Controls(displayboxname).Text = "RESULT = resultDT.Rows.Count <> 1"
ValidatorLogger.Info(">> Datatable-SQL: " & sqlCommand)
End If
End If
Else
ValidatorLogger.Warn("Result Table is nothing!")
End If
Catch ex As Exception
ValidatorLogger.Info("Unexpected Ersror in Depending_Control_Set_Result - ERROR: " & ex.Message)
MsgBox("Unexpected error in Depending_Control_Set_Result: " & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
Public Sub OnDTPValueChanged(sender As System.Object, e As System.EventArgs)
Dim dtp As DateTimePicker = sender
If _Indexe_Loaded = True Then
If dtp.Name = last_control.Name Then
' Abschluss()
Else
SendKeys.Send("{TAB}")
_ControlHandleStarted = True
End If
End If
End Sub
Private Function CheckValueExists(ByVal control As Control)
Try
For Each dr As DataRow In DTVWCONTROL_INDEX.Rows
If dr.Item("PROFIL_ID") = CURRENT_ProfilGUID And dr.Item("CTRL_NAME") = control.Name Then
Dim check = dr.Item("SQL_UEBERPRUEFUNG")
If IsDBNull(check) Then
ValidatorLogger.Debug("SQL Check is not configured!")
Return True
End If
If check.ToString.Length > 0 And dr.Item("INDEX_NAME") <> "DD PM-ONLY FOR DISPLAY" Then
Dim cs As String = DatabaseFallback.GetConnectionString(dr.Item("CONNECTION_ID"))
If allgFunk.CheckValue_Exists(dr.Item("SQL_UEBERPRUEFUNG"), "@Eingabe", control.Text, dr.Item("TYP"), cs, CURRENT_ProfilGUID) = True Then
Return True
Else
errormessage = "the input-value '" & control.Text & "' is not existing in database!"
My.Settings.Save()
Return False
End If
Else
Return True
End If
End If
Next
Catch ex As Exception
ValidatorLogger.Error(ex)
ValidatorLogger.Info("Unexpected error in CheckValueExists:" & ex.Message)
Return False
End Try
End Function
Public Function IsProcessRunning(name As String) As Boolean
'here we're going to get a list of all running processes on
'the computer
For Each Process As Process In Process.GetProcesses()
If Process.ProcessName.StartsWith(name) Then
'process found so it's running so return true
Return True
End If
Next
'process not found, return false
Return False
End Function
Function Get_Next_GUID() As Integer
Try
ValidatorLogger.Debug("Get_Next_GUID...")
Dim oNewGUID As Integer
Dim oBIT As Integer = 0
If PROFIL_sortbynewest = True Then
oBIT = 1
End If
Dim oSQL = $"EXEC PRPM_GET_NEXT_DOC_INFO {CURRENT_ProfilGUID},{CURRENT_DOC_ID},{USER_ID}"
Dim oDT As DataTable = DatabaseFallback.GetDatatableECM(oSQL)
CURRENT_DOC_ID = 0
CURRENT_DOC_GUID = 0
If oDT.Rows.Count > 0 Then
Try
oNewGUID = oDT.Rows(0).Item(0)
Catch ex As Exception
ValidatorLogger.Warn($">> Attention: in GetNextGUID - Could not get the next GUID - SQL [{oSQL}]")
ValidatorLogger.Warn($"ERRORMESSAGE [{ex.Message}]")
End Try
Try
CURRENT_DOC_ID = oDT.Rows(0).Item(1)
ValidatorLogger.Debug($"Get_Next_GUID: CURRENT_DOC_ID [{CURRENT_DOC_ID}]...")
Catch ex As Exception
ValidatorLogger.Warn($">> Attention: in GetNextGUID - Could not get the next DocID - SQL [{oSQL}]")
ValidatorLogger.Warn($"ERRORMESSAGE [{ex.Message}]")
End Try
Try
Amount_Docs2Validate = oDT.Rows(0).Item(2)
ValidatorLogger.Debug($"Get_Next_GUID: Amount_Docs2Validate [{Amount_Docs2Validate}]...")
Catch ex As Exception
Amount_Docs2Validate = 0
ValidatorLogger.Warn("Amount_Docs2Validate Error: " & ex.Message)
End Try
Else
ValidatorLogger.Info($">> Attention: GetNextGUID - Could not get the next GUID - SQL [{oSQL}]")
oNewGUID = 0
Return oNewGUID
End If
'newGUID = ClassDatabase.Execute_Scalar(oSQL, CONNECTION_STRING, True)
WMDocPathWindows = ""
CURRENT_DOC_PATH = ""
CURRENT_WMFILE = Nothing
If oNewGUID > 0 Then
ValidatorLogger.Debug("newGUID: " & oNewGUID.ToString)
ElseIf oNewGUID <> 0 Then
ValidatorLogger.Info(" >> Attention: in GetNextGUID - Could not get a GUID(2)")
oNewGUID = 0
End If
Return oNewGUID
Catch ex As Exception
ValidatorLogger.Error(ex)
oErrMsgMissingInput = "Unexpected error in Get_Next_GUID: " & ex.Message
ValidatorLogger.Info(">> Unexpected error in Get_Next_GUID:: " & ex.Message, True)
Return 0
End Try
End Function
Private Function CreateWMObject() As String
ValidatorLogger.Debug($"in GetWMDocFileString...'")
Dim oWMOwnPath As String
If WM_AHWF_docPath <> String.Empty Then
oWMOwnPath = WM_AHWF_docPath
WMDocPathWindows = oWMOwnPath
Else
oWMOwnPath = WMDocPathWindows.Replace(WMSUFFIX, "")
End If
ValidatorLogger.Debug($"oWMOwnPath: {oWMOwnPath}")
Try
Dim oNormalizedPath = WINDREAM_MOD.GetNormalizedPath(oWMOwnPath, 1)
CURRENT_WMFILE = WINDREAM_MOD.Session.GetWMObjectByPath(WMEntity.WMEntityDocument, oNormalizedPath)
ValidatorLogger.Debug("CURRENT_WMFILE: [{0}]", CURRENT_WMFILE)
Return True
Catch ex As Exception
Dim _err1 As Boolean = False
ValidatorLogger.Error(ex)
ValidatorLogger.Info("Unexpected error creating WMObject(1) in GetWMDocFileString: " & ex.Message)
ValidatorLogger.Info("Error Number: " & Err.Number.ToString)
errormessage = $"Could not create a WMObject(1) for [{oWMOwnPath}]!"
frmError.ShowDialog()
Return False
End Try
End Function
Private Function GetDocPathWindows(_CheckStandard As Integer)
Try
If ActiveWorkflowType = ConstAHWorkflow_BlindFile Then
WMDocPathWindows = WM_AHWF_docPath
CURRENT_DOC_PATH = WM_AHWF_docPath
Return True
End If
Dim oResult As String
WMDocPathWindows = String.Empty
If OPERATION_MODE_FS <> ClassConstants.OpModeFS_ZF Then
If File.Exists(oResult) = False Then
Dim oSQL = $"SELECT dbo.FNPM_GET_FILEPATH ({CURRENT_DOC_GUID},{_CheckStandard})"
oResult = DatabaseFallback.GetScalarValueECM(oSQL)
ValidatorLogger.Debug($"Checking file 0 [{oResult}] exists?...")
DocPathWindows = oResult
ValidatorLogger.Info($"GetWMDocPathWindows returned false [{oResult}] - trying with standard again...")
oSQL = $"SELECT [dbo].[FNPM_GET_FILEPATH] ({CURRENT_DOC_GUID},1)"
oResult = DatabaseFallback.GetScalarValueECM(oSQL)
ValidatorLogger.Debug($"Checking file 1[{oResult}] exists?...")
If File.Exists(oResult) = False Then
ValidatorLogger.Info($"GetWMDocPathWindows FileExists2 also returned false [{oResult}]!")
DocPathWindows = oResult
ValidatorLogger.Warn($"GetDocPathWindows: File [{oResult}] not existing!")
Return False
End If
End If
Else
oResult = ClassConstants.OpModeFS_ZF
ValidatorLogger.Debug($"GetDocPathWindows: Filestore is {ClassConstants.OpModeFS_ZF}")
End If
WMDocPathWindows = oResult
CURRENT_DOC_PATH = WMDocPathWindows
ValidatorLogger.Info($"GetWMDocPathWindows CURRENT_DOC_PATH: {CURRENT_DOC_PATH}")
Return True
Catch ex As Exception
WMDocPathWindows = ""
CURRENT_DOC_PATH = ""
errormessage = $"Unexpected error in GetDocPathWindows: [{ex.Message}]!"
frmError.ShowDialog()
Return False
End Try
End Function
Sub Load_IDB_DOC_DATA()
Try
Dim oSQl As String = IDB_DOC_DATA_SQL
oSQl = oSQl.Replace("@DOC_GUID", CURRENT_DOC_GUID)
oSQl = oSQl.Replace("@DOC_ID", CURRENT_DOC_ID)
oSQl = oSQl.Replace("@DocID", CURRENT_DOC_ID)
ValidatorLogger.Debug($"Load_IDB_DOC_DATA SQL: {oSQl}")
IDB_DT_DOC_DATA = DatabaseFallback.GetDatatableECM(oSQl)
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
End Sub
Sub Load_Next_Document(first As Boolean)
CURRENT_WMFILE = Nothing
activate_controls(False)
oErrMsgMissingInput = ""
WMDocPathWindows = ""
Override = False
OverrideAll = False
'Me.lblerror.Visible = False
_Indexe_Loaded = False
ValidatorLogger.Debug("In Load_Next_Document")
Try
If first = True Then
ValidatorLogger.Debug("First Document")
CURRENT_WMFILE = Nothing
Else
ValidatorLogger.Debug("Following Document ")
End If
' Controls nicht beim ersten Laden leeren
If first = False Then
Clear_all_Input()
End If
'Select Case navtype
' Case "next"
' Case "previous"
' Case "first"
' Case "last"
'End Select
ValidatorLogger.Debug($"CURRENT_JUMP_DOC_GUID: {CURRENT_JUMP_DOC_GUID}'")
If CURRENT_JUMP_DOC_GUID = 0 Then
CURRENT_DOC_GUID = Get_Next_GUID()
ValidatorLogger.Debug($"CURRENT_JUMP_DOC_GUID = 0 ## NEW CURRENT_DOC_GUID: {CURRENT_DOC_GUID}'")
ElseIf first = False Then
CURRENT_DOC_GUID = 0
End If
ValidatorLogger.Info("LoadNextDocument - Dokument-GUID: '" & CURRENT_DOC_GUID.ToString & "'")
If CURRENT_DOC_GUID > 0 Then
If (OPERATION_MODE_FS = ClassConstants.OpModeFS_PWM Or OPERATION_MODE_FS = ClassConstants.OpModeFS_IDBWM) And GetDocPathWindows(0) = False Then
SetStatusLabel($"File not accessible: {DocPathWindows}", "DarkOrange")
End If
If IDB_ACTIVE = False Then
If CreateWMObject() = False Then
Exit Sub
End If
Else
Load_IDB_DOC_DATA()
If IsNothing(IDB_DT_DOC_DATA) Then
ValidatorLogger.Warn("ATTENTION: IDB-Data is nothing. Check the IDB_DOC_DATA_SQL Variable Source")
Exit Sub
Else
If IDB_DT_DOC_DATA.Rows.Count = 1 Then
ValidatorLogger.Debug("Got one IDB DocData Result")
End If
End If
End If
' >> >> >> >> >> >>##### Das Dokument in Bearbeitung nehmen ###########################
PRTF_PROFILE_FILES_WORK("InWork")
'Dim sql = $"UPDATE TBPM_PROFILE_FILES Set IN_WORK = 1, IN_WORK_WHEN = GETDATE(), WORK_USER = '{USER_USERNAME}' WHERE GUID = {CURRENT_DOC_GUID}"
'DatabaseFallback.ExecuteNonQueryECM(sql)
' ############ Infos eintragen #################
' txtDateipfad.Text = Document_Path
'Dim omsg = $"{ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO("remainingOps")}: {Amount_Docs2Validate}"
Dim omsg = String.Format(S.Verbleibende_Vorgänge___0_, Amount_Docs2Validate)
If Amount_Docs2Validate > 0 Then
bsiInformation.Caption = omsg
Else
bsiInformation.Caption = "Could not get the amount of remaining docs!"
End If
bsiDocID.Caption = "Document-ID: " & CURRENT_DOC_ID & " - GUID: " & CURRENT_DOC_GUID
ValidatorLogger.Debug("AllDocInfo created...")
If IDB_ACTIVE = False Then
oErrMsgMissingInput = Windream_get_Doc_info()
Else
' oErrorMessage = IDB_GetDocInfo()
End If
If oErrMsgMissingInput = "" Then
If WMDocPathWindows <> String.Empty Or OPERATION_MODE_FS = ClassConstants.OpModeFS_ZF Then
ValidatorLogger.Debug($"Operationmode is {ClassConstants.OpModeFS_ZF}! Initializing Viewer ...")
LoadDocument_DDViewer()
ValidatorLogger.Debug("Viewer loaded!!")
If Current_Document.Extension <> "pdf" Then
bbtniAnnotation.Visibility = BarItemVisibility.Never
End If
End If
FillIndexValues(first)
For Each oControl As Control In PanelValidatorControl.Controls
LoadSQLData(oControl, DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid)
Next
ValidatorLogger.Debug("Indexmask loaded")
'Nun loggen das das Profil geladen wurde
If PROFIL_LOGINDEX <> "" Then
Dim oLogString = $"PMProfile loaded: [{CURRENT_ProfilGUID}-{CURRENT_ProfilName}]{PMDelimiter}{USER_USERNAME}{PMDelimiter}{Now.ToString}"
If IDB_ACTIVE = False Then
WMIndexVectofield(oLogString, PROFIL_LOGINDEX)
Else
oLogString = $"PMProfile loaded: [{CURRENT_ProfilGUID}-{CURRENT_ProfilName}]"
IDBData.SetVariableValue(PROFIL_LOGINDEX, oLogString)
End If
End If
activate_controls(True)
Else
errormessage = oErrMsgMissingInput
frmError.ShowDialog()
End If
Else
If oErrMsgMissingInput <> "" Then
errormessage = oErrMsgMissingInput
frmError.ShowDialog()
Else
Dim oMsg = S.Ende_des_Profils___Keine_weiteren_Vorgänge
ValidatorLogger.Info(oMsg)
ValidatorLogger.Debug(oMsg)
activate_controls(True)
ValidatorLogger.Debug("Closing the form...")
Me.Close()
End If
End If
Try
Dim oCurrency As String
If PROFIL_CURRENCY_ATTRIBUTE <> "" Then
oCurrency = GetVariableValuefromSource(PROFIL_CURRENCY_ATTRIBUTE, 1, False)
End If
If Not IsNothing(oCurrency) Then
Dim oValueType = oCurrency.GetType.ToString
If IsDBNull(oCurrency) Then
oCurrency = "EUR"
Else
Try
oCurrency = oCurrency.ToString
Catch ex As Exception
ValidatorLogger.Warn($"Unexpected error in Converting oCurreny to string: " & ex.Message)
oCurrency = "EUR"
End Try
End If
If oCurrency <> String.Empty Then
If oCurrency.ToString.Length = 2 Then
ValidatorLogger.Debug("oCurrency-Length = 2 - Setting to EUR")
oCurrency = "EUR"
End If
ValidatorLogger.Debug($"oCurrency = {oCurrency}")
For Each oControl As Control In PanelValidatorControl.Controls
Try
Dim oMeta = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata)
If TypeOf oControl Is GridControl Then
Dim oGrid As GridControl = DirectCast(oControl, GridControl)
Dim oControlMeta = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata)
Dim oFilteredDatatable As DataTable = DT_COLUMNS_GRID.Clone()
Dim oExpression = $"CONTROL_ID = {oControlMeta.Guid}"
DT_COLUMNS_GRID.Select(oExpression, "SEQUENCE").CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges)
Dim oCultureInfo As CultureInfo = New CultureInfo("de-DE")
oCultureInfo.NumberFormat.CurrencySymbol = oCurrency
Dim riTextEdit As RepositoryItemTextEdit = New RepositoryItemTextEdit()
riTextEdit.MaskSettings.Configure(Of MaskSettings.Numeric)(Sub(settings)
settings.MaskExpression = "c"
settings.Culture = oCultureInfo
End Sub)
riTextEdit.UseMaskAsDisplayFormat = True 'Optional
oGrid.RepositoryItems.Add(riTextEdit)
Dim oGridView As GridView = DirectCast(oGrid.FocusedView, GridView)
For Each oCol As GridColumn In oGridView.Columns
Dim oColumnData As DataRow = oFilteredDatatable.
Select($"SPALTENNAME = '{oCol.FieldName}'").
FirstOrDefault()
If oColumnData Is Nothing Then
Continue For
End If
Dim oColumnType As String = oColumnData.Item("TYPE_COLUMN")
Select Case oColumnType
Case "CURRENCY"
Console.WriteLine("CurrencyFormatNecessary")
oCol.DisplayFormat.FormatType = FormatType.Custom
oCol.ColumnEdit = riTextEdit
End Select
Next
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
Next
Else
ValidatorLogger.Warn($"oCurrency is String.empty! ")
End If
Else
ValidatorLogger.Warn($"oCurrency is Nothing - Check PROFIL_CURRENCY_ATTRIBUTE! ")
End If
Catch ex As Exception
ValidatorLogger.Warn($"Unexpected error in display format Currency: " & ex.Message)
End Try
Try
Show_WF_Messages(False)
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
ValidatorLogger.Debug("frmValidator: LoadNextDocument finished!")
Catch ex As Exception
ValidatorLogger.Error(ex)
errormessage = "unexpected error in Load_Next_Document:" & ex.Message
My.Settings.Save()
ValidatorLogger.Info("unexpected error in Load_Next_Document: " & ex.Message)
frmError.ShowDialog()
End Try
End Sub
Sub Show_WF_Messages(pShow As Boolean)
Try
If Not Application.OpenForms().OfType(Of frmValidator_Messages).Any Then
Dim oSQLMessage = $"SELECT
CONVERT(VARCHAR(30), A.ADDED_WHEN,20) + ' - ' + B.STRING1 as MSG,A.ImageIndex
FROM
TBTFVALIDATOR_MESSAGE A INNER JOIN
(SELECT * FROM TBDD_GUI_LANGUAGE_PHRASE
WHERE MODULE = 'PM' AND OBJ_NAME = 'frmValidator' AND CAPT_TYPE = 'WF_MESSAGE') B ON A.GUI_LANG_TITLE = B.TITLE
WHERE
A.Active = 1 and (A.DocID = {CURRENT_DOC_ID}) AND B.LANGUAGE = '{USER_LANGUAGE}' ORDER BY A.ADDED_WHEN DESC"
If SQL_WF_MESSAGES <> String.Empty Then
oSQLMessage = SQL_WF_MESSAGES
oSQLMessage = oSQLMessage.Replace("@DocID", CURRENT_DOC_ID)
oSQLMessage = oSQLMessage.Replace("@LANGUAGE", USER_LANGUAGE)
oSQLMessage = oSQLMessage.Replace("@UserID", USER_ID)
oSQLMessage = oSQLMessage.Replace("@UserName", USER_USERNAME)
End If
DTInfoDoc = DatabaseFallback.GetDatatableECM(oSQLMessage)
If DTInfoDoc.Rows.Count > 0 Then
rbnPgGroupHinweise.Visible = True
bchkitmNotes.Checked = CONFIG.Config.NOTES_ONCLICK
If CONFIG.Config.NOTES_ONCLICK = False Or pShow = True Then
Dim ofrmMessage As New frmValidator_Messages(DTInfoDoc)
frmMessages = ofrmMessage
ofrmMessage.Show()
End If
Else
rbnPgGroupHinweise.Visible = False
End If
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
End Sub
Sub LoadDocument_DDViewer()
Try
Dim oDocument As DocumentResultList.Document = Nothing
' Load DocumentInfo
oDocument = DD_Documentloader.Load(CURRENT_DOC_ID, WMDocPathWindows)
If oDocument Is Nothing Then
Exit Sub
End If
Current_Document = oDocument
Catch ex As Exception
ValidatorLogger.Error(ex)
Exit Sub
End Try
If ActiveWorkflowType = ConstAHWorkflow_BlindFile Or PROFILE_SHOW_DOCUMENT = False Then
SplitContainer1.Panel2Collapsed = True
DocumentViewerValidator.Visible = False
RibbonPageFile.Visible = False
Exit Sub
Else
DocumentViewerValidator.Visible = True
End If
' Load Document in Document Viewer
Dim oFileName = $"{CURRENT_DOC_ID}.{Current_Document.Extension}"
DocumentViewerValidator.LoadFile(oFileName, New MemoryStream(Current_Document.Contents))
DocumentViewerValidator.RightOnlyView(USER_RIGHT_VIEW_ONLY) 'war auskommentiert.....WARUM?
If USER_RIGHT_VIEW_ONLY = True Then
RibbonPageFile.Visible = False
Else
RibbonPageFile.Visible = True
End If
SplitContainer1.Panel2Collapsed = False
End Sub
Sub activate_controls(pStatus As Boolean)
Try
ValidatorLogger.Debug("Sub activate_controls - status = " + pStatus.ToString)
Me.PanelValidatorControl.Enabled = pStatus
Me.btnSave.Enabled = pStatus
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
End Sub
Private Function Windream_get_Doc_info()
Try
'If CultureInfo.CurrentUICulture.ThreeLetterISOLanguageName = "eng" Then
' My.Settings.vIDX_DMS_ERSTELLT = "DMS Created"
' dmsCreated = "DMS Created"
' My.Settings.vIDX_DMS_ERSTELLT_Zeit = "DMS Created Time"
' dmscreatedtime = "DMS Created Time"
' My.Settings.Save()
'Else
'End If
Try
ValidatorLogger.Debug($"GetVariableValue [{INDEX_DMS_ERSTELLT}]...")
CURRENT_DOC_CREATION_DATE = CURRENT_WMFILE.GetVariableValue(INDEX_DMS_ERSTELLT)
Catch ex As Exception
ValidatorLogger.Error(ex)
If ex.Message.Contains("Variable: " & INDEX_DMS_ERSTELLT & " not found!") Then
ValidatorLogger.Info("1. Ausnahme in Windream_get_Doc_info: Variable: " & INDEX_DMS_ERSTELLT & " not found", True)
ValidatorLogger.Info("1. Ausnahme-Fehler: " & ex.Message)
If INDEX_DMS_ERSTELLT = "DMS Created" Then
INDEX_DMS_ERSTELLT = "DMS erstellt"
INDEX_DMS_ERSTELLT_ZEIT = "DMS erstellt (Zeit)"
CONFIG.Config.IndexDmsErstellt = INDEX_DMS_ERSTELLT
CONFIG.Config.IndexDmsErstelltZeit = INDEX_DMS_ERSTELLT_ZEIT
CONFIG.Save()
'SaveMySettingsValue("IDX_DMS_ERSTELLT_ZEIT", "DMS erstellt (Zeit)")
'SaveMySettingsValue("IDX_DMS_ERSTELLT", "DMS erstellt")
Else
INDEX_DMS_ERSTELLT = "DMS Created"
INDEX_DMS_ERSTELLT_ZEIT = "DMS Created Time"
CONFIG.Config.IndexDmsErstellt = INDEX_DMS_ERSTELLT
CONFIG.Config.IndexDmsErstelltZeit = INDEX_DMS_ERSTELLT_ZEIT
'SaveMySettingsValue("IDX_DMS_ERSTELLT", "DMS Created")
'SaveMySettingsValue("IDX_DMS_ERSTELLT_ZEIT", "DMS erstellt Time")
End If
CURRENT_DOC_CREATION_DATE = CURRENT_WMFILE.GetVariableValue(INDEX_DMS_ERSTELLT)
Else
ValidatorLogger.Info("error in Windream_get_Doc_info 1: " & ex.Message)
Return "error in Windream_get_Doc_info 1: " & ex.Message
End If
End Try
ValidatorLogger.Debug("DMS-Erstellt aus WD: " & CURRENT_DOC_CREATION_DATE)
Try
ValidatorLogger.Debug($"GetVariableValue [{INDEX_DMS_ERSTELLT_ZEIT}]...")
CURRENT_DOC_CREATION_TIME = CURRENT_WMFILE.GetVariableValue(INDEX_DMS_ERSTELLT_ZEIT)
Catch ex As Exception
If ex.Message.Contains("Variable: " & INDEX_DMS_ERSTELLT_ZEIT & " not found!") Then
ValidatorLogger.Info("1. Ausnahme in Windream_get_Doc_info: Variable: " & INDEX_DMS_ERSTELLT_ZEIT & " not found", True)
If INDEX_DMS_ERSTELLT = "DMS Created" Then
INDEX_DMS_ERSTELLT = "DMS erstellt"
INDEX_DMS_ERSTELLT_ZEIT = "DMS erstellt (Zeit)"
CONFIG.Config.IndexDmsErstellt = INDEX_DMS_ERSTELLT
CONFIG.Config.IndexDmsErstelltZeit = INDEX_DMS_ERSTELLT_ZEIT
CONFIG.Save()
'SaveMySettingsValue("IDX_DMS_ERSTELLT_ZEIT", "DMS erstellt (Zeit)")
Else
INDEX_DMS_ERSTELLT = "DMS Created"
INDEX_DMS_ERSTELLT_ZEIT = "DMS Created Time"
CONFIG.Config.IndexDmsErstellt = INDEX_DMS_ERSTELLT
CONFIG.Config.IndexDmsErstelltZeit = INDEX_DMS_ERSTELLT_ZEIT
CONFIG.Save()
'SaveMySettingsValue("IDX_DMS_ERSTELLT", "DMS Created")
'SaveMySettingsValue("IDX_DMS_ERSTELLT_ZEIT", "DMS Created Time")
End If
ValidatorLogger.Debug($"GetVariableValue (2) [{INDEX_DMS_ERSTELLT_ZEIT}]...")
CURRENT_DOC_CREATION_TIME = CURRENT_WMFILE.GetVariableValue(INDEX_DMS_ERSTELLT_ZEIT)
Else
ValidatorLogger.Error(ex)
ValidatorLogger.Info("error in Windream_get_Doc_info 3: " & ex.Message)
Return "error in Windream_get_Doc_info 3: " & ex.Message
End If
End Try
ValidatorLogger.Debug("DMSErstelltZeit aus WD: " & CURRENT_DOC_CREATION_TIME)
If CURRENT_DOC_CREATION_TIME.Length > 11 Then
CURRENT_DOC_CREATION_DATE = CURRENT_DOC_CREATION_DATE & " " & CURRENT_DOC_CREATION_TIME.Substring(10)
Else
CURRENT_DOC_CREATION_DATE = CURRENT_DOC_CREATION_DATE & " " & CURRENT_DOC_CREATION_TIME
End If
Return ""
Catch ex As Exception
ValidatorLogger.Error(ex)
ValidatorLogger.Info("error in Windream_get_Doc_info (GENERELL): " & ex.Message)
Return "error in Windream_get_Doc_info (GENERELL): " & ex.Message
End Try
End Function
Private Function Return_VektorArray(ByVal oDocument As WMObject, vktIndexName As String, NIIndexe As Object, CheckDuplikat As Boolean, vType As Object)
Dim ValueArray()
' Try
Dim missing As Boolean = False
Dim Anzahl As Integer = 0
'Jeden Wert des Vektorfeldes durchlaufen
Dim wertWD = oDocument.GetVariableValue(vktIndexName)
If wertWD Is Nothing = False Then
'Nochmals prüfen ob wirklich Array
If wertWD.GetType.ToString.Contains("System.Object") Then
'Keine Duplikatprüfung also einfach neues Array füllen
If CheckDuplikat = False Then
For Each value As Object In wertWD
'Das Array anpassen
ReDim Preserve ValueArray(Anzahl)
'Den Wert im Array speichern
ValueArray(Anzahl) = ConvertVectorType(vType, value)
Anzahl += 1
Next
'Und jetzt den/die Neuen Wert(e) anfügen
For Each NewValue As Object In NIIndexe
If NewValue Is Nothing = False Then
'Das Array anpassen
ReDim Preserve ValueArray(Anzahl)
'Den Wert im Array speichern
ValueArray(Anzahl) = ConvertVectorType(vType, NewValue)
Anzahl += 1
End If
Next
Else
'Duplikat Prüfung an, also nur anhängen wenn Wert <>
For Each WDValue As Object In wertWD
If WDValue Is Nothing = False Then
'Erst einmal die ALten Werte schreiben
ReDim Preserve ValueArray(Anzahl)
'Den Wert im Array speichern
ValueArray(Anzahl) = ConvertVectorType(vType, WDValue)
Anzahl += 1
End If
Next
'Jetzt die Neuen Werte auf Duplikate überprüfen
For Each NewValue As Object In NIIndexe
If NewValue Is Nothing = False Then
If ValueArray.Contains(NewValue) = False Then
'Das Array anpassen
ReDim Preserve ValueArray(Anzahl)
'Den Wert im Array speichern
ValueArray(Anzahl) = ConvertVectorType(vType, NewValue)
Anzahl += 1
Else
End If
End If
Next
End If
End If
Else
'Den/die Neuen Wert(e) anfügen
For Each NewValue As Object In NIIndexe
If NewValue Is Nothing = False Then
If CheckDuplikat = True Then
If ValueArray Is Nothing = False Then
If ValueArray.Contains(NewValue) = False Then
'Das Array anpassen
ReDim Preserve ValueArray(Anzahl)
'Den Wert im Array speichern
ValueArray(Anzahl) = ConvertVectorType(vType, NewValue)
Anzahl += 1
Else
End If
Else 'Dererste Wert, also hinzufügen
'Das Array anpassen
ReDim Preserve ValueArray(Anzahl)
'Den Wert im Array speichern
ValueArray(Anzahl) = ConvertVectorType(vType, NewValue)
Anzahl += 1
End If
Else
'Das Array anpassen
ReDim Preserve ValueArray(Anzahl)
'Den Wert im Array speichern
ValueArray(Anzahl) = ConvertVectorType(vType, NewValue)
Anzahl += 1
End If
End If
Next
End If
Return ValueArray
'Catch ex As Exception
' Return ValueArray
'End Try
End Function
Public Function ConvertVectorType(vType As Object, value As String)
Select Case vType
Case 36865 ' 36865
'Umwandeln in String
Return value
Case 4097 '4097
'Umwandeln in String
Return value
Case 4098 '4098
'Umwandeln in Integer
value = value.Replace(" ", "")
Return CInt(value)
Case 4099 '4099
value = value.
Replace(" ", "").
Replace(".", ",")
'Umwandeln in Double
Return CDbl(value)
Case 4100 '4100
'Umwandeln in Boolean
Return CBool(value)
Case 4101 '4101
'Umwandeln in Date
Return CDate(value)
Case 4107 '4107
Return Convert.ToInt64(value)
Case 4103 '4103
'Umwandeln in Datum Uhrzeit
Return value
Case Else
'Umwandeln in String
Return value
End Select
End Function
Private Function ReturnVektor_IndexValue(VKTBezeichner As String)
Try
Dim value
Dim name = VKTBezeichner.Replace("[%VKT", "")
Dim Sort_Arr() As String
Dim i As Integer = 0
'Jetzt im Vektorfeld des Profils nachsehen ob der WErt bereits vorhanden ist
Dim wertWD = CURRENT_WMFILE.GetVariableValue(PROFIL_VEKTORINDEX)
If wertWD Is Nothing = False Then
'Es wird gegen ein Vektorfeld nachindexiert
If wertWD.GetType.ToString.Contains("System.Object") Then
'es handelt sich um ein Vektorfeld - Zuweisen der Indexwerte des Vektorfeldes zu Array
For Each obj As Object In wertWD
If obj Is Nothing = False Then
ReDim Preserve Sort_Arr(i)
Sort_Arr(i) = obj.ToString()
i += 1
End If
Next
'Das Ergebnis-Array nun Rückwärts sortieren, um die letzte Änderung zu finden
For Each _string As Object In Sort_Arr.Reverse()
Dim DDPM_String As String = _string.ToString()
'
Dim VektorArray() = Split(DDPM_String, PMDelimiter)
If VektorArray(1).ToString.ToLower = name.ToLower Then
value = VektorArray(2)
Exit For
End If
Next
End If
End If
If value Is Nothing Then value = ""
Return value
Catch ex As Exception
ValidatorLogger.Error(ex)
MsgBox("error in ReturnVektor_IndexValue: " & vbNewLine & ex.Message, MsgBoxStyle.Critical, ADDITIONAL_TITLE)
ValidatorLogger.Info("error in ReturnVektor_IndexValue: " & ex.Message)
Return ""
End Try
End Function
Private Function GetVariableValuefromSource(oSourceIndexName As String, Optional oIDBTyp As Integer = 0, Optional FromIDB As Boolean = False) As Object
Try
Dim oValuefromSource
If IDB_ACTIVE = False Then
oValuefromSource = CURRENT_WMFILE.GetVariableValue(oSourceIndexName)
Else
ValidatorLogger.Debug($"GetVariableValuefromSource - IDBCase...")
oValuefromSource = IDBData.GetVariableValue(oSourceIndexName, oIDBTyp, FromIDB)
End If
Return oValuefromSource
Catch ex As Exception
ValidatorLogger.Error(ex)
Return Nothing
End Try
End Function
Sub FillIndexValues(first As Boolean, Optional SingleAttribute As String = "")
If LOG_PERF Then PerformanceLogger.Info("FillIndexValues")
Dim oControlType As String
Dim oIndexName As String
Dim oControName As String
Dim oIDBOverride As Boolean = False
Try
If DTVWCONTROL_INDEX.Rows.Count > 0 Then
Dim oCount As Integer = 0
For Each oControl As Control In Me.PanelValidatorControl.Controls
'If SingleAttribute <> "" Then
' oIDBOverride = True
' If SingleAttribute <> oControl.Name Then
' Continue For
' End If
'End If
Dim oValueFromSource
Dim oFormattedValue As String = ""
Dim oControlId = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid
Dim oControlRow = (From form In DTVWCONTROL_INDEX.AsEnumerable()
Select form
Where form.Item("GUID") = oControlId).Single()
Dim oTyp As String = oControlRow.Item("CTRL_TYPE")
Dim oIDBTyp As String
If IDB_ACTIVE Then
oIDBTyp = oControlRow.Item("IDB_TYP")
End If
Dim oSourceIndexName As String = oControlRow.Item("INDEX_NAME")
' Wenn kein defaultValue existiert, leeren String setzen
Dim oDefaultValue As String = ObjectEx.NotNull(oControlRow.Item("DEFAULT_VALUE"), String.Empty)
oIndexName = oSourceIndexName
oControName = oControl.Name
Dim oLoadIndex As Boolean = oControlRow.Item("LOAD_IDX_VALUE")
ValidatorLogger.Debug("INDEX: " & oSourceIndexName & " - CONTROLNAME: " & oControl.Name & " - LOAD IDXVALUES: " & oLoadIndex.ToString)
Select Case True
Case oControl.GetType = GetType(DevExpress.XtraEditors.TextEdit) Or oControl.GetType = GetType(MemoEdit)
If LOG_PERF Then PerformanceLogger.Info("FillIndexValues/TextEdit")
Try
oControlType = "Textbox"
Dim oTextBox As DevExpress.XtraEditors.TextEdit = oControl
Dim oMeta As ClassControlCreator.ControlMetadata = oTextBox.Tag
If oSourceIndexName = "" Then
MsgBox("Attention wrong configuration:" & vbNewLine & "for control " & oControl.Name & " no INDEX configured!" & vbNewLine & "Bitte prüfen Sie den Formulardesigner!", MsgBoxStyle.Critical)
Exit For
End If
If oSourceIndexName Is Nothing = False Then
If oLoadIndex = False Or oSourceIndexName = "DD PM-ONLY FOR DISPLAY" Then
' Wenn kein Index exisitiert, defaultValue laden
oTextBox.EditValue = oDefaultValue
ValidatorLogger.Debug("Indexwert soll nicht geladen werden.")
Exit Select
End If
If oSourceIndexName.StartsWith("[%VKT") And PROFIL_VEKTORINDEX <> "" Then
oValueFromSource = ReturnVektor_IndexValue(oSourceIndexName)
Else
oValueFromSource = GetVariableValuefromSource(oSourceIndexName, oIDBTyp, oIDBOverride)
If oValueFromSource Is Nothing Then
oValueFromSource = ""
Else
If oValueFromSource.ToString = "System.Object[]" Then
ValidatorLogger.Debug("TextBox with VektorField: " & oSourceIndexName)
Try
ValidatorLogger.Debug($"Length of Vektorarray: {oValueFromSource.length}")
Catch ex As Exception
ValidatorLogger.Info($"Error in gettin the lenth of vektorfield {oSourceIndexName} - {ex.Message}")
End Try
If oValueFromSource.length = 1 Then
oValueFromSource = oValueFromSource(0)
Else '
ValidatorLogger.Info(" >> Vectorfield " & oSourceIndexName & "' contains more then one value - First value will be used")
oValueFromSource = oValueFromSource(0)
End If
ValidatorLogger.Debug($"wertWD has been saved...")
End If
End If
End If
ValidatorLogger.Debug("Value from Source: [{0}]", oValueFromSource)
Try
'Dim oFormatString As String = oControlRow.ItemEx("CTRL_FORMAT_STRING", "")
'oFormattedValue = ClassFormat.GetFormattedValue(oControl.Name, oValueFromSource, oFormatString)
'If Not IsNothing(oFormattedValue) And oFormattedValue <> String.Empty Then
' oTextBox.EditValue = ObjectEx.NotNull(oFormattedValue, oDefaultValue)
'Else
' oTextBox.EditValue = ObjectEx.NotNull(oValueFromSource, oDefaultValue)
'End If
oTextBox.EditValue = ObjectEx.NotNull(oValueFromSource, oDefaultValue)
Try
Dim oBackColor As String = oControlRow.Item("CTRL_BACKCOLOR_IF")
If oBackColor <> String.Empty Then
Dim oSPlit = Split(oBackColor, ";")
If oSPlit.Length = 3 Then
Dim oValueConverted
If IsNumeric(oValueFromSource) Then
oValueConverted = oValueFromSource.ToString.Replace(",", ".")
Else
oValueConverted = oValueFromSource
End If
Dim oExpression = $"{oValueConverted} {oSPlit(0)}"
Dim oSQl = $"SELECT CASE WHEN {oExpression} THEN CONVERT(BIT,1) ELSE CONVERT(BIT,0) END "
Dim oColorName = IIf(DatabaseECM.GetScalarValue(oSQl), oSPlit(1), oSPlit(2))
oControl.BackColor = Color.FromName(oColorName)
oMeta.BackColor = oControl.BackColor
oControl.ForeColor = GraphicsEx.GetContrastedColor(oControl.BackColor)
End If
End If
Catch ex As Exception
ValidatorLogger.Warn($"Unexpected error in Set Backcolor [{oControl.Name}]: {ex.Message}")
ValidatorLogger.Error(ex)
End Try
ControlCreator.GridTables_HandleControlValueChange(PanelValidatorControl, DT_COLUMNS_GRID_WITH_SQL_WITH_CTRL_PLACEHOLDER)
Catch ex As Exception
ValidatorLogger.Info("Error While converting defaultValue [" & oDefaultValue & "]: " & ex.Message)
oTextBox.EditValue = ""
End Try
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
errormessage = $"Unvorhergesehener Fehler bei FillIndexValues TextBox [{oControl.Name}]:" & vbNewLine & ex.Message & vbNewLine & "Check Logfile"
My.Settings.Save()
frmError.ShowDialog()
ValidatorLogger.Info("Unexpected error in FillIndexValuesTextBox: " & ex.Message, True)
ValidatorLogger.Info(">> Controltype: " & oControlType)
ValidatorLogger.Info(">> Indexname windream: " & oIndexName)
Exit Sub
End Try
Case oControl.GetType = GetType(Windows.Forms.ComboBox)
If LOG_PERF Then PerformanceLogger.Info("FillIndexValues/ComboBox")
oControlType = "ComboBox"
Dim oMyCombobox As Windows.Forms.ComboBox = oControl
Try
If oSourceIndexName = "" Then
MsgBox("Attention wrong configuration:" & vbNewLine & "for control " & oControl.Name & " no INDEX configured!" & vbNewLine & "Bitte prüfen Sie den Formulardesigner!", MsgBoxStyle.Critical)
Exit For
End If
If oSourceIndexName Is Nothing = False Then
If oLoadIndex = False Or oSourceIndexName = "DD PM-ONLY FOR DISPLAY" Then
If oDefaultValue = String.Empty Then
oMyCombobox.SelectedIndex = -1
Else
oMyCombobox.Text = oDefaultValue
End If
ValidatorLogger.Debug($" oMyComboBox {oMyCombobox.Name}: Indexwert soll nicht geladen werden.")
Exit Select
End If
If oSourceIndexName.StartsWith("[%VKT") And PROFIL_VEKTORINDEX <> "" Then
oValueFromSource = ReturnVektor_IndexValue(oSourceIndexName)
Else
oValueFromSource = GetVariableValuefromSource(oSourceIndexName, oIDBTyp, oIDBOverride)
End If
If oValueFromSource Is Nothing Then
ValidatorLogger.Debug($"oMyComboBox {oMyCombobox.Name} - Indexvalue from index {oSourceIndexName}: Nothing")
If oDefaultValue = String.Empty Then
ValidatorLogger.Debug($"oMyComboBox {oMyCombobox.Name}-defaultValue wurde nicht gefunden")
oMyCombobox.SelectedIndex = -1
Else
ValidatorLogger.Debug($"oMyComboBox {oMyCombobox.Name}-defaultValue wird geladen")
oMyCombobox.Text = oDefaultValue
'cmb.SelectedIndex = cmb.FindStringExact(defaultValue)
End If
Else
If oValueFromSource.ToString = "System.Object[]" Then
ValidatorLogger.Debug($"oMyComboBox {oMyCombobox.Name} - Combobox with VektorField: " & oSourceIndexName)
Try
ValidatorLogger.Debug($"Length of Vektorarray: {oValueFromSource.length}")
Catch ex As Exception
ValidatorLogger.Info($"Error in gettin the length of vektorfield {oSourceIndexName} - {ex.Message}")
End Try
If oValueFromSource.length = 1 Then
oValueFromSource = oValueFromSource(0)
Else '
ValidatorLogger.Info(" >> Vectorfield " & oSourceIndexName & "' contains more then one value - First value will be used")
oValueFromSource = oValueFromSource(0)
End If
ValidatorLogger.Debug($"wertWD has been saved...")
Else
End If
ValidatorLogger.Debug($"Indexwert from Index {oSourceIndexName}: {oValueFromSource}")
ValidatorLogger.Debug($"Items in Combobox: {oMyCombobox.Items.Count}")
If oMyCombobox.Items.Count = 0 Then
' If LogErrorsOnly = False Then Logger.Info($"Index Wert wurde gesetzt")
oMyCombobox.Text = oValueFromSource
Else
ValidatorLogger.Debug($"Index Wert [{oValueFromSource}] wurde ausgewählt")
oMyCombobox.SelectedIndex = oMyCombobox.FindStringExact(oValueFromSource)
ValidatorLogger.Debug($"oMyComboBox {oMyCombobox.Name} .SelectedIndex: {oMyCombobox.SelectedIndex}")
End If
End If
End If
ValidatorLogger.Debug("")
Catch ex As Exception
ValidatorLogger.Error(ex)
ValidatorLogger.Info(">> Unexpected error in FillIndexValues(Combobox: " & oMyCombobox.Name & "): " & ex.Message, True)
ValidatorLogger.Info(">> Controltype: " & oControlType)
ValidatorLogger.Info(">> Indexname windream: " & oIndexName)
errormessage = "Unexpected error in FillIndexValues(Combobox: " & oMyCombobox.Name & "): " & vbNewLine & ex.Message & vbNewLine & "Check Logfile"
My.Settings.Save()
frmError.ShowDialog()
End Try
Case oControl.GetType = GetType(GridControl)
If LOG_PERF Then PerformanceLogger.Info("FillIndexValues/GridControl")
oControlType = "DevExpress.XtraGrid.GridControl"
Dim oMyGridControl As GridControl = oControl
Dim oDTColumnsPerDevExGrid As DataTable = DT_COLUMNS_GRID.Clone()
Try
If oSourceIndexName = "" Then
MsgBox("Attention wrong configuration:" & vbNewLine & "for control " & oControl.Name & " no INDEX configured!" & vbNewLine & "Bitte prüfen Sie den Formulardesigner!", MsgBoxStyle.Critical, ADDITIONAL_TITLE)
Exit For
End If
If oSourceIndexName Is Nothing = False Then
If oLoadIndex = False Then
ValidatorLogger.Debug("Indexwert soll nicht geladen werden.")
Exit Select
End If
ValidatorLogger.Debug($"getting Value for Attribute [{oSourceIndexName}] - oIDBTyp [{oIDBTyp}] - oIDBOverride [{oIDBOverride}]...")
' Dim wertWD = CURRENT_WMFILE.GetVariableValue(oSourceIndexName)
oValueFromSource = GetVariableValuefromSource(oSourceIndexName, oIDBTyp, oIDBOverride)
If oValueFromSource Is Nothing = False Then
Dim oValueType = oValueFromSource.GetType.ToString
ValidatorLogger.Debug($"oValueType is [{oValueType}]!")
'Es wird gegen ein Vektorfeld nachindexiert
If oValueType.Contains("System.Object") Or oValueType = "System.Data.DataTable" Or oValueType = "System.String" Then
Select Case oTyp
'Tabellendarstellung
Case "TABLE"
Dim oExpression = $"CONTROL_ID = {oControlId}"
DT_COLUMNS_GRID.Select(oExpression, "SEQUENCE").CopyToDataTable(oDTColumnsPerDevExGrid, LoadOption.PreserveChanges)
Dim oColValuesfromSource As String()
ValidatorLogger.Debug($"DevExpressGrid: {oDTColumnsPerDevExGrid.Rows.Count} Columns configured for control {oControlId}.")
If oDTColumnsPerDevExGrid.Rows.Count >= 1 Then
Dim oDataSource As DataTable = oMyGridControl.DataSource
oDataSource.Rows.Clear()
If IDB_ACTIVE = False Then
ValidatorLogger.Debug("ValueFromSource contains {0} items", oValueFromSource)
For Each Zeile As Object In oValueFromSource
ValidatorLogger.Debug($"vektorrow Value {Zeile.ToString}...")
oColValuesfromSource = Split(Zeile, PMDelimiter)
Dim oNewRow = oDataSource.NewRow()
ValidatorLogger.Debug("Creating new row..")
For index = 0 To oDTColumnsPerDevExGrid.Rows.Count - 1
ValidatorLogger.Debug("Column Index {0}", index)
If oColValuesfromSource.Length > index Then
ValidatorLogger.Debug("Value: {0}", oColValuesfromSource(index))
oNewRow.Item(index) = oColValuesfromSource(index)
Else
ValidatorLogger.Debug("Value: String.Empty")
oNewRow.Item(index) = String.Empty
End If
Next
ValidatorLogger.Debug("Adding row to grid..")
oDataSource.Rows.Add(oNewRow)
Next
Else
If oValueType = "System.String" Then
ValidatorLogger.Debug($"IDB Fill Grid [{oControl.Name}] with String")
ValidatorLogger.Debug($"oValueFromSource [{oValueFromSource}] - PMDelimiter[{PMDelimiter}]")
oColValuesfromSource = Split(oValueFromSource.ToString, PMDelimiter)
If oColValuesfromSource.Length > 8 Then
ValidatorLogger.Warn("Fill Grid Error - Max 8 columns can be configured!")
End If
Dim oRowData As New List(Of Object)
For index = 1 To oColValuesfromSource.Length
Dim oColumnType = oDTColumnsPerDevExGrid.Rows.Item(index - 1).Item("TYPE_COLUMN")
Dim oConvertedValue = ClassFormat.GetConvertedValue(oColValuesfromSource(index - 1), oColumnType)
oRowData.Add(oConvertedValue)
Next
oDataSource.Rows.Add(oRowData.ToArray())
ElseIf oValueType = "System.Data.DataTable" Then
Dim oMyDatatable As DataTable = oValueFromSource
ValidatorLogger.Debug($"IDB Fill Grid [{oControl.Name}] with Datatable - Rows: " & oMyDatatable.Rows.Count)
For Each oRow As DataRow In oMyDatatable.Rows
Try
ValidatorLogger.Debug($"IDB ROW Vector {oRow.Item(0).ToString}...")
oColValuesfromSource = Split(oRow.Item(0).ToString, PMDelimiter)
If oColValuesfromSource.Length > 8 Then
ValidatorLogger.Warn("Fill Grid with DatatableSplit Error - Max 8 columns can be configured!")
End If
ValidatorLogger.Debug($"oColValuesfromSource splitted - Length ({oColValuesfromSource.Length.ToString})")
Dim oRowData As New List(Of Object)
For index = 1 To oColValuesfromSource.Length
Try
Dim oColumnType = oDTColumnsPerDevExGrid.Rows.Item(index - 1).Item("TYPE_COLUMN")
ValidatorLogger.Debug($"oColumnType of DGView-Column ({oColumnType.ToString})...")
Dim oConvertedValue = ClassFormat.GetConvertedValue(oColValuesfromSource(index - 1), oColumnType)
oRowData.Add(oConvertedValue)
Catch ex As Exception
ValidatorLogger.Warn($"Error while converting/adding Value to oRowData: " & ex.Message)
End Try
Next
oDataSource.Rows.Add(oRowData.ToArray())
Catch ex As Exception
ValidatorLogger.Warn($"Error while adding datarow [{oRow.Item(0).ToString}] to Grid: " & ex.Message)
End Try
Next
End If
End If
Else
ValidatorLogger.Info($"DevExpressGrid: There are no columns configured/listed for control {oControlId}.")
End If
Case Else
'es handelt sich um ein einfaches Vektorfeld mit einem Wert
Dim oDataSource As DataTable = oMyGridControl.DataSource
For Each obj As Object In oValueFromSource
If obj Is Nothing = False Then
oDataSource.Rows.Add(New String() {obj.ToString})
'dgv.Rows.Add(New String() {obj.ToString})
End If
Next
End Select
Else
ValidatorLogger.Warn($"Could not load Devexpress.Grid [{oControl.Name }] as omytype is [{oValueType}]!")
End If
Else
If first = False Then
Dim oDataSource As DataTable = oMyGridControl.DataSource
If oDataSource.Rows.Count > 0 Then
oDataSource.Rows.Clear()
End If
End If
End If
Try
'Dim oFilteredDatatable As DataTable = DTGRID_COLUMNS.Clone()
'Dim oExpression = $"CONTROL_ID = {oControlRow.Item("GUID")}"
'DTGRID_COLUMNS.Select(oExpression, "SEQUENCE").CopyToDataTable(oFilteredDatatable, LoadOption.PreserveChanges)
Dim oMyGridView As DevExpress.XtraGrid.Views.Grid.GridView = oMyGridControl.MainView
oMyGridView.OptionsView.ColumnAutoWidth = False
'AddHandler oMyGridView.ColumnWidthChanged, AddressOf GridControlColumnWidthChanged
Dim oGridWith As Integer = 0
For Each oRow As DataRow In oDTColumnsPerDevExGrid.Rows
Dim oTYPE_COLUMN = oRow.Item("TYPE_COLUMN")
For Each oActGridColumn As DevExpress.XtraGrid.Columns.GridColumn In oMyGridView.Columns
Dim oGridDXFieldName = oActGridColumn.FieldName
Dim olen = oActGridColumn.CustomizationCaption.Length
Dim GridDXColumnEditName = oActGridColumn.ColumnEditName
If oRow.Item("SPALTENNAME") = oGridDXFieldName Then
Dim oCaption = oRow.Item("SPALTEN_HEADER_LANG")
Dim HeaderLength = oRow.Item("SPALTEN_HEADER_LANG").Length
Dim oWidth = HeaderLength * 6
If oRow.Item("SPALTENBREITE") < oWidth Then
ValidatorLogger.Debug("Spaltenbreite der Spalte " & oCaption & " wird üebrsteuert und berechnet!")
oActGridColumn.Width = oWidth
Else
oActGridColumn.Width = oRow.Item("SPALTENBREITE")
End If
oGridWith += oWidth
If oTYPE_COLUMN = "DOUBLE" Or oTYPE_COLUMN = "CURRENCY" Then
oActGridColumn.AppearanceHeader.TextOptions.HAlignment = HorzAlignment.Far
End If
' oActGridColumn.AppearanceHeader.TextOptions.HAlignment = HorzAlignment.Center
Exit For
End If
Next
Next
Dim i = 0
' RestoreDevExpressGridControl_Layout(CURRENT_CLICKED_PROFILE_ID, oControlId, oMyGridView)
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
ValidatorLogger.Info(">> Unexpected error in FillIndexValues(GridControl: " & oMyGridControl.Name & "): " & ex.Message, True)
ValidatorLogger.Info(">> Controltype: " & oControlType)
ValidatorLogger.Info(">> Indexname windream: " & oIndexName)
errormessage = "Unexpected error in FillIndexValues(Combobox: " & oMyGridControl.Name & "): " & vbNewLine & ex.Message & vbNewLine & "Check Logfile"
My.Settings.Save()
frmError.ShowDialog()
End Try
Case oControl.GetType = GetType(CheckBox)
ValidatorLogger.Debug("Loading checkbox...")
oControlType = "CheckBox"
If oSourceIndexName = "" Then
MsgBox("Attention wrong configuration:" & vbNewLine & "for control " & oControl.Name & " no INDEX configured!" & vbNewLine & "Bitte prüfen Sie den Formulardesigner!", MsgBoxStyle.Critical, ADDITIONAL_TITLE)
Exit For
End If
If oSourceIndexName Is Nothing = False Then
Dim myCheckBox As CheckBox = oControl
If oLoadIndex = False Or oSourceIndexName = "DD PM-ONLY FOR DISPLAY" Then
ValidatorLogger.Debug("Indexwert soll nicht geladen werden.")
End If
ValidatorLogger.Debug("Loading Bool-Value from Source...")
If oSourceIndexName.StartsWith("[%VKT") And PROFIL_VEKTORINDEX <> "" Then
oValueFromSource = ReturnVektor_IndexValue(oSourceIndexName)
Else
Try
ValidatorLogger.Debug($"..Now GetVariableValue({oSourceIndexName})...")
oValueFromSource = GetVariableValuefromSource(oSourceIndexName, oIDBTyp, oIDBOverride)
Catch ex As Exception
ValidatorLogger.Warn($"Could not get the windreamValue for CheckboxIndex: {oSourceIndexName} [{ex.Message}]")
End Try
End If
If oValueFromSource Is Nothing Then
ValidatorLogger.Info(">> Zurückgegebener Wert des Wertes für Checkbox mit Indexname '" & oIndexName & "' ist nothing. Checking defaultvalue")
ValidatorLogger.Debug(">> Zurückgegebener Wert des Wertes für Checkbox mit Indexname '" & oIndexName & "' ist nothing. Checking defaultvalue")
If oDefaultValue <> String.Empty Then
ValidatorLogger.Info($"Using Default value [{oDefaultValue}]")
ValidatorLogger.Debug($"Using Default value [{oDefaultValue}]")
myCheckBox.Checked = CBool(oDefaultValue)
Exit Select
Else
ValidatorLogger.Debug("No Default Value for Checkbox - so using false!")
myCheckBox.CheckState = CheckState.Indeterminate
End If
Else
ValidatorLogger.Debug("oValueFromSource: " & oValueFromSource.ToString)
If oValueFromSource.ToString = "" Then
ValidatorLogger.Info(">> Versuch, default Value zu laden")
If oDefaultValue <> String.Empty Then
Dim result = False
If Boolean.TryParse(oDefaultValue, result) Then
ValidatorLogger.Info(">> defaultValue wurde geladen")
myCheckBox.Checked = result
If result = False Then
myCheckBox.CheckState = CheckState.Unchecked
Else
myCheckBox.CheckState = CheckState.Checked
End If
Else
myCheckBox.Checked = False
myCheckBox.CheckState = CheckState.Unchecked
End If
Else
ValidatorLogger.Info(">> defaultValue war leer")
myCheckBox.Checked = False
myCheckBox.CheckState = CheckState.Unchecked
End If
Else
Dim _value
If oValueFromSource.ToString = "System.Object[]" Then
ValidatorLogger.Debug("CheckBoxValue with VectorField: " & oSourceIndexName)
If oValueFromSource.length = 1 Then
_value = oValueFromSource(0)
Else '
ValidatorLogger.Info(" >> Vectorfield " & oSourceIndexName & "' contains more then one value - First value will be used")
_value = oValueFromSource(0)
End If
Else
_value = oValueFromSource
ValidatorLogger.Debug($"Value is not nothing and also not System.Object: [{_value}]")
End If
Try
Select Case CBool(_value)
Case True
ValidatorLogger.Debug(">> CBool(_value) = True")
myCheckBox.Checked = True
myCheckBox.CheckState = CheckState.Checked
Case False
ValidatorLogger.Debug(">> CBool(_value) = False")
myCheckBox.Checked = False
myCheckBox.CheckState = CheckState.Unchecked
End Select
Catch ex As Exception
ValidatorLogger.Error(ex)
ValidatorLogger.Info("Unexpected error in CBool(wertWD) - CheckBox: " & ex.Message & vbNewLine & "Wert WD: " & oValueFromSource.ToString, True)
myCheckBox.Checked = False
myCheckBox.CheckState = CheckState.Unchecked
End Try
End If
End If
End If
Case oControl.GetType = GetType(LookupControl3)
If LOG_PERF Then PerformanceLogger.Info("FillIndexValues/LookupControl")
Try
Dim oLookup As LookupControl3 = oControl
oValueFromSource = GetVariableValuefromSource(oSourceIndexName, oIDBTyp, oIDBOverride)
'Dim oWindreamValue = CURRENT_WMFILE.GetVariableValue(oSourceIndexName)
Try
oLookup.Properties.SelectedValues = Nothing
oLookup.Properties.SelectedValues = New List(Of String)
Catch ex As Exception
End Try
If Not IsNothing(oValueFromSource) Then
Dim oMyType = oValueFromSource.GetType.ToString
If oMyType.Contains("System.Object") Or oMyType = "System.Data.DataTable" Then
Dim oArrlist As New List(Of String)
If IDB_ACTIVE = False Then
For Each oVectorRow As Object In oValueFromSource
Dim Ocontent = oVectorRow.ToString
oArrlist.Add(Ocontent)
Next
Else
Dim myDT As DataTable = oValueFromSource
For Each oVectorRow As DataRow In myDT.Rows
Dim Ocontent = oVectorRow.Item(0)
oArrlist.Add(Ocontent)
Next
End If
oLookup.Properties.SelectedValues = oArrlist
Else
Dim oArrlist As New List(Of String)
oArrlist.Add(oValueFromSource.ToString)
oLookup.Properties.SelectedValues = oArrlist
End If
Else
If Not IsNothing(oLookup.Properties.SelectedValues) Then
If oLookup.Properties.SelectedValues.Count = 0 And oDefaultValue <> String.Empty Then
Dim oValues As List(Of String) = oDefaultValue.Split(",").ToList()
oLookup.Properties.SelectedValues = oValues
End If
End If
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
ValidatorLogger.Info(" - Unvorhergesehener Unexpected error in AddVorschlag_ComboBox - Indexname: " & oIndexName & " - Fehler: " & vbNewLine & ex.Message)
MsgBox(ex.Message, MsgBoxStyle.Critical, "Unvorhergesehener Unexpected error in Add LookupControl3:")
End Try
Case oControl.GetType = GetType(DateTimePicker)
oControlType = "DateTimePicker"
Dim DTP As DateTimePicker = oControl
If oSourceIndexName = "" Then
MsgBox("Attention wrong configuration:" & vbNewLine & "for control " & oControl.Name & " no INDEX configured!" & vbNewLine & "Bitte prüfen Sie den Formulardesigner!", MsgBoxStyle.Critical, ADDITIONAL_TITLE)
Exit For
End If
If oSourceIndexName Is Nothing = False Then
Try
If oSourceIndexName.StartsWith("[%VKT") And PROFIL_VEKTORINDEX <> "" Then
ValidatorLogger.Debug("DATE über PM-Vektor holen")
oValueFromSource = ReturnVektor_IndexValue(oSourceIndexName)
ValidatorLogger.Info(">> DTP is """)
Else
oValueFromSource = GetVariableValuefromSource(oSourceIndexName, oIDBTyp, oIDBOverride)
End If
If oValueFromSource Is Nothing Then oValueFromSource = ""
Dim tempdate As Date = CDate("01.01.0001 00:00:00")
If oValueFromSource.ToString.Length > 0 Then
Try
tempdate = CDate(oValueFromSource)
ValidatorLogger.Debug("DATE konnte umgewandelt werden")
Catch ex As Exception
ValidatorLogger.Error(ex)
ValidatorLogger.Debug("DATE wurde auf heute gesetzt")
End Try
DTP.Text = tempdate
Else
ValidatorLogger.Debug("DATE ist leer")
DTP.Text = tempdate
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
errormessage = "Unvorhergesehener Fehler bei DTP: " & vbNewLine & ex.Message
ValidatorLogger.Info("Unexpected error in FillIndex DTP: " & ex.Message & vbNewLine & "Wert WD: " & oValueFromSource.ToString & vbNewLine & "Indexname: " & oSourceIndexName, True)
frmError.ShowDialog()
ValidatorLogger.Info("Unexpected error in FillIndex DTP: " & ex.Message, True)
End Try
End If
End Select
oCount += 1
Next
Focus_FirstControl()
Try
Dim oDataTable As DataTable = DT_COLUMNS_GRID_WITH_SQL.Clone()
DT_COLUMNS_GRID_WITH_SQL.Select($"SQL_COMMAND not like '%#CTRL#%'").CopyToDataTable(oDataTable, LoadOption.PreserveChanges)
For Each oRow As DataRow In oDataTable.Rows
Dim oDEPENDING_CTRL_ID = oRow.Item("CONTROL_ID")
Dim oDEPENDING_COLUMN = oRow.Item("SPALTENNAME")
Dim oSqlCommand = oRow.Item("SQL_COMMAND")
Dim oCONNID = oRow.Item("CONNECTION_ID")
Dim oAdvancedLookup = oRow.Item("ADVANCED_LOOKUP")
oSqlCommand = clsPatterns.ReplaceAllValues(oSqlCommand, PanelValidatorControl, True)
Try
'Dim oDTRESULT_FOR_COLUMN As DataTable = ClassDatabase.Return_Datatable_ConId(oSqlCommand, oCONNID, $"oDEPENDING_CTRL_ID: {oDEPENDING_CTRL_ID}")
Dim oDTRESULT_FOR_COLUMN As DataTable = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSqlCommand, DatabaseType.ECM) With {
.ConnectionId = oCONNID
})
If Not IsNothing(oDTRESULT_FOR_COLUMN) Then
ValidatorLogger.Debug($"Trying to create a DropDown(FIV) for CONTROL-ID [{oDEPENDING_CTRL_ID}] - RowCount: [{oDTRESULT_FOR_COLUMN.Rows.Count}] ")
For Each oControl As Control In PanelValidatorControl.Controls
Dim oControlId = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid
If oControlId = oDEPENDING_CTRL_ID Then
ControlCreator.GridTables_CacheDatatableForColumn(oControlId, oDEPENDING_COLUMN, oSqlCommand, oCONNID, oAdvancedLookup)
Exit For
End If
Next
Else
ValidatorLogger.Warn($"FillIndexValues - oDTRESULT_FOR_COLUMN is nothing!")
End If
Catch ex As Exception
ValidatorLogger.Warn($"FillIndexValues - Unexpected error in creating Grid-Dropdown-Column [{oDEPENDING_COLUMN}] for CONTROL-ID [{oDEPENDING_CTRL_ID}]: " & ex.Message)
End Try
Next
Catch ex As Exception
ValidatorLogger.Warn($"FillIndexValues - Unexpected error in creating dropdown for Grid: " & ex.Message)
End Try
If LOG_PERF Then PerformanceLogger.Info("FillIndexValues/Postload")
If IDB_ACTIVE = True Then
Try
Dim oSQL = $"select Attribut, TERM_VALUE from VWIDB_VALUE_TEXT WHERE LANG_CODE IN ('{USER_LANGUAGE}','UNQID') AND IDB_OBJ_ID = {CURRENT_DOC_ID} AND Attribut in ('PM_Info1','PM_Info2') ORDER BY Attribut"
Dim oDTINFO As DataTable = DatabaseFallback.GetDatatableIDB(oSQL)
If Not IsNothing(oDTINFO) Then
Dim oColor As System.Drawing.Color
If oDTINFO.Rows.Count > 0 Then
Dim oColumns As String()
If oDTINFO.Rows.Count = 1 Then
oColumns = Split(oDTINFO.Rows(0).Item("TERM_VALUE"), "#")
If oColumns.Length = 1 Then
bsiInfo1.Caption = oDTINFO.Rows(0).Item("TERM_VALUE")
ElseIf oColumns.Length = 2 Then
bsiInfo1.Caption = oColumns(0)
Try
oColor = System.Drawing.Color.FromName(oColumns(1))
bsiInfo1.ItemAppearance.Normal.ForeColor = oColor
Catch ex As Exception
End Try
End If
bsiInfo2.Visibility = BarItemVisibility.Never
ElseIf oDTINFO.Rows.Count = 2 Then
'ITEM 1
oColumns = Split(oDTINFO.Rows(0).Item("TERM_VALUE"), "#")
If oColumns.Length = 1 Then
bsiInfo1.Caption = oDTINFO.Rows(0).Item("TERM_VALUE")
ElseIf oColumns.Length = 2 Then
bsiInfo1.Caption = oColumns(0)
Try
oColor = System.Drawing.Color.FromName(oColumns(1))
bsiInfo1.ItemAppearance.Normal.ForeColor = oColor
Catch ex As Exception
End Try
End If
'ITEM 1
oColumns = Split(oDTINFO.Rows(1).Item("TERM_VALUE"), "#")
If oColumns.Length = 1 Then
bsiInfo2.Caption = oDTINFO.Rows(1).Item("TERM_VALUE")
ElseIf oColumns.Length = 2 Then
bsiInfo2.Caption = oColumns(0)
Try
oColor = System.Drawing.Color.FromName(oColumns(1))
bsiInfo2.ItemAppearance.Normal.ForeColor = oColor
Catch ex As Exception
End Try
End If
bsiInfo2.Visibility = BarItemVisibility.Always
End If
RibbonPageGroup2.Visible = True
Else
ValidatorLogger.Debug($"No PM_Info-Configuration!!")
RibbonPageGroup2.Visible = False
End If
Else
ValidatorLogger.Warn($"oDTINFO is nothing!!")
RibbonPageGroup2.Visible = False
End If
Catch ex As Exception
ValidatorLogger.Warn($"Unexpected error in Setting PMINFO - ERROR: {ex.Message}")
RibbonPageGroup2.Visible = False
End Try
Else
RibbonPageGroup2.Visible = False
End If
'Flag setzen das Indexe geladen sind
_Indexe_Loaded = True
' Should the custom Ribbon group be displayed at all?
' Will be hidden later if not search results are found
If RibbonPageCustItm1 <> "" Then
Attmt_bbtnitmShow.Caption = RibbonPageCustItm1
rbnPgGroupAttmt.Visible = True
Attmnt_bbtnitm_LoadonClick.Checked = CONFIG.Config.ADDITIONAL_SEARCHES_LOAD_ONCLICK
Else
rbnPgGroupAttmt.Visible = False
End If
Load_Additional_Searches(True)
' If Searches should be loaded automatically, not only on click
If CONFIG.Config.ADDITIONAL_SEARCHES_LOAD_ONCLICK = False And (AdditionalDocResultsExist = True Or AdditionalDataResultsExist = True) Then
' _frmValidatorSearch?.Show()
Click_Additional_Searches()
End If
Else
MsgBox("No Form-Mask defined for this profile!" & vbNewLine & "Please inform Your admin!" & vbNewLine & "The validator will be closed!", MsgBoxStyle.Exclamation, "Attention:")
Me.Close()
End If
Catch ex As Exception
ValidatorLogger.Warn($"Unexpected error in FillIndexValues: [{oControName} -TYPE: {oControlType}-INDEXNAME: {oIndexName}] ERROR: {ex.Message}")
errormessage = $"Unexpected error in FillIndexValues: [{oControName} -TYPE: {oControlType}-INDEXNAME: {oIndexName}] ERROR: {ex.Message}" & vbNewLine & "Check Logfile"
My.Settings.Save()
frmError.ShowDialog()
End Try
End Sub
Private Sub frmValidation_Shown(sender As Object, e As System.EventArgs) Handles Me.Shown
' Refresh_FileList()
Load_Next_Document(True)
Controls2B_EnDisabled_on_Load()
_DependingControl_In_Action = False
_DependingColumn_In_Action = False
' 18.10.2021: Brauchen Sie das Überhaupt??
'Controls2beDisabled()
BringToFront()
If bbtniRefreshSearches.Visibility = BarItemVisibility.Always Then
_frmValidatorSearch?.BringToFront()
End If
_FormLoaded = True
Try
If USER_GHOST_MODE_ACTIVE Then
BbtnitmSave.Enabled = False
btnSave.Enabled = False
Else
BbtnitmSave.Enabled = True
btnSave.Enabled = True
End If
Catch ex As Exception
End Try
Try
If RibbonPageCustTitle <> "" Then
RibbonPageGroupCustom.Text = RibbonPageCustTitle
RibbonPageGroupCustom.Visible = True
Else
RibbonPageGroupCustom.Visible = False
End If
If Not (IsNothing(WMDocPathWindows) And ActiveWorkflowType = ConstAHWorkflow_BlindFile) Then
If ButtonExport2Folder_Caption <> "" And WMDocPathWindows <> "" Then
ValidatorLogger.Debug("Enabling Export2File, Caption set")
ValidatorLogger.Debug("Button Caption: [{0}]", ButtonExport2Folder_Caption)
ValidatorLogger.Debug("Export root folder: [{0}]", ButtonExport2Folder_RootFolder)
If File.Exists(WMDocPathWindows) Then
ValidatorLogger.Debug("File exists, Showing Export Button")
barbtnitmExport.Caption = ButtonExport2Folder_Caption
If ButtonExport2Folder_Mode <> String.Empty Then
barbtnitmExport.Tag = ButtonExport2Folder_Mode
End If
barbtnitmExport.Visibility = BarItemVisibility.Always
Try
If ButtonExport2Folder_RootFolder <> "" Then
If Directory.Exists(ButtonExport2Folder_RootFolder) Then
If CONFIG.Config.LastExportPath <> String.Empty Then
ValidatorLogger.Debug("Last export path exists, using as default path")
FolderBrowserDialog1.SelectedPath = CONFIG.Config.LastExportPath
Else
FolderBrowserDialog1.SelectedPath = ButtonExport2Folder_RootFolder
End If
ValidatorLogger.Debug("Setting default export path to [{0}]", FolderBrowserDialog1.SelectedPath)
Else
ValidatorLogger.Warn($"### Dis/Enabale Export2Path - RootFolder {ButtonExport2Folder_RootFolder} not existing or accessible!###")
End If
End If
Catch ex As Exception
ValidatorLogger.Warn($"### Error Dis/Enabale Export2Path: {ex.Message} !###")
End Try
End If
End If
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
ValidatorLogger.Debug("frmValidation_Shown finished!")
End Sub
Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
btnSave.Enabled = False
' TODO: Use when working on Validation
If ForceGridValidation() = True Then
Finish_WFStep()
End If
btnSave.Enabled = True
End Sub
Private Function ForceGridValidation()
Dim oValidation As Boolean = True
Dim oGrids = (From oControl In PanelValidatorControl.Controls
Where TypeOf oControl Is GridControl
Select oControl).ToList()
ValidatorLogger.Debug("Forcing grid Validation")
For Each oGrid As GridControl In oGrids
ValidatorLogger.Debug("Validating Grid [{0}]", oGrid.Name)
Dim oView As GridView = oGrid.MainView
If oView.RowCount = 0 Then
Continue For
End If
If DoCellValidation(oView) = False Then
oValidation = False
End If
ValidatorLogger.Debug("Validation of Grid [{0}] ended with Result: [{1}]", oGrid.Name, oValidation)
If oValidation = False Then
Return False
End If
Next
Return True
End Function
Private Function DoCellValidation(pView As GridView) As Boolean
For i As Integer = 0 To pView.DataRowCount - 1
Dim oRowHandle = i
pView.FocusedRowHandle = oRowHandle
For Each oColumn As GridColumn In pView.Columns
pView.FocusedColumn = oColumn
If pView.PostEditor() = True Then
If pView.UpdateCurrentRow() = False Then
Return False
End If
Else
Return False
End If
Next
Next
Return True
End Function
Private Function btnFinish_continue()
Try
Dim oSQL = PROFIL_FINISH_SQL
oSQL = clsPatterns.ReplaceAllValues(oSQL, PanelValidatorControl, True)
Dim oDT_ACTIONS As DataTable = DatabaseFallback.GetDatatableECM(oSQL)
If IsNothing(oDT_ACTIONS) Then
MsgBox("Something went wrong in btnFinish_continue - Please check Your log and inform the workflow-team!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
Return False
ElseIf oDT_ACTIONS.Rows.Count = 0 Then
MsgBox("Something went wrong in btnFinish_continue (No row) - Please check Your log and inform the workflow-team!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
Return False
End If
'Select Case'Override' as Action_Type, 'Sind Sie sicher dass Sie nicht zuständig sind?' as Question,'Nicht Zuständig' as Caption,'Red' as Color
Dim oMsgType
Dim oQuestion
Dim oTitle
ValidatorLogger.Debug("## btnFinish_continue ##")
Try
oMsgType = oDT_ACTIONS?.Rows(0).Item("MsgType")
Catch ex As Exception
oMsgType = ""
End Try
Try
oQuestion = oDT_ACTIONS?.Rows(0).Item("Question")
Catch ex As Exception
ValidatorLogger.Warn($"btnFinishContinue - No QUESTION-Column in select-Result!")
oQuestion = ""
End Try
Try
oTitle = oDT_ACTIONS?.Rows(0).Item("Title")
Catch ex As Exception
oTitle = ""
End Try
ValidatorLogger.Debug($"Case is: [{oMsgType.ToString.ToUpper}]")
Select Case oMsgType.ToString.ToUpper
Case "MsgboxResult".ToUpper
If oQuestion <> "" Then
Dim result As MsgBoxResult
result = MessageBox.Show(oQuestion, oTitle, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)
If result = MsgBoxResult.Yes Then
Return True
Else
Dim oLogString = $"Msgboxresult [{oQuestion}] = [No]"
If IDB_ACTIVE = False Then
WMIndexVectofield(oLogString, PROFIL_LOGINDEX)
Else
IDBData.SetVariableValue(PROFIL_LOGINDEX, oLogString)
End If
Return False
End If
End If
Case "MsgboxStop".ToUpper
MessageBox.Show(oQuestion, oTitle, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Return False
Case "Msgbox".ToUpper
MessageBox.Show(oQuestion, oTitle, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Return True
Case "Continue".ToUpper
Return True
Case Else
MsgBox($"No valid action provided [{oMsgType}] in btnFinishContinue - Check Your log and inform the WorkflowTeam", MsgBoxStyle.Exclamation, "")
ValidatorLogger.Warn($"No valid action provided [{oMsgType}] in btnFinishContinue!")
Return False
End Select
Catch ex As Exception
ValidatorLogger.Error(ex)
MsgBox("An unhandled exeception occured in btnFinish Procedure! Please inform Your WorkflowTeam and Check Your log!" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
Return False
End Try
End Function
Sub Finish_WFStep(Optional includeFI As Boolean = True)
btnSave.Enabled = False
ValidatorLogger.Debug("Abschluss für Dok: " & CURRENT_DOC_PATH & " gestartet")
_ItemWorked = True
Dim oErrorOcurred As Boolean = False
If OverrideAll = False Then
'Eingaben auf Form überprüfen
If Check_UpdateIndexe() = True Then
If PROFIL_FINISH_SQL <> String.Empty Then
If btnFinish_continue() = False Then
Exit Sub
End If
End If
If includeFI = True Then
Try
Dim oSQL = $"SELECT * FROM TBPM_PROFILE_FINAL_INDEXING WHERE PROFIL_ID = {CURRENT_ProfilGUID} AND ACTIVE = 1 ORDER BY SEQUENCE"
Dim oDTFinalIndexing As DataTable
oDTFinalIndexing = DatabaseFallback.GetDatatable("TBPM_PROFILE_FINAL_INDEXING", New GetDatatableOptions(oSQL, DatabaseType.ECM) With {
.FilterExpression = $"PROFIL_ID = {CURRENT_ProfilGUID}",
.SortByColumn = "SEQUENCE"
})
If oDTFinalIndexing?.Rows.Count > 0 Then
Dim oDT_FIResult As DataTable
'Jetzt finale Indexe setzen
ValidatorLogger.Debug("FINAL INDEXING STARTING...")
For Each oFinalIndexRow As DataRow In oDTFinalIndexing.Rows
oDT_FIResult = Nothing
Dim oValue As String = oFinalIndexRow.Item("VALUE").ToString
Dim oFinalIndex = oFinalIndexRow.Item("INDEXNAME")
Dim oIndexBehaviour = oFinalIndexRow.Item("IF_VEKTOR_BEHAVIOUR")
ValidatorLogger.Debug($"Working on final index [{oFinalIndex}]...")
Dim oContinueOnIndifferentState As Boolean = CBool(oFinalIndexRow.Item("CONTINUE_INDETERMINED"))
Dim oIndexType = 0
If IDB_ACTIVE = False Then
oIndexType = WINDREAM_MOD.GetIndexType(oFinalIndex)
End If
If oValue.ToUpper = "SQL-Command".ToUpper Then '###### Indexierung mit variablen SQL ###
ValidatorLogger.Debug("Indexing wih dynamic sql...")
Dim oGUID = oFinalIndexRow.Item("GUID")
Dim oSQLCommand = oFinalIndexRow.Item("SQL_COMMAND")
Dim oConnectionID = oFinalIndexRow.Item("CONNECTION_ID")
oSQLCommand = clsPatterns.ReplaceAllValues(oSQLCommand, PanelValidatorControl, True)
If IsNothing(oSQLCommand) Then
errormessage = "Error while replacing Values in final indexing - Check the log"
My.Settings.Save()
frmError.ShowDialog()
oErrorOcurred = True
_ItemWorked = False
End If
If Not IsNothing(oSQLCommand) Then
If oConnectionID <> 0 Then
oDT_FIResult = DatabaseFallback.GetDatatableWithConnection(oSQLCommand, oConnectionID)
Else
oDT_FIResult = DatabaseFallback.GetDatatable(New GetDatatableOptions(oSQLCommand, DatabaseType.ECM))
End If
If Not IsNothing(oDT_FIResult) Then
ValidatorLogger.Debug($"oResultfromSQL is [{oDT_FIResult.ToString}]")
If oDT_FIResult.Rows.Count = 0 Then
If oContinueOnIndifferentState = False Then
errormessage = "Result from SQL is EmptyValue - Check the SQL and the log"
My.Settings.Save()
frmError.ShowDialog()
oErrorOcurred = True
_ItemWorked = False
Else
ValidatorLogger.Warn($"FinalIndexResult from SQL is EmptyValue - AttributeName [{oFinalIndexRow.Item("INDEXNAME")}] - oContinueOnIndifferentState = true, So continuing with next Attribute")
Continue For
End If
End If
'oValue = oResultDT
Else
ValidatorLogger.Warn("ATTENTION: oResultDT for Automatic Index IS NOTHING!")
Continue For
End If
End If
Else
If oIndexBehaviour <> "Delete" Then
If oValue.StartsWith("v") Then
Select Case oFinalIndexRow.Item("VALUE").ToString
Case "vDate"
oValue = Now.ToShortDateString
Case "vUserName"
oValue = USER_USERNAME
Case Else
oValue = oFinalIndexRow.Item("VALUE")
End Select
End If
Else
ValidatorLogger.Info($"The value of attribute [{oFinalIndex}] will be deleted.")
oValue = "DeleteWMAttributeValue"
End If
oDT_FIResult = New DataTable()
' Spalte hinzufügen z.B. "Ergebnis" vom Typ String
oDT_FIResult.Columns.Add("Ergebnis", GetType(String))
' Zeile hinzufügen mit festem Wert z.B. "OK"
Dim newRow As DataRow = oDT_FIResult.NewRow()
newRow("Ergebnis") = oValue
oDT_FIResult.Rows.Add(newRow)
End If
If oErrorOcurred Then
Exit For
End If
Dim oResult() As String
ReDim Preserve oResult(0)
oResult(0) = oValue
ValidatorLogger.Debug("Now the final indexing...")
ValidatorLogger.Debug($"oIndexType {oIndexType.ToString}")
If oIndexType > 4000 And oIndexType < 5000 And oDT_FIResult.Rows.Count > 0 Then
Dim oOldValue As Object = CURRENT_WMFILE.GetVariableValue(oFinalIndex)
Dim oValueList As New List(Of Object)
Dim oNewValue As Object()
Dim oMissing As Boolean = False
If oOldValue IsNot Nothing AndAlso TypeOf oOldValue Is Object Then
' If new values are allowed, add the old values first
If CBool(oFinalIndexRow.Item("ALLOW_NEW_VALUES")) = True Then
oValueList = DirectCast(oOldValue, Object()).ToList()
End If
' Add the new value(S)
oValueList = WMVectorResult_add_Items_From_DT(oDT_FIResult, oValueList)
Else
oValueList = WMVectorResult_add_Items_From_DT(oDT_FIResult, oValueList)
End If
If CBool(oFinalIndexRow.Item("PREVENT_DUPLICATES")) = True Then
oValueList = oValueList.Distinct().ToList()
End If
oNewValue = oValueList.ToArray()
If Indexiere_File(CURRENT_WMFILE, oFinalIndexRow.Item("INDEXNAME"), oNewValue) = True Then
ValidatorLogger.Debug("Final Vektorindex '" & oFinalIndexRow.Item("INDEXNAME").ToString & "' has been set successfully!")
Else
errormessage = "Error in final indexing:" & vbNewLine & idxerr_message
My.Settings.Save()
frmError.ShowDialog()
oErrorOcurred = True
_ItemWorked = False
End If
Else
If oValue.ToUpper = "SQL-Command".ToUpper Then
If oDT_FIResult.Rows.Count = 1 Then
oValue = oDT_FIResult.Rows(0).Item(0).ToString
oResult = Nothing
ReDim Preserve oResult(0)
oResult(0) = oValue
ElseIf IsNothing(oResult) Then
MsgBox("Something went wrong while final-indexing. Check Your log and inform the admin-team!", MsgBoxStyle.Critical, ADDITIONAL_TITLE)
ValidatorLogger.Warn("Something went wrong while final-indexing")
Exit For
End If
End If
Dim oFIResult As Boolean = False
If IDB_ACTIVE = False Then
If Indexiere_File(CURRENT_WMFILE, oFinalIndexRow.Item("INDEXNAME"), oResult) = True Then
oFIResult = True
ValidatorLogger.Debug("FINALER INDEX '" & oFinalIndexRow.Item("INDEXNAME") & "' WURDE ERFOLGREICH GESETZT")
'Nun das Logging
If PROFIL_LOGINDEX <> "" Then
Dim logstr = Return_LOGString(oValue, "DDFINALINDEX", oFinalIndexRow.Item("INDEXNAME"))
WMIndexVectofield(logstr, PROFIL_LOGINDEX)
End If
End If
Else
If IDBData.SetVariableValue(oFinalIndexRow.Item("INDEXNAME"), oValue) = True Then
oFIResult = True
ValidatorLogger.Debug($"Final index IDB '{oFinalIndexRow.Item("INDEXNAME")}' was updated with [{oValue.ToString}]")
End If
End If
If oFIResult = False Then
errormessage = "Error in final indexing:" & vbNewLine & idxerr_message
My.Settings.Save()
frmError.ShowDialog()
oErrorOcurred = True
_ItemWorked = False
End If
End If
If oErrorOcurred = True Then
_ItemWorked = False
Exit For
End If
Next
End If
Catch ex As Exception
ValidatorLogger.Warn($"Error in finalIndexing: {ex.Message}")
oErrorOcurred = True
End Try
End If
Try
''Wenn kein Fehler nach der finalen Indexierung gesetzt wurde
If Override = True And Override_SQLCommand <> "" Then
DatabaseFallback.ExecuteNonQueryECM(Override_SQLCommand)
End If
If oErrorOcurred = False Then
Dim WORK_HISTORY_ENTRY = Nothing
Try
WORK_HISTORY_ENTRY = CURRENT_DT_PROFILE.Rows(0).Item("WORK_HISTORY_ENTRY")
If IsDBNull(WORK_HISTORY_ENTRY) Then
WORK_HISTORY_ENTRY = Nothing
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
WORK_HISTORY_ENTRY = Nothing
End Try
If Not IsNothing(WORK_HISTORY_ENTRY) Then
If WORK_HISTORY_ENTRY <> String.Empty Then
Dim preg As String = "\[%{1}[a-zA-Z0-9\!\$\&\/\(\)\=\?\,\.\-\;\:_öÖüÜäÄ\#\'\+\*\~\{\}\@\€\<\>\ ]+]{1}"
' einen Regulären Ausdruck laden
Dim regulärerAusdruck As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex(preg)
' die Vorkommen im SQL-String auslesen
Dim elemente As System.Text.RegularExpressions.MatchCollection = regulärerAusdruck.Matches(WORK_HISTORY_ENTRY)
'####
' alle Vorkommen innerhalb der Namenkonvention durchlaufen
For Each element As System.Text.RegularExpressions.Match In elemente
Try
ValidatorLogger.Debug("element in RegeX WORK_HISTORY_ENTRY: " & element.Value)
Dim CTRL_ID = element.Value.Substring(2, element.Value.Length - 3)
CTRL_ID = CTRL_ID.Replace("CTRLID", "")
Dim value_from_control
If IsNumeric(CTRL_ID) Then
For Each oControl As Control In Me.PanelValidatorControl.Controls
Try
If IsNothing(DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid) Then
Continue For
End If
Catch ex As Exception
Continue For
End Try
If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Guid = CTRL_ID Then
'######
Select Case True
Case oControl.GetType() = GetType(DevExpress.XtraEditors.TextEdit) Or oControl.GetType() = GetType(MemoEdit)
Try
Dim oBaseEdit As BaseEdit = oControl
value_from_control = oBaseEdit.EditValue
Catch ex As Exception
ValidatorLogger.Error(ex)
value_from_control = String.Empty
End Try
Case oControl.GetType() = GetType(System.Windows.Forms.ComboBox)
Dim cmb As Windows.Forms.ComboBox = oControl
Try
value_from_control = cmb.Text
Catch ex As Exception
ValidatorLogger.Error(ex)
value_from_control = String.Empty
End Try
Case oControl.GetType() = GetType(System.Windows.Forms.DateTimePicker)
Dim dtp As DateTimePicker = oControl
Try
value_from_control = dtp.Value.ToString
Catch ex As Exception
ValidatorLogger.Error(ex)
value_from_control = String.Empty
End Try
Case oControl.GetType() = GetType(System.Windows.Forms.CheckBox)
Dim chk As CheckBox = oControl
Try
value_from_control = chk.Checked
Catch ex As Exception
ValidatorLogger.Error(ex)
value_from_control = String.Empty
End Try
End Select
End If
Next
End If
If Not IsNothing(value_from_control) Then
WORK_HISTORY_ENTRY = WORK_HISTORY_ENTRY.ToString.Replace(element.Value, value_from_control)
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
ValidatorLogger.Info("Unexpected Error in Checking control values for WORK_HISTORY_ENTRY - ERROR: " & ex.Message)
End Try
Next
If WORK_HISTORY_ENTRY.ToString.Contains("@DATE") Then
WORK_HISTORY_ENTRY = WORK_HISTORY_ENTRY.ToString.Replace("@DATE", Now.ToShortDateString)
End If
If WORK_HISTORY_ENTRY.ToString.Contains("@USERNAME") Then
WORK_HISTORY_ENTRY = WORK_HISTORY_ENTRY.ToString.Replace("@USERNAME", USER_USERNAME)
End If
Else
WORK_HISTORY_ENTRY = ""
End If
End If
Dim ins = String.Format("INSERT INTO TBPM_FILES_WORK_HISTORY (PROFIL_ID, DOC_ID,WORKED_BY,WORKED_WHERE,STATUS_COMMENT) VALUES ({0},{1},'{2}','{3}','{4}')", CURRENT_ProfilGUID, CURRENT_DOC_ID, USER_USERNAME, System.Environment.MachineName, WORK_HISTORY_ENTRY)
DatabaseFallback.ExecuteNonQueryECM(ins)
Dim oFIsql As String
'Close_document_viewer()
If Current_Document.Extension = "pdf" Then
If Not IsNothing(WORK_HISTORY_ENTRY) Then
If CBool(CURRENT_DT_PROFILE.Rows(0).Item("ANNOTATE_WORK_HISTORY_ENTRY")) = True Then
oFIsql = String.Format("SELECT * FROM TBPM_FILES_WORK_HISTORY WHERE GUID = (SELECT MAX(GUID) FROM TBPM_FILES_WORK_HISTORY WHERE PROFIL_ID = {0} AND DOC_ID = {1})", CURRENT_ProfilGUID, CURRENT_DOC_ID)
Dim DT_ENTRY As DataTable = DatabaseFallback.GetDatatableECM(oFIsql) ', "Finish_WFStep2")
If Not IsNothing(DT_ENTRY) Then
If DT_ENTRY.Rows.Count = 1 Then
Dim AnnotationString = DT_ENTRY.Rows(0).Item("WORKED_WHEN") & " " & DT_ENTRY.Rows(0).Item("WORKED_BY") & ": " & DT_ENTRY.Rows(0).Item("STATUS_COMMENT")
ClassAnnotation.Annotate_PDF("Workflow-State:", AnnotationString, 0, False)
End If
End If
End If
Dim oAnnotateAllWHEs = CURRENT_DT_PROFILE.Rows(0).Item("ANNOTATE_ALL_WORK_HISTORY_ENTRIES")
If CBool(oAnnotateAllWHEs) = True Then
oFIsql = String.Format("SELECT * FROM TBPM_FILES_WORK_HISTORY WHERE DOC_ID = {1} ORDER BY GUID", CURRENT_ProfilGUID, CURRENT_DOC_ID)
Dim DT_ENTRIES As DataTable = DatabaseFallback.GetDatatableECM(oFIsql) ', "Finish_WFStep3")
If Not IsNothing(DT_ENTRIES) Then
If DT_ENTRIES.Rows.Count > 0 Then
Dim AnnotationString As String = ""
For Each rw As DataRow In DT_ENTRIES.Rows
AnnotationString = AnnotationString & rw.Item("WORKED_WHEN") & " " & rw.Item("WORKED_BY") & ": " & rw.Item("STATUS_COMMENT") & vbNewLine
Next
ClassAnnotation.Annotate_PDF("Workflow History:", AnnotationString, 0, False, 10, 40)
End If
End If
End If
End If
End If
'wenn Move2Folder aktiviert wurde
If Move2Folder <> "" And (OPERATION_MODE_FS = ClassConstants.OpModeFS_PWM Or OPERATION_MODE_FS = ClassConstants.OpModeFS_IDBWM) Then
idxerr_message = allgFunk.Move2Folder(WMDocPathWindows, Move2Folder, CURRENT_ProfilGUID, WINDREAM_ALLG)
If idxerr_message <> "" Then
errormessage = "Fehler bei Move2Folder:" & vbNewLine & idxerr_message
My.Settings.Save()
frmError.ShowDialog()
oErrorOcurred = True
_ItemWorked = False
End If
End If
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
errormessage = "Unexpected error in Finish:" & ex.Message
My.Settings.Save()
frmError.ShowDialog()
oErrorOcurred = True
_ItemWorked = False
ValidatorLogger.Info("Unexpected error in Finish: " & ex.Message, True)
Exit Sub
End Try
Else
'lblerror.Visible = True
'lblerror.Text = errmessage
errormessage = oErrMsgMissingInput
frmError.ShowDialog()
oErrorOcurred = True
_ItemWorked = False
Exit Sub
End If
Else
ValidatorLogger.Info($"Overriding all in action for DocID: {CURRENT_DOC_ID} - ProfileID: {CURRENT_ProfilGUID}")
If Override_SQLCommand <> "" Then
If DatabaseFallback.ExecuteNonQueryECM(Override_SQLCommand) = False Then
oErrorOcurred = True
End If
End If
' Wert muss für den nächsten Beleg wieder zurückgesetzt werden.
OverrideAll = False
End If
If oErrorOcurred = True Then
MsgBox("Unhandled error occured in Finish Workflow-Step...Please check your log!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
_ItemWorked = False
Else
ValidatorLogger.Debug("Validation of document ended successfully!")
PRTF_PROFILE_FILES_WORK("Worked")
Dim oPROCSQL = $"EXEC PRPM_CHECK_NEXT_WF {CURRENT_DOC_GUID}"
If DatabaseFallback.ExecuteNonQueryECM(oPROCSQL) = False Then
ValidatorLogger.Warn($"Attention: Error executing proc {oPROCSQL}")
End If
End If
If CURRENT_JUMP_DOC_GUID <> 0 Then
CURRENT_DOC_GUID = 0
Me.Close()
Else
'Das nächste Dokument laden
Load_Next_Document(False)
Focus_FirstControl()
End If
btnSave.Enabled = True
End Sub
Private Function WMVectorResult_add_Items_From_DT(oDT As DataTable, oValueList As List(Of Object)) As List(Of Object)
For Each oRow As DataRow In oDT.Rows
oValueList.Add(oRow.Item(0))
Next
Return oValueList
End Function
Sub Focus_FirstControl()
If first_control Is Nothing = False Then
Dim otype = first_control.GetType
first_control.Focus()
End If
End Sub
Function Check_Missing_Control_Value(control As Control, typ As String) As Boolean
Select Case typ
Case "txt"
Dim oTextBox As BaseEdit = control
If IsNothing(oTextBox.EditValue) Then
Return True
End If
If oTextBox.EditValue.ToString = String.Empty Then
Return True
End If
End Select
Return False
End Function
Function Return_PM_VEKTOR(input As String, VKTBezeichner As String)
Dim PM_String As String
Try
Dim Bezeichner As String = VKTBezeichner.Replace("[%VKT", "")
PM_String = "DD-PM" & PMDelimiter & Bezeichner & PMDelimiter & input & PMDelimiter & USER_USERNAME & PMDelimiter & Now.ToString
Catch ex As Exception
ValidatorLogger.Error(ex)
ValidatorLogger.Info(">> error in Return_PM_VEKTOR: " & ex.Message, True)
PM_String = "DD-PM ERROR: " & ex.Message
End Try
Return PM_String
End Function
Function Return_LOGString(input As String, old As String, indexname As String)
Dim PM_String As String
Try
If old = "DDFINALINDEX" Then
PM_String = $"DD-PMLog-FINAL{PMDelimiter}{indexname}{PMDelimiter}{input}{PMDelimiter}{USER_USERNAME}{PMDelimiter}{Now.ToString}"
Else
PM_String = $"DD-PMLog-CHG{PMDelimiter}{indexname}{PMDelimiter}NEW: [{input}] - OLD: [{old}]{PMDelimiter}{USER_USERNAME}{PMDelimiter}{Now.ToString}"
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
ValidatorLogger.Info(">> error in Return_LOGString: " & ex.Message, True)
PM_String = "DD-PM ERROR: " & ex.Message
End Try
Return PM_String
End Function
Private Function WMIndexVectofield(input As String, NameVKTIndex As String, Optional PreventDuplicates As Boolean = False, Optional AllowAddNewValues As Boolean = True, Optional IndexBehaviour As String = "Add")
Dim oOldValue As Object = CURRENT_WMFILE.GetVariableValue(NameVKTIndex)
Dim oValueList As New List(Of Object)
Dim oNewValue As Object()
Dim oMissing As Boolean = False
If oOldValue IsNot Nothing AndAlso TypeOf oOldValue Is Object Then
' If new values are allowed, add the old values first
If AllowAddNewValues Then
oValueList = DirectCast(oOldValue, Object()).ToList()
End If
' Add the new value
oValueList.Add(input)
Else
' Just add input as the only value
oValueList.Add(input)
End If
If PreventDuplicates Then
oValueList = oValueList.
Distinct().
ToList()
End If
oNewValue = oValueList.ToArray()
If oNewValue.Length > 0 Then
'Jetzt die Datei indexieren
If Indexiere_File(CURRENT_WMFILE, NameVKTIndex, oNewValue) = False Then
oMissing = True
ValidatorLogger.Info("Error while indexing Vektorfeld '" & NameVKTIndex & "' - ERROR: " & idxerr_message)
oErrMsgMissingInput = "Error while indexing Vektorfeld '" & NameVKTIndex & "' - ERROR: " & idxerr_message
End If
End If
Return oMissing
End Function
Function DT_FOR_ARRAY(pArr As String()) As DataTable
Dim odt As New DataTable
odt.Columns.Add("ID", GetType(Integer))
odt.Columns.Add("Result", GetType(String))
Dim N As Integer = odt.Columns("ID").AutoIncrement
For Each oStr In pArr
odt.Rows.Add(N, oStr)
Next
Return odt
End Function
Function Check_UpdateIndexe() As Boolean
Dim oControlName
Dim oControlId As String
Try
Dim oMissing As Boolean = False
'Jedes Control auf panel durchlaufen
For Each oControl As Control In Me.PanelValidatorControl.Controls
'Der input der Box,Cmb muss jedes mal geleert werden
Dim oMyInput As String = ""
'Jedes Control in Konfig Tab durchlaufn
For Each oControlRow As DataRow In DTVWCONTROL_INDEX.Rows
Dim oCtrlType = oControlRow.Item("CTRL_TYPE").ToString
'Den Indexnamen auslesen
Dim oIndexName As String = oControlRow.Item("INDEX_NAME")
If oCtrlType = "LBL" Or oCtrlType = "LINE" Or oCtrlType = "BUTTON" Then
Continue For
End If
If oIndexName = "@@DISPLAY_ONLY" Then
'Logger.Debug($"Index [{oIndexName}] will be skipped")
Continue For
End If
Dim oDBControlName = oControlRow.Item("CTRL_NAME").ToString
Dim oIsRequired As Boolean = CBool(oControlRow.Item("VALIDATION"))
Dim oSQLCheckCommand As String = IIf(IsDBNull(oControlRow.Item("SQL_UEBERPRUEFUNG")), "", oControlRow.Item("SQL_UEBERPRUEFUNG"))
Dim oIsReadOnly As Boolean = CBool(oControlRow.Item("READ_ONLY"))
Dim oSaveChangeEnabledFalse As Boolean = CBool(oControlRow.Item("SAVE_CHANGE_ON_ENABLED"))
'Wenn eine Ablehnung aktiv ist und der Index identisch ist, dann skipping
If REJECTION_ACTIVE = True And (oIndexName = PROFIL_REJECT_ACTIONS_ATTRIBUTE Or oIndexName = PROFIL_REJECT_COMMENT_ATTRIBUTE) Then
ValidatorLogger.Debug($"Index [{oIndexName}] will be skipped as Rejection is in progress!")
Continue For
End If
'Readonly felder werden über finale indexe gefüllt, nicht mit SetControlData
If oIsReadOnly = True And oSaveChangeEnabledFalse = False Then
ValidatorLogger.Debug($"Skipping ReadOnly ControlName [{oDBControlName}] !")
Continue For
End If
Dim oControlType As String = oControlRow.Item("CTRL_TYPE")
Dim oIDBTyp As Integer
If IDB_ACTIVE Then
oIDBTyp = oControlRow.Item("IDB_TYP")
End If
oControlId = oControlRow.Item("GUID")
Dim oRegexMatch As String = ObjectEx.NotNull(oControlRow.Item("REGEX_MATCH"), String.Empty)
Dim oRegexMessage As String = ObjectEx.NotNull(oControlRow.Item("REGEX_MESSAGE_DE"), String.Empty)
oControlName = oControlRow.Item("CTRL_NAME")
Dim oOVERWRITE_DATA = oControlRow.Item("OVERWRITE_DATA")
'Nur wenn der Name der Zeile entspricht und der Index READ_ONLY FALSE ist
If oDBControlName = oControl.Name And oIndexName <> "DD PM-ONLY FOR DISPLAY" Then
ValidatorLogger.Debug("Indexierung für Control (" & oControlId & ") '" & oControlName & "' gestartet. Indexname '" & oIndexName & "'")
If oIndexName = "" Then
ValidatorLogger.Info(" >> Indexname is unexpected empty.")
Continue For
End If
Select Case True
Case oControl.GetType = GetType(LookupControl3)
Try
Dim lookup As LookupControl3 = oControl
If lookup.Properties.SelectedValues.Count = 0 And oIsRequired = True Then
oMissing = True
oErrMsgMissingInput = $"Kein Auswahl getroffen in LookupGrid '{oControl.Name}'"
ValidatorLogger.Warn($"Kein Auswahl getroffen in LookupGrid '{oControl.Name}'")
oControl.BackColor = Color.Red
Exit For
Else
If lookup.Properties.MultiSelect = True Then
Dim oLookupRows As Integer = lookup.Properties.SelectedValues.Count
'Wenn kein Wert ausgewählt wurde und der Index aber gesetzt werden muss
If oLookupRows > 0 Then
Dim ZeilenGrid As Integer = 0
Dim myVektorArr As String()
'Jeden Werte des Datagridviews durchlaufen
For Each value As String In lookup.Properties.SelectedValues
If value Is Nothing = False Then
'Das Array anpassen
ReDim Preserve myVektorArr(ZeilenGrid)
'Den Wert im Array speichern
myVektorArr(ZeilenGrid) = value
ZeilenGrid += 1
End If
Next
If IDB_ACTIVE = False Then
If Indexiere_File(CURRENT_WMFILE, oIndexName, myVektorArr) = False Then
oMissing = True
oErrMsgMissingInput = "Error while indexing von LookupGrid - ERROR: " & idxerr_message
ValidatorLogger.Warn($"Error while indexing [{oIndexName}] von LookupGrid - ERROR: " & idxerr_message)
Exit For
End If
Else
Dim oMyDT = DT_FOR_ARRAY(myVektorArr)
If IDBData.SetVariableValue(oIndexName, oMyDT, oOVERWRITE_DATA, oIDBTyp) = False Then
oMissing = True
oErrMsgMissingInput = "Error while indexing IDB-Object LookupGrid"
ValidatorLogger.Warn($"Error while indexing IDB-Object LookupGrid [{oIndexName}] ")
Exit For
End If
End If
Else
Dim oValues As New List(Of Object) From {String.Empty}
If IDB_ACTIVE = False Then
If Indexiere_File(CURRENT_WMFILE, oIndexName, oValues.ToArray) = False Then
oMissing = True
oErrMsgMissingInput = "Error while indexing von LookupGrid - ERROR: " & idxerr_message
ValidatorLogger.Warn($"Error while indexing LookupGrid [{oIndexName}] ")
Exit For
End If
Else
For Each ochangedLookub In listChangedLookup
If lookup.Name = ochangedLookub Then
IDBData.Delete_AttributeData(CURRENT_DOC_ID, oIndexName)
Exit For
End If
Next
End If
End If
Else
oMyInput = lookup.Properties.SelectedValues.FirstOrDefault()
If IsNothing(oMyInput) And oIsRequired = True Then
oMissing = True
oErrMsgMissingInput = $"Could not get FirstOrDefault-Value of LookUpGrid! - LookUPGridName: {lookup.Name}"
ValidatorLogger.Warn(oErrMsgMissingInput)
Exit For
ElseIf IsNothing(oMyInput) And oIsRequired = False Then
For Each ochangedLookub In listChangedLookup
If lookup.Name = ochangedLookub Then
IDBData.Delete_AttributeData(CURRENT_DOC_ID, oIndexName)
Exit For
End If
Next
Continue For
End If
'den aktuellen Wert in windream auslesen
Dim oValueFromObject
If oIndexName.StartsWith("[%VKT") Then
oValueFromObject = ReturnVektor_IndexValue(oIndexName)
Else
oValueFromObject = GetVariableValuefromSource(oIndexName, oIDBTyp)
Dim oValueIsIndifferent As Boolean = False
If Not IsNothing(oValueFromObject) Then
If IDB_ACTIVE = False Then
If oValueFromObject.ToString = "System.Object[]" Then
If oValueFromObject.Length = 1 Then
oValueFromObject = oValueFromObject(0)
Else '
ValidatorLogger.Info(" >> Vectorfield " & oIndexName & "' contains more then one value - First value will be used")
oValueFromObject = oValueFromObject(0)
End If
End If
End If
Else
oValueFromObject = ""
End If
If IsNothing(oValueFromObject) Then
ValidatorLogger.Debug($"CheckUpdateIndex.LookUpGrid: oValueFromObject is NOTHING!")
oValueIsIndifferent = True
End If
If oValueIsIndifferent = False Then
If IsDBNull(oValueFromObject) Then
ValidatorLogger.Debug($"CheckUpdateIndex.LookUpGrid: oValueFromObject is DBNULL!")
oValueIsIndifferent = True
End If
End If
Dim oValueSourceIsDifferent As Boolean = False
If oValueIsIndifferent = False Then
ValidatorLogger.Debug($"CheckUpdateIndex.LookUpGrid: oValueFromObject is [{oValueFromObject}]")
Try
If oValueFromObject <> oMyInput Then
oValueSourceIsDifferent = True
ValidatorLogger.Debug($"CheckUpdateIndex.LookUpGrid: There is a difference between oValueFromObject and [{oValueFromObject}]")
End If
Catch ex As Exception
oValueSourceIsDifferent = True
ValidatorLogger.Debug($"oValueFromObject <> oMyInput not possible as one object might be a multiple row object")
End Try
Else
End If
'wenn Wert in Windream <> der Eingabe darf indexiert werden
'IsNothing(oValueFromObject) Or oValueFromObject <> oMyInput
If (oValueIsIndifferent = True Or oValueSourceIsDifferent = True) Then
'Wenn der Wert in ein Vektorfeld geschrieben wird
If oIndexName.StartsWith("[%VKT") Then
oMyInput = Return_PM_VEKTOR(oMyInput, oIndexName)
'Hier muss nun separat as Vektorfeld indexiert werden
If WMIndexVectofield(oMyInput, PROFIL_VEKTORINDEX) = True Then
oMissing = True
oErrMsgMissingInput = "Error while indexing Textbox as VEKTOR - ERROR: " & idxerr_message
ValidatorLogger.Warn(oErrMsgMissingInput)
Exit For
End If
Else
If IDB_ACTIVE = False Then
Dim result() As String
ReDim Preserve result(0)
result(0) = oMyInput
If Indexiere_File(CURRENT_WMFILE, oIndexName, result) = False Then
oMissing = True
oErrMsgMissingInput = "Error while indexing Textbox - ERROR: " & idxerr_message
ValidatorLogger.Warn(oErrMsgMissingInput)
Exit For
End If
Else
If IDBData.SetVariableValue(oIndexName, oMyInput) = False Then
Exit For
End If
End If
If IDB_ACTIVE = False Then
If PROFIL_LOGINDEX <> "" Then
Dim oLogStr = Return_LOGString(oMyInput, oValueFromObject, oIndexName)
WMIndexVectofield(oLogStr, PROFIL_LOGINDEX)
'Else
' IDBData.SetVariableValue(PROFIL_LOGINDEX, oLogStr)
End If
End If
'Nun das Logging
End If
End If
End If
End If
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
Case oControl.GetType = GetType(DevExpress.XtraEditors.TextEdit) Or oControl.GetType = GetType(MemoEdit)
Try
'Dim oWrongInputMessage = ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO("frmValidator.WrongInputControl")
Dim oWrongInputMessage = S.Falsche_Eingabe
ValidatorLogger.Debug("Validating Textbox..")
If oRegexMatch <> String.Empty AndAlso Not Regex.IsMatch(oControl.Text, oRegexMatch) Then
oMissing = True
oErrMsgMissingInput = oWrongInputMessage & " textbox '" & oControl.Name & "'"
ValidatorLogger.Warn(oErrMsgMissingInput)
If oRegexMessage <> String.Empty Then
oErrMsgMissingInput &= ":" & vbCrLf & oRegexMessage
End If
oControl.BackColor = Color.Red
Exit For
End If
'as erstes überprüfen ob überhaupt etwas eingetragen worden ist
If Check_Missing_Control_Value(oControl, "txt") = True And oIsRequired = True Then 'NICHTS EINGETRAGEN
oMissing = True
oErrMsgMissingInput = oWrongInputMessage & " textbox '" & oControl.Name & "'"
ValidatorLogger.Warn(oErrMsgMissingInput)
oControl.BackColor = Color.Red
Exit For
Else
ValidatorLogger.Debug("Reading current value from Textbox")
Dim oTextEdit As BaseEdit = DirectCast(oControl, BaseEdit)
oMyInput = ClassFormat.GetStringValue(oTextEdit.EditValue)
ValidatorLogger.Debug("Form Value: [{0}]", oMyInput)
'den aktuellen Wert in windream auslesen
Dim oSourceValue = GetVariableValuefromSource(oIndexName, oIDBTyp)
ValidatorLogger.Debug("Current Value: [{0}]", oSourceValue)
If oIndexName.StartsWith("[%VKT") Then
oSourceValue = ReturnVektor_IndexValue(oIndexName)
Else
'wertWD = CURRENT_WMFILE.GetVariableValue(oIndexName)
If Not IsNothing(oSourceValue) Then
If oSourceValue.ToString = "System.Object[]" Then
If oSourceValue.Length = 1 Then
oSourceValue = oSourceValue(0)
Else '
ValidatorLogger.Info(" >> Vectorfield " & oIndexName & "' contains more then one value - First value will be used")
oSourceValue = oSourceValue(0)
End If
End If
Else
oSourceValue = ""
End If
End If
Dim oSetValue As Boolean = False
If IsDBNull(oSourceValue) Then
oSetValue = True
End If
If oSetValue = False Then
If IsNothing(oSourceValue) Then
oSetValue = True
End If
End If
If oSetValue = False Then
Try
If oSourceValue <> oMyInput Then
oSetValue = True
End If
Catch ex As Exception
oSetValue = True
End Try
End If
ValidatorLogger.Debug("Preparing Indexing for Textbox")
'wenn Wert in Windream <> der Eingabe darf indexiert werden
If oSetValue = True Then
'Wenn der Wert in ein Vektorfeld geschrieben wird
If oIndexName.StartsWith("[%VKT") Then
oMyInput = Return_PM_VEKTOR(oMyInput, oIndexName)
'Hier muss nun separat as Vektorfeld indexiert werden
If WMIndexVectofield(oMyInput, PROFIL_VEKTORINDEX) = True Then
oMissing = True
oErrMsgMissingInput = "Error while indexing textbox as VEKTOR - ERROR: " & idxerr_message
ValidatorLogger.Warn(oErrMsgMissingInput)
Exit For
End If
Else
If IDB_ACTIVE = False Then
Dim result() As String
ReDim Preserve result(0)
result(0) = oMyInput
ValidatorLogger.Debug("Indexing Index [{0}] with value [{1}]", oMyInput, oIndexName)
If Indexiere_File(CURRENT_WMFILE, oIndexName, result) = False Then
oMissing = True
oErrMsgMissingInput = "Error while indexing Textbox - ERROR: " & idxerr_message
ValidatorLogger.Warn(oErrMsgMissingInput)
Exit For
End If
Else
If IDBData.SetVariableValue(oIndexName, oMyInput) = False Then
Exit For
End If
End If
If IDB_ACTIVE = False Then
If PROFIL_LOGINDEX <> "" Then
Dim oMyLogString = Return_LOGString(oMyInput, oSourceValue, oIndexName)
WMIndexVectofield(oMyLogString, PROFIL_LOGINDEX)
'Else
'IDBData.SetVariableValue(PROFIL_LOGINDEX, oMyLogString)
End If
End If
End If
End If
End If
Catch ex As Exception
oErrMsgMissingInput = "Unexpected error in Check_UpdateIndexe TextBox '" & oControl.Name & "' - Check the log"
ValidatorLogger.Error(ex)
Dim st As New StackTrace(True)
st = New StackTrace(ex, True)
ValidatorLogger.Warn("Unexpected error in Check_UpdateIndexe TextBox :" & ex.Message, True)
Return False
End Try
Case oControl.GetType = GetType(System.Windows.Forms.ComboBox)
Try
ValidatorLogger.Debug($"Working on Combobox...")
Dim cmb As Windows.Forms.ComboBox = oControl
'Wenn kein Wert ausgewählt wurde und der Index aber gesetzt werden muss
If cmb.SelectedIndex = -1 And oIsRequired = True Then
oMissing = True
oErrMsgMissingInput = "Please Choose an entry out of ComboBox '" & cmb.Name & "'"
ValidatorLogger.Warn(oErrMsgMissingInput)
Exit For
'ElseIf cmb.SelectedIndex <> -1 Then
Else 'Änderung 28.08.2018: Ein leerer Wert in der Combobox wird in den Index geschrieben
oMyInput = cmb.Text
ValidatorLogger.Debug($"inputvalue Combobox: {cmb.Text}")
Dim oValue
'den aktuellen Wert in windream auslesen
If oIndexName.StartsWith("[%VKT") Then
oValue = ReturnVektor_IndexValue(oIndexName)
Else
oValue = GetVariableValuefromSource(oIndexName, oIDBTyp)
End If
If IsNothing(oValue) Then
ValidatorLogger.Debug($"oValue is nothing...Value EmptyString will be used")
oValue = String.Empty
End If
Dim oIndexType As String = "Index"
Try
If oValue.ToString = "System.Object[]" Then
oIndexType = "Vector"
End If
Catch ex As Exception
ValidatorLogger.Debug($"Exception while oValue.ToString = System.Object[]...")
End Try
If oIndexType = "Vector" Then
ValidatorLogger.Debug($"Control with ID{oControlId} is a vectorfield...")
If oValue.Length = 1 Then
oValue = oValue(0).ToString
Else '
ValidatorLogger.Info(" >> Vectorfield " & oIndexName & "' contains more then one value - First value will be used")
oValue = oValue(0).ToString
End If
Else
ValidatorLogger.Debug($"oValue is a regular item...")
Dim oitsadifference As Boolean = False
Try
If oValue.ToString <> oMyInput.ToString Then
oitsadifference = True
End If
Catch ex As Exception
ValidatorLogger.Warn($"Could not convert the oValue of Control with ID{oControlId}...")
ValidatorLogger.Error(ex.Message)
oitsadifference = True
End Try
'wenn Wert in Windream <> der Eingabe darf indexiert werden
If oitsadifference = True Then
ValidatorLogger.Debug($"Index with ID{oControlId} will now be indexed...")
'Wenn der Wert in ein Vektorfeld geschrieben wird
If oIndexName.StartsWith("[%VKT") Then
oMyInput = Return_PM_VEKTOR(oMyInput, oIndexName)
'Hier muss nun separat as Vektorfeld indexiert werden
If WMIndexVectofield(oMyInput, PROFIL_VEKTORINDEX) = True Then
oMissing = True
oErrMsgMissingInput = "Error while indexing Combobox as VEKTOR - ERROR: " & idxerr_message
ValidatorLogger.Warn(oErrMsgMissingInput)
Exit For
End If
Else
If IDB_ACTIVE = False Then
Dim result() As String
ReDim Preserve result(0)
result(0) = oMyInput
If Indexiere_File(CURRENT_WMFILE, oIndexName, result) = False Then
cmb.DroppedDown = True
oMissing = True
oErrMsgMissingInput = "Error while indexing Combobox - ERROR: " & idxerr_message
ValidatorLogger.Warn(oErrMsgMissingInput)
Exit For
End If
Else
If IDBData.SetVariableValue(oIndexName, oMyInput) = False Then
cmb.DroppedDown = True
oMissing = True
oErrMsgMissingInput = "Error indexing combobox idb"
ValidatorLogger.Warn(oErrMsgMissingInput)
Exit For
End If
End If
If IDB_ACTIVE = False Then
If PROFIL_LOGINDEX <> "" Then
Dim ologStr = Return_LOGString(oMyInput, oValue, oIndexName)
WMIndexVectofield(ologStr, PROFIL_LOGINDEX)
'Else
'IDBData.SetVariableValue(PROFIL_LOGINDEX, ologStr)
End If
End If
'Nun das Logging
End If
Else
ValidatorLogger.Debug($"oitsadifference = False...Index with ID {oControlId} will not be indexed...")
'Wenn der Wert in ein Vektorfeld geschrieben wird
End If
End If
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
Dim st As New StackTrace(True)
st = New StackTrace(ex, True)
MsgBox($"Unexpected error in Check_UpdateIndexe Combobox : ID{oControlId} " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Error:")
ValidatorLogger.Info($"Unexpected error in Check_UpdateIndexe Combobox : ID{oControlId}" & ex.Message)
Return False
End Try
Case oControl.GetType = GetType(DateTimePicker)
Try
Dim dtp As DateTimePicker = oControl
'Wenn kein Wert ausgewählt wurde und der Index aber gesetzt werden muss
If oIsRequired = True And dtp.Value.ToString = String.Empty Then
oMissing = True
oErrMsgMissingInput = "Please Choose DateValue for field'" & dtp.Name & "'"
ValidatorLogger.Warn(oErrMsgMissingInput)
Exit For
ElseIf dtp.Value.ToString <> "01.01.0001 00:00:00" Then
oMyInput = CDate(dtp.Value)
'den aktuellen Wert in windream auslesen
' Dim wertWD As String = CURRENT_WMFILE.GetVariableValue(_IDXName)
Dim oObjectValue
If oIndexName.StartsWith("[%VKT") Then
oObjectValue = ReturnVektor_IndexValue(oIndexName)
Else
oObjectValue = GetVariableValuefromSource(oIndexName, oIDBTyp)
End If
If IsNothing(oObjectValue) Or IsDBNull(oObjectValue) Then
oObjectValue = CDate("01.01.1900")
End If
'wenn Wert in Windream <> der Eingabe darf indexiert werden
If oObjectValue <> oMyInput Then
'Wenn der WErt in ein Vektorfeld geschrieben wird
If oIndexName.StartsWith("[%VKT") Then
'Input = die String komponente as String
oMyInput = Return_PM_VEKTOR(oMyInput, oIndexName)
'Hier muss nun separat as Vektorfeld indexiert werden
If WMIndexVectofield(oMyInput, PROFIL_VEKTORINDEX) = True Then
oMissing = True
oErrMsgMissingInput = "Error while indexing DatePicker as VEKTOR - ERROR: " & idxerr_message
ValidatorLogger.Warn(oErrMsgMissingInput)
Exit For
End If
Else
If IDB_ACTIVE = False Then
Dim result()
ReDim Preserve result(0)
result(0) = CDate(oMyInput)
If Indexiere_File(CURRENT_WMFILE, oIndexName, result) = False Then
oMissing = True
oErrMsgMissingInput = "Error while indexing DatePicker- ERROR: " & idxerr_message
ValidatorLogger.Warn(oErrMsgMissingInput)
Exit For
End If
Else
If IDBData.SetVariableValue(oIndexName, oMyInput) = False Then
oMissing = True
oErrMsgMissingInput = "Error indexing datepicker idb"
ValidatorLogger.Warn(oErrMsgMissingInput)
Exit For
End If
End If
If IDB_ACTIVE = False Then
If PROFIL_LOGINDEX <> "" Then
Dim oLogstr = Return_LOGString(oMyInput, oObjectValue, oIndexName)
WMIndexVectofield(oLogstr, PROFIL_LOGINDEX)
'Else
'IDBData.SetVariableValue(PROFIL_LOGINDEX, oLogstr)
End If
End If
End If
Else
ValidatorLogger.Debug("Value WD ('" & oObjectValue.ToString & "') = Input-value ('" & oMyInput.ToString & "')")
End If
Else
ValidatorLogger.Debug("DateValue is 01.01.0001 00:00:00")
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
Case oControl.GetType = GetType(CheckBox)
Try
Dim chk As CheckBox = oControl
oMyInput = chk.Checked.ToString
If chk.CheckState = CheckState.Indeterminate And oIsRequired = True Then
oMissing = True
oErrMsgMissingInput = "Please set Checkbox value for field '" & chk.Name & "'"
ValidatorLogger.Warn(oErrMsgMissingInput)
Exit For
End If
'den aktuellen Wert in windream auslesen
Dim WertWD As String
Dim oBoolValue As Boolean
If oIndexName.StartsWith("[%VKT") Then
WertWD = ReturnVektor_IndexValue(oIndexName)
If WertWD = "" Then
oBoolValue = False
Else
oBoolValue = CBool(WertWD)
End If
Else
Dim _Value
Dim oObjectCheck = GetVariableValuefromSource(oIndexName, oIDBTyp)
If IsNothing(oObjectCheck) Or IsDBNull(oObjectCheck) Then
oBoolValue = False
Else
If oObjectCheck.ToString = "System.Object[]" Then
If oObjectCheck.Length = 1 Then
_Value = oObjectCheck(0)
Else '
ValidatorLogger.Info(" >> Vectorfield " & oIndexName & "' contains more then one value - First value will be used")
_Value = oObjectCheck(0)
End If
Else
_Value = oObjectCheck
End If
oBoolValue = CBool(_Value)
End If
End If
' Dim Bool_WD = CBool(CURRENT_WMFILE.GetVariableValue(_IDXName))
'wenn Wert in Windream <> der Eingabe darf indexiert werden
If oBoolValue <> chk.Checked Then
Dim result() As String
ReDim Preserve result(0)
If chk.Checked Then
result(0) = 1
Else
result(0) = 0
End If
If oIndexName.StartsWith("[%VKT") Then
'Input = die String komponente mit Boolean as String
oMyInput = Return_PM_VEKTOR(chk.Checked.ToString, oIndexName)
'Hier muss nun separat as Vektorfeld indexiert werden
If WMIndexVectofield(oMyInput, PROFIL_VEKTORINDEX) = True Then
oMissing = True
oErrMsgMissingInput = "Error while indexing Checkbox as VEKTOR - ERROR: " & idxerr_message
ValidatorLogger.Warn(oErrMsgMissingInput)
Exit For
End If
Else
If IDB_ACTIVE = False Then
If Indexiere_File(CURRENT_WMFILE, oIndexName, result) = False Then
oMissing = True
oErrMsgMissingInput = "Error while indexing Checkbox - ERROR: " & idxerr_message
ValidatorLogger.Warn(oErrMsgMissingInput)
Exit For
End If
Else
If IDBData.SetVariableValue(oIndexName, chk.Checked.ToString) Then
oErrMsgMissingInput = "error indexing checkboxidb"
Exit For
End If
End If
If IDB_ACTIVE = False Then
If PROFIL_LOGINDEX <> "" Then
Dim oLogstr = Return_LOGString(CBool(result(0)).ToString, WertWD, oIndexName)
WMIndexVectofield(oLogstr, PROFIL_LOGINDEX)
'Else
'IDBData.SetVariableValue(PROFIL_LOGINDEX, oLogstr)
End If
End If
End If
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
Case oControl.GetType = GetType(DataGridView)
Try
Dim dgv As DataGridView = oControl
Dim Zeilen As Integer = 0
For Each row As DataGridViewRow In dgv.Rows
Dim exists = False
' MsgBox(row.Cells(0).Value.GetType.ToString)
If row.Cells(0).Value Is Nothing = False Then
Zeilen += 1
End If
Next
'Wenn kein Wert ausgewählt wurde und der Index aber gesetzt werden muss
If oIsRequired = True And Zeilen = 0 Then
oMissing = True
oErrMsgMissingInput = "Fehlende Eingabe in Vektorfeld '" & dgv.Name & "'"
ValidatorLogger.Warn(oErrMsgMissingInput)
Exit For
ElseIf Zeilen > 0 Then
Dim ZeilenGrid As Integer = 0
Dim myVektorArr As String()
'Jeden Werte des Datagridviews durchlaufen
For Each row As DataGridViewRow In dgv.Rows
Dim exists = False
Select Case oControlType
Case "TABLE"
' MsgBox(row.Cells(0).Value.GetType.ToString)
Dim str As String
If row.Cells(0).Value Is Nothing = False Then
'Das Array anpassen
ReDim Preserve myVektorArr(ZeilenGrid)
For i = 0 To row.Cells.Count - 1
Select Case i
Case 0
str = row.Cells(i).Value
Case Else
str = str & PMDelimiter & row.Cells(i).Value
End Select
Next
'Den Wert im Array speichern
myVektorArr(ZeilenGrid) = str
ZeilenGrid += 1
End If
Case Else
' MsgBox(row.Cells(0).Value.GetType.ToString)
If row.Cells(0).Value Is Nothing = False Then
'Das Array anpassen
ReDim Preserve myVektorArr(ZeilenGrid)
'Den Wert im Array speichern
myVektorArr(ZeilenGrid) = row.Cells(0).Value.ToString
ZeilenGrid += 1
End If
End Select
Next
If IDB_ACTIVE = False Then
If Indexiere_File(CURRENT_WMFILE, oIndexName, myVektorArr) = False Then
oMissing = True
oErrMsgMissingInput = "Error while indexing Vektorfeld - ERROR: " & idxerr_message
ValidatorLogger.Warn(oErrMsgMissingInput)
Exit For
End If
Else
Dim oDT As DataTable = DT_FOR_ARRAY(myVektorArr)
If oDT.Rows.Count > 0 Then
If IDBData.SetVariableValue(oIndexName, oDT, True) = False Then
oMissing = True
oErrMsgMissingInput = "Error indexing Datagridview idb"
ValidatorLogger.Warn(oErrMsgMissingInput)
Exit For
End If
End If
End If
'Jetzt die Datei indexieren
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
Case oControl.GetType = GetType(GridControl)
Dim oGrid As GridControl = oControl
Dim oSettings = New ControlSettings() With {
.IndexName = oIndexName,
.ControlType = GetType(GridControl).ToString,
.Name = oControlName,
.IsRequired = oIsRequired,
.IDBAttributeType = oIDBTyp
}
Dim oGridColumnDefinition As DataTable = DT_COLUMNS_GRID.Clone()
Dim oExpression = $"CONTROL_ID = {oControlRow.Item("GUID")}"
DT_COLUMNS_GRID.Select(oExpression, "SEQUENCE").CopyToDataTable(oGridColumnDefinition, LoadOption.PreserveChanges)
Dim oResult = ValidateGridControl(oGrid, oSettings, oGridColumnDefinition, oMissing, oErrMsgMissingInput)
If oResult = False Then
Exit For
End If
End Select
End If 'End If für Control und ReadOnly = False
Next
' If Error happened in inner For, exit the outer as well
If oMissing = True Then
ValidatorLogger.Info("oMissing = True...Exiting")
Exit For
End If
Next
If oMissing = True Then
ValidatorLogger.Warn("Check_UpdateIndexe: ERROR or Missing Indexing - returning False")
Return False
Else
ValidatorLogger.Debug("Check_UpdateIndexe: Everything OK - returning True")
Return True
End If
Catch ex As Exception
ValidatorLogger.Warn($"Unexpected error in Check_UpdateIndexe - ControlID: {oControlId},{oControlName}")
ValidatorLogger.Error(ex)
Dim st As New StackTrace(ex, True)
MsgBox($"Unexpected error in Check_UpdateIndexe ControlID,Name: {oControlId},{oControlName}" & vbNewLine & ex.Message & vbNewLine & "Line: " & st.GetFrame(0).GetFileLineNumber().ToString, MsgBoxStyle.Critical, "Error:")
ValidatorLogger.Info("Unexpected error in Check_UpdateIndexe:" & ex.Message & " - Line: " & st.GetFrame(0).GetFileLineNumber().ToString, True)
Return False
End Try
End Function
Private Class ControlSettings
Public Name As String
Public IsRequired As Boolean
Public IndexName As String
Public ControlType As String
Public IDBAttributeType As Integer
End Class
Private Function ValidateGridControl(pGrid As GridControl, pSettings As ControlSettings, pColumnDefinition As DataTable, ByRef pMissing As Boolean, ByRef pMissingMessage As String) As Boolean
Try
Dim oRowCount As Integer = pGrid.DataSource.Rows.Count
ValidatorLogger.Debug("Grid Row Count: [{0}]", oRowCount)
'Wenn kein Wert ausgewählt wurde und der Index aber gesetzt werden muss
If pSettings.IsRequired = True And oRowCount = 0 Then
pMissing = True
pMissingMessage = "Fehlende Eingabe in Tabelle '" & pGrid.Name & "'"
pGrid.BackColor = Color.Red
ValidatorLogger.Warn(pMissingMessage)
'Exit For
Return False
End If
If oRowCount > 0 Then
Dim oView As GridView = pGrid.FocusedView
Dim oDatasource As DataTable = pGrid.DataSource
Dim oRowIndex As Integer = 0
For Each oRow As DataRow In oDatasource.Rows
For Each oColumn As DataColumn In oRow.Table.Columns
Dim oValue = oRow.ItemEx(oColumn.ColumnName, "")
Dim oDefinition = pColumnDefinition.AsEnumerable().
Where(Function(row) row.Item("SPALTENNAME") = oColumn.ColumnName).
FirstOrDefault()
If oDefinition IsNot Nothing Then
Dim oIsRequired = oDefinition.Item("VALIDATION")
If oIsRequired = True And oValue = String.Empty Then
' Translates the visible row index into the internal rowhandle
' they might be different because of sorting
Dim oRowHandle = oView.GetRowHandle(oRowIndex)
oView.FocusedRowHandle = oRowHandle
oView.FocusedColumn = oView.Columns.Item(oColumn.ColumnName)
pMissing = True
pMissingMessage = $"Fehlende Eingabe in Tabelle '{pGrid.Name}' in Spalte '{oDefinition.Item("SPALTEN_HEADER_LANG")}', Zeile '{oRowHandle + 1}'"
Return False
End If
End If
Next
oRowIndex += 1
Next
Dim ZeilenGrid As Integer = 0
Dim myVektorArr As String()
'Jeden Werte des Datagridviews durchlaufen
For Each oRow As DataRow In pGrid.DataSource.Rows
Dim exists = False
Select Case pSettings.ControlType
Case "DevExpress.XtraGrid.GridControl" '"TABLE"
'Dim oRowValue = oRow.Item(0)
'If IsNothing(oRowValue) Then
' oRowValue = String.Empty
'ElseIf IsDBNull(oRowValue) Then
' oRowValue = String.Empty
'End If
' MsgBox(row.Cells(0).Value.GetType.ToString)
Dim str As String = String.Empty
'If oRowValue <> String.Empty Then
'Das Array anpassen
ReDim Preserve myVektorArr(ZeilenGrid)
Dim oValueList As New List(Of String)
For Each oMyItem As Object In oRow.ItemArray
oMyItem = ObjectEx.NotNull(oMyItem, String.Empty)
Dim oType As String = $"Typ: {oMyItem.GetType().FullName}"
' Convert to string using InvariantCulture, so converting back from string does not screw up values
If TypeOf oMyItem IsNot String Then
'oMyItem = String.Format(CultureInfo.InvariantCulture, "{0}", oMyItem)
If TypeOf oMyItem Is Double Then
oMyItem = DirectCast(oMyItem, Double).ToString(CultureInfo.InvariantCulture)
If TypeOf oMyItem Is String Then
oMyItem = oMyItem.ToString.Replace(".", ",")
End If
End If
Else
End If
oValueList.Add(oMyItem)
Next
str = String.Join(PMDelimiter, oValueList.ToArray)
' 22.10.2021 Attempt at fixing empty lines appearing in indexes
ValidatorLogger.Debug("Grid Value before saving: [{0}]", str)
If str.Trim.Length = 0 Or str.Trim.Replace(PMDelimiter, "").Length = 0 Then
ValidatorLogger.Debug("Empty line in Grid [{0}]. Skipping.", pSettings.Name)
Continue For
End If
'Den Wert im Array speichern
myVektorArr(ZeilenGrid) = str
ZeilenGrid += 1
'End If
Case Else
' MsgBox(row.Cells(0).Value.GetType.ToString)
If oRow.Item(0) Is Nothing = False Then
'Das Array anpassen
ReDim Preserve myVektorArr(ZeilenGrid)
'Den Wert im Array speichern
myVektorArr(ZeilenGrid) = oRow.Item(0).Value.ToString
ZeilenGrid += 1
End If
End Select
Next
If IDB_ACTIVE = False Then
If Indexiere_File(CURRENT_WMFILE, pSettings.IndexName, myVektorArr) = False Then
pMissing = True
pMissingMessage = $"Error while indexing table (1) {pGrid.Name} - ERROR: " & idxerr_message
ValidatorLogger.Warn(pMissingMessage)
'Exit For
Return False
End If
Else
Dim oMyDT = DT_FOR_ARRAY(myVektorArr)
If oMyDT.Rows.Count > 0 Then
If IDBData.SetVariableValue(pSettings.IndexName, oMyDT, True, pSettings.IDBAttributeType) = False Then
pMissing = True
pMissingMessage = $"Error while indexing table IDB (1) {pGrid.Name} - ERROR: " & idxerr_message
ValidatorLogger.Warn(pMissingMessage)
'Exit For
Return False
End If
End If
End If
Else ' Row Count = 0
Dim oValue As New List(Of Object) From {String.Empty}
If IDB_ACTIVE = False Then
If Indexiere_File(CURRENT_WMFILE, pSettings.IndexName, oValue.ToArray) = False Then
pMissing = True
'oErrorMessage = "Error while indexing der Tabelle - ERROR: " & idxerr_message
pMissingMessage = $"Error while indexing table (2) {pGrid.Name} - ERROR: " & idxerr_message
ValidatorLogger.Warn(pMissingMessage)
'Exit For
Return False
End If
Else
Dim oOldAttributeResult = IDBData.GetVariableValue(pSettings.IndexName, pSettings.IDBAttributeType)
Dim oTypeOldResult = oOldAttributeResult.GetType.ToString
If oTypeOldResult = "System.Data.DataTable" Then
Dim oDT As DataTable = IDBData.GetVariableValue(pSettings.IndexName, pSettings.IDBAttributeType)
If oDT.Rows.Count > 0 Then
ValidatorLogger.Debug("User cleared the grid, so data needs to be erased!")
IDBData.Delete_AttributeData(CURRENT_DOC_ID, pSettings.IndexName)
End If
Else
ValidatorLogger.Debug("(String) User cleared the grid, so data needs to be erased!")
IDBData.Delete_AttributeData(CURRENT_DOC_ID, pSettings.IndexName)
End If
End If
End If
Return True
Catch ex As Exception
ValidatorLogger.Error(ex)
Return False
End Try
End Function
Private Function Indexiere_File(_dok As WINDREAMLib.WMObject, pIndexName As String, pIndexValues As Object) As Boolean
Dim indexierung_erfolgreich As Boolean = False
idxerr_message = ""
Try
Dim oIndexType As Integer = WINDREAM_MOD.GetIndexType(pIndexName)
If oIndexType > 4095 Then
ValidatorLogger.Debug("Es Handelt sich um einen VektorIndex...")
Dim oExistingItems = WINDREAM_MOD.GetIndexValue(CURRENT_DOC_PATH, pIndexName)
Dim oListofString As New List(Of String)
If pIndexValues.Length = 0 Then
ValidatorLogger.Debug("oSplitArray.Length = 0")
oListofString.Add(pIndexValues(0))
Else
ValidatorLogger.Debug($"pIndexValues.Length is > 0 [{pIndexValues.length}] ...")
For Each oStr In pIndexValues
ValidatorLogger.Debug("pIndexValues - oString : {0}", oStr)
oListofString.Add(oStr)
Next
End If
If oExistingItems.Count > 0 Then
ValidatorLogger.Debug("oOverwrite = False and WMObject already contains [{0}] values in attribute,Values will be concatted", oExistingItems.Count)
oListofString = oExistingItems.Concat(oListofString).ToList()
End If
oListofString = oListofString.Distinct().ToList()
indexierung_erfolgreich = WINDREAM_MOD.SetFileIndexLoS(CURRENT_DOC_PATH, pIndexName, oListofString, CURRENT_WMObjecttype)
Else
Dim oStringValue As String = pIndexValues(0).ToString
indexierung_erfolgreich = WINDREAM_MOD.SetFileIndex(CURRENT_DOC_PATH, pIndexName, oStringValue, CURRENT_WMObjecttype)
End If
Return indexierung_erfolgreich
''Die Arrays vorbereiten
'Dim arrIndex() As String = Nothing
'Dim arrValue() As String = Nothing
'arrIndex = Nothing
'arrValue = Nothing
''Den Indexnamen übergeben
'ReDim Preserve arrIndex(0)
'arrIndex(0) = pIndexName
''Das Array der Idnexwerte überprüfen
'If pIndexValues Is Nothing = False Then
' If pIndexValues.Length() > 1 Then
' ValidatorLogger.Debug("Indexing Index '" & pIndexName & "' with Arrayvalue")
' For Each oValue In pIndexValues
' Try
' ValidatorLogger.Debug("Current Index Value for [{0}] is [{1}]", pIndexName, oValue)
' Catch ex As Exception
' ValidatorLogger.Warn("Current Index Value for [{0}] could not be read!", pIndexName)
' End Try
' Next
' Dim anzahl As Integer = 0
' For Each indexvalue As String In pIndexValues
' ReDim Preserve arrValue(anzahl)
' arrValue(anzahl) = indexvalue
' anzahl += 1
' Next
' Else
' ValidatorLogger.Debug("Indexing Index '" & pIndexName & "' with value '" & pIndexValues(0) & "'")
' ReDim Preserve arrValue(0)
' arrValue(0) = pIndexValues(0).ToString
' End If
' 'Jetzt das eigentliche Indexieren der Datei
' 'File_indexiert = Me._windreamPM.RunIndexing(_dok, arrIndex, arrValue)
' indexierung_erfolgreich = WINDREAM.RunIndexing(_dok, arrIndex, arrValue)
'Return indexierung_erfolgreich
'End If
Catch ex As Exception
ValidatorLogger.Error(ex)
idxerr_message = "Unexpected error in Indexiere_File: " & ex.Message.ToString
ValidatorLogger.Info("Unexpected error in Indexiere_File: " & ex.Message.ToString, True)
Return False
End Try
End Function
Private Sub btnfinal_Click(sender As System.Object, e As System.EventArgs)
Finish_WFStep()
End Sub
Sub Datei_ueberspringen()
Try
ValidatorLogger.Debug("Skipping document....(Datei_ueberspringen)")
'Das Dokument freigeben
'PRTF_PROFILE_FILES_WORK("FreeFile")
Dim sql = $"UPDATE TBPM_PROFILE_FILES Set IN_WORK = 0, IN_WORK_WHEN = NULL, WORK_USER = NULL WHERE GUID = {CURRENT_DOC_GUID}"
DatabaseFallback.ExecuteNonQueryECM(sql)
Dim oSQL = $"EXECUTE PRPM_FILES_NOT_INDEXED '{USER_USERNAME}',{CURRENT_ProfilGUID},'{WMDocPathWindows}',{CURRENT_DOC_GUID}"
DatabaseFallback.ExecuteNonQueryECM(oSQL)
ValidatorLogger.Debug($"Skipped DocGUID {CURRENT_DOC_GUID}")
Load_Next_Document(False)
Catch ex As Exception
ValidatorLogger.Error(ex)
MsgBox("Fehler bei Überspringen:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
Private Function PRTF_PROFILE_FILES_WORK(ByVal pMode As String) As Boolean
Try
Dim sql = $"EXEC PRTF_PROFILE_FILES_WORK {CURRENT_DOC_ID},{CURRENT_ProfilGUID},{USER_ID},'{pMode}'"
Return DatabaseFallback.ExecuteNonQueryECM(sql)
Catch ex As Exception
ValidatorLogger.Error(ex)
Return False
End Try
End Function
Private Sub delete_active_File()
Try
Dim result As MsgBoxResult
result = MessageBox.Show("Sind Sie sicher dass Sie dieses Dokument unwiderruflich löschen wollen?" & vbNewLine & "Danach wird die nächste Datei angezeigt!", "Bestätigung erforderlich:", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If result = MsgBoxResult.Yes Then
Try
DocumentViewerValidator.CloseDocument()
DocumentViewerValidator.Done()
Catch ex As Exception
ValidatorLogger.Warn($"Unexpected error in delete_active_File DocumentViewerValidator.Done: {ex.Message}")
End Try
Thread.Sleep(500)
Application.DoEvents()
FreeFile()
'Aus der Tabelle löschen
Dim oDelete = $"DELETE FROM TBPM_PROFILE_FILES WHERE GUID = {CURRENT_DOC_GUID}"
If DatabaseFallback.ExecuteNonQueryECM(oDelete) = True Then
Dim oDeleteResult As Boolean = False
If IDB_ACTIVE = False Then
oDeleteResult = Delete_WMFile()
End If
If oDeleteResult = True Then
Load_Next_Document(False)
End If
End If
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
MsgBox("Fehler bei Löschen windream-Datei:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
Private Function Delete_WMFile()
Try
If CURRENT_WMFILE Is Nothing = False Then
'Close_document_viewer()
'Me.PdfViewer1.DocumentFilePath = ""
Try
If CURRENT_WMFILE.aLocked Then
' unlock the windream object
CURRENT_WMFILE.unlock()
ValidatorLogger.Debug("## Delete_WMFile WMFile unlocked! ##")
End If
Try
CURRENT_WMFILE.Delete()
ValidatorLogger.Info("Manual deleting of file [" & CURRENT_WMFILE.aName & "] successfull!")
Return True
Catch ex As Exception
ValidatorLogger.Warn($"Could not delete via windream-function - ERROR: [{ex.Message}] {vbNewLine} Trying system.io...")
Try
Try
CURRENT_WMFILE.unlock()
Catch exul As Exception
ValidatorLogger.Warn($"Could not unlock WMFile - ERROR: [{exul.Message}] - now teh system.io.Delete...")
End Try
WMDocPathWindows = ""
CURRENT_DOC_PATH = ""
CURRENT_WMFILE = Nothing
File.Delete(WMDocPathWindows)
ValidatorLogger.Info("Deleting of file via system.io [" & WMDocPathWindows & "] successfull!")
Return True
Catch ex1 As Exception
ValidatorLogger.Warn($"Could not delete via System.IO - ERROR: [{ex1.Message}] {vbNewLine} Trying system.io...")
Return False
End Try
End Try
Catch ex As Exception
ValidatorLogger.Error(ex)
MsgBox("Das windream-Objekt konnte nicht gelöscht werden!" & vbNewLine & vbNewLine & "Fehlermeldung:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
ValidatorLogger.Info(" windream-Objekt konnte nicht gelöscht werden - Fehlermeldung: " & ex.Message, True)
Return False
End Try
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
ValidatorLogger.Info("Fehler bei Delete_File")
ValidatorLogger.Info(">> Fehlermeldung: " & ex.Message)
Return False
End Try
End Function
Private Const SEE_MASK_INVOKEIDLIST = &HC
Private Const SEE_MASK_NOCLOSEPROCESS = &H40
Private Const SEE_MASK_FLAG_NO_UI = &H400
Public Const SW_SHOW As Short = 5
<DllImport("Shell32", CharSet:=CharSet.Auto, SetLastError:=True)>
Public Shared Function ShellExecuteEx(ByRef lpExecInfo As SHELLEXECUTEINFO) As Boolean
End Function
Public Structure SHELLEXECUTEINFO
Public cbSize As Integer
Public fMask As Integer
Public hwnd As IntPtr
<MarshalAs(UnmanagedType.LPTStr)> Public lpVerb As String
<MarshalAs(UnmanagedType.LPTStr)> Public lpFile As String
<MarshalAs(UnmanagedType.LPTStr)> Public lpParameters As String
<MarshalAs(UnmanagedType.LPTStr)> Public lpDirectory As String
Dim nShow As Integer
Dim hInstApp As IntPtr
Dim lpIDList As IntPtr
<MarshalAs(UnmanagedType.LPTStr)> Public lpClass As String
Public hkeyClass As IntPtr
Public dwHotKey As Integer
Public hIcon As IntPtr
Public hProcess As IntPtr
End Structure
Private Sub frmValidation_ResizeEnd(sender As Object, e As EventArgs) Handles Me.ResizeEnd
If WMDocPathWindows Is Nothing = False Then
My.Settings.frmValidatorSize = Me.Size
My.Settings.Save()
End If
End Sub
Private Sub Splitter1_LocationChanged(sender As Object, e As EventArgs)
My.Settings.Save()
End Sub
Private Sub frmValidator_KeyUp(sender As Object, e As KeyEventArgs) Handles MyBase.KeyUp
If e.KeyCode = Keys.F4 Then
Datei_ueberspringen()
ElseIf e.KeyCode = Keys.F2 Then
If USER_GHOST_MODE_ACTIVE Then
Exit Sub
End If
btnSave.Enabled = False
Finish_WFStep()
btnSave.Enabled = True
End If
End Sub
Private Sub frmValidator_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
End Sub
Private Sub frmValidator_Resize(sender As Object, e As EventArgs) Handles Me.Resize
If _FormLoaded = False Then
Exit Sub
End If
If WindowState = FormWindowState.Maximized Then
My.Settings.frmValidatorWindowState = "Maximized"
ElseIf WindowState = FormWindowState.Normal Then
My.Settings.frmValidatorWindowState = "Normal"
End If
My.Settings.Save()
End Sub
Private Sub btnSave_MouseHover(sender As Object, e As EventArgs)
'Dim oMsg = ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO("F2forSave")
ToolTip1.Show(S.F2_für_Speichern, btnSave)
End Sub
Sub Reload_Controls(SingleAttribute As String)
If IDB_ACTIVE = True Then
Load_IDB_DOC_DATA()
End If
FillIndexValues(False)
End Sub
Sub SetStatusLabel(infotext As String, Optional pColor As String = "")
bsiInformation.Caption = infotext & " " & Now.ToString
If pColor <> String.Empty Then
bsiInformation.ItemAppearance.Normal.BackColor = Color.FromName(pColor)
bsiInformation.ItemAppearance.Normal.ForeColor = GraphicsEx.GetContrastedColor(Color.FromName(pColor))
Else
bsiInformation.ItemAppearance.Normal.BackColor = Color.Transparent
bsiInformation.ItemAppearance.Normal.ForeColor = Color.Black
End If
End Sub
Private Sub BarButtonItem3_ItemClick(sender As Object, e As ItemClickEventArgs) Handles BarButtonItem3.ItemClick
frmFileInfo.ShowDialog()
End Sub
Private Sub BarButtonItem4_ItemClick(sender As Object, e As ItemClickEventArgs) Handles BarButtonItem4.ItemClick
If WMDocPathWindows <> "" Then
Try
Cursor = Cursors.WaitCursor
Dim oShellExecuteInfo As New SHELLEXECUTEINFO
oShellExecuteInfo.cbSize = Marshal.SizeOf(oShellExecuteInfo)
oShellExecuteInfo.lpVerb = "properties"
oShellExecuteInfo.lpFile = WMDocPathWindows
oShellExecuteInfo.nShow = SW_SHOW
oShellExecuteInfo.fMask = SEE_MASK_INVOKEIDLIST
If Not ShellExecuteEx(oShellExecuteInfo) Then
Dim ex As New System.ComponentModel.Win32Exception(System.Runtime.InteropServices.Marshal.GetLastWin32Error())
MsgBox("error in Datei-Eigenschaften öffnen:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End If
Catch ex As Exception
End Try
Cursor = Cursors.Default
End If
End Sub
Private Sub bbtniRefreshSearches_ItemClick(sender As Object, e As ItemClickEventArgs) Handles bbtniRefreshSearches.ItemClick
Click_Additional_Searches()
End Sub
Sub Click_Additional_Searches()
Try
_frmValidatorSearch?.Close()
_frmValidatorSearch = New frmValidatorSearch(Me, Environment)
_frmValidatorSearch.Show()
Catch ex As Exception
ValidatorLogger.Error(ex)
End Try
Load_Additional_Searches(False)
End Sub
Private Sub bbtniRefresh_ItemClick(sender As Object, e As ItemClickEventArgs) Handles bbtniRefresh.ItemClick
Reload_Controls("")
Try
'btnSave.Text = ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO("frmValidator.ValidationButton")
btnSave.Text = S.Speichern___Nächster_Vorgang__F2_
Catch ex As Exception
End Try
listChangedLookup.Clear()
SetStatusLabel("All Data refreshed", "Yellow")
End Sub
Private Sub bbtniNext_ItemClick(sender As Object, e As ItemClickEventArgs) Handles bbtniNext.ItemClick
If ForceGridValidation() = True Then
Reset_CurrentReferences()
Datei_ueberspringen()
End If
End Sub
Private Sub bbtniDelete_ItemClick(sender As Object, e As ItemClickEventArgs) Handles bbtniDelete.ItemClick
If ForceGridValidation() = True Then
delete_active_File()
End If
End Sub
Private Sub bbtniAnnotation_ItemClick(sender As Object, e As ItemClickEventArgs) Handles bbtniAnnotation.ItemClick
Application.DoEvents()
frmAnnotations.ShowDialog()
LoadDocument_DDViewer()
End Sub
Private Sub BbtnItm_ItemClick(sender As Object, e As ItemClickEventArgs) Handles BbtnitmSave.ItemClick
If ForceGridValidation() = True Then
Dim oRESULT As String
'oRESULT = ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO("InputSaved")
oRESULT = S.Eingaben_gespeichert
If Check_UpdateIndexe() = True Then
SetStatusLabel($"Data saved", "LimeGreen")
ValidatorLogger.Info("Workflowdata saved manually!")
Dim ins = String.Format("INSERT INTO TBPM_FILES_WORK_HISTORY (PROFIL_ID, DOC_ID,WORKED_BY,WORKED_WHERE,STATUS_COMMENT) VALUES ({0},{1},'{2}','{3}','{4}')", CURRENT_ProfilGUID, CURRENT_DOC_ID, USER_USERNAME, System.Environment.MachineName, "Manual Save via button")
DatabaseFallback.ExecuteNonQueryECM(ins)
Else
SetStatusLabel($"Error while saving data!", "Red")
End If
End If
End Sub
Private Sub SaveDevExpressGridControl_Layout(pProfilID As Integer, pControlID As Integer, pGridView As DevExpress.XtraGrid.Views.Grid.GridView)
Try
Dim xml As String = GetXML_OverviewLayoutName(pProfilID, pControlID)
pGridView.SaveLayoutToXml(xml)
Catch ex As Exception
ValidatorLogger.Error(ex)
ValidatorLogger.Info("Error while saving GridLayout: " & ex.Message)
End Try
End Sub
Private Sub RestoreDevExpressGridControl_Layout(pProfilID As Integer, pControlID As Integer, pGridView As DevExpress.XtraGrid.Views.Grid.GridView)
Try
Dim oXml As String = GetXML_OverviewLayoutName(pProfilID, pControlID)
If File.Exists(oXml) Then
pGridView.RestoreLayoutFromXml(oXml)
End If
Catch ex As Exception
ValidatorLogger.Error(ex)
ValidatorLogger.Info("Error while restoring layout: " & ex.Message)
End Try
End Sub
Private Function GetXML_OverviewLayoutName(pProfilID As Integer, pControlID As Integer)
Dim Filename As String = String.Format($"DevExpressValidatorGridControl_{pProfilID}-{pControlID}.xml")
Return System.IO.Path.Combine(USER_CONFIG_DIRECTORY, Filename)
End Function
Private Sub BarButtonItem5_ItemClick_1(sender As Object, e As ItemClickEventArgs) Handles BarButtonItem5.ItemClick
MsgBox("Versioning not configured! (Reasons: RightManagement, Displaying)", MsgBoxStyle.Information)
End Sub
Private Sub Attmt_bbtnitmShow_Click(sender As Object, e As ItemClickEventArgs) Handles Attmt_bbtnitmShow.ItemClick
Click_Additional_Searches()
End Sub
Private Sub barbtnitmExport_ItemClick(sender As Object, e As ItemClickEventArgs) Handles barbtnitmExport.ItemClick
If File.Exists(WMDocPathWindows) = False Then
MsgBox("Workflow-Document seems not to exist. Check Your log.", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
Exit Sub
End If
Try
Dim oFilenameOnly As String
Dim oExtension As String
Dim oTargetPath As String
Dim oFile2Export As String
Dim oCount As Integer = 0
Dim oSQLGetFilename As String
If FolderBrowserDialog1.ShowDialog <> DialogResult.OK Then
Exit Sub
End If
oFilenameOnly = Path.GetFileName(WMDocPathWindows)
oExtension = Path.GetExtension(WMDocPathWindows)
oSQLGetFilename = $"DECLARE @Filename Varchar(512) " & vbNewLine &
$"EXEC dbo.PRPM_GETFILENAME_EXPORT {CURRENT_DOC_ID}, 1, @Outputfilename = @Filename OUTPUT;" & vbNewLine &
"SELECT @Filename"
Dim oExportFilename = DatabaseFallback.GetScalarValueECM(oSQLGetFilename)
If Not IsNothing(oExportFilename) Then
If IsDBNull(oExportFilename) Then
ValidatorLogger.Info($"#### ATTENTION: oExportFilename is DBNULL - SQL: {oSQLGetFilename}")
oExportFilename = ""
End If
If oExportFilename <> String.Empty Then
oTargetPath = FolderBrowserDialog1.SelectedPath & "\" & oExportFilename & oExtension
If Not IsNothing(barbtnitmExport.Tag) Then
If barbtnitmExport.Tag.ToString = "Convert to PDF" Then
If oExtension.ToLower.EndsWith("pdf") Then
Dim oTempPath = System.IO.Path.GetTempPath()
Dim oTempFullFilename = oTempPath + "\" + oExportFilename & oExtension
Dim oConverter As New PDFConverter(LOGCONFIG)
If oConverter.ConvertPDFADocumentToPDFDocument(WMDocPathWindows, oTempFullFilename) = False Then
ValidatorLogger.Warn("File [{0}] could not be converted to plain PDF!", WMDocPathWindows)
oFile2Export = WMDocPathWindows
Else
ValidatorLogger.Info("File [{0}] successfully converted to plain PDF!", oTempFullFilename)
ValidatorLogger.Info("File [{0}] successfully converted to plain PDF!", WMDocPathWindows)
oFile2Export = oTempFullFilename
End If
Else
ValidatorLogger.Warn("No converting as File [{0}] not ending with pdf [{1}]", WMDocPathWindows, oExtension.ToLower)
oFile2Export = WMDocPathWindows
End If
Else
ValidatorLogger.Warn("No converting as barbtnitmExport.Tag.ToString <> Convert to PDF")
oFile2Export = WMDocPathWindows
End If
Else
oFile2Export = WMDocPathWindows
End If
ValidatorLogger.Info("Final export path is: [{0}]", oFile2Export)
File.Copy(oFile2Export, oTargetPath)
ValidatorLogger.Info($"File {WMDocPathWindows} exported successfully!")
oCount += 1
Else
MsgBox("Error encountered while extracting Export-Filename!" & vbNewLine & "Please inform Admin-Team!", MsgBoxStyle.Critical, ADDITIONAL_TITLE)
End If
End If
ValidatorLogger.Info("Now exporting attached files ...")
Dim oFileCount As Integer = 1
If Not IsNothing(DT_AdditionalSearches_Resultset_Docs) Then
If DT_AdditionalSearches_Resultset_Docs.Rows.Count >= 1 Then
ValidatorLogger.Info("Now exporting attached files ...")
For Each ocol As DataColumn In DT_AdditionalSearches_Resultset_Docs.Columns
MsgBox("Columnname: " & ocol.Caption)
Next
For Each oFileRecord As DataRow In DT_AdditionalSearches_Resultset_Docs.Rows
Dim oFromFilename = oFileRecord.Item("FULL_FILENAME")
Dim oDocID = oFileRecord.Item("DocID")
If File.Exists(oFromFilename) Then
oFileCount += 1
oSQLGetFilename = $"DECLARE @Filename Varchar(512) " & vbNewLine &
$"EXEC dbo.PRPM_GETFILENAME_EXPORT {oDocID}, {oFileCount}, @Outputfilename = @Filename OUTPUT;" & vbNewLine &
"SELECT @Filename"
oExportFilename = DatabaseFallback.GetScalarValueECM(oSQLGetFilename)
oExtension = Path.GetExtension(oFromFilename)
If Not IsNothing(oExportFilename) Then
If IsDBNull(oExportFilename) Then
ValidatorLogger.Info($"#### ATTENTION: oExportFilename is DBNULL - SQL: {oSQLGetFilename}")
oExportFilename = ""
End If
If oExportFilename <> String.Empty Then
oTargetPath = FolderBrowserDialog1.SelectedPath & "\" & oExportFilename & oExtension
File.Copy(oFromFilename, oTargetPath)
oCount += 1
Else
Dim omsg = $"Error encountered while extracting ATTACHMENT-Export-Filename DocID [{oDocID}]!"
ValidatorLogger.Info($"#### ATTENTION: {omsg} SQL: {oSQLGetFilename}")
MsgBox(omsg & vbNewLine & "Please inform Admin-Team!", MsgBoxStyle.Critical, ADDITIONAL_TITLE)
End If
End If
End If
Next
End If
End If
CONFIG.Config.LastExportPath = FolderBrowserDialog1.SelectedPath
CONFIG.Save()
MsgBox($"[{oCount}] file/s successfully exported to target [{FolderBrowserDialog1.SelectedPath}]!", MsgBoxStyle.Information, ADDITIONAL_TITLE)
Catch ex As Exception
ValidatorLogger.Error(ex)
MsgBox("Could not move file to target: " & vbNewLine & ex.Message, MsgBoxStyle.Critical, ADDITIONAL_TITLE)
End Try
End Sub
Private Sub BarCheckItemLoadOnClick_CheckedChanged(sender As Object, e As ItemClickEventArgs) Handles Attmnt_bbtnitm_LoadonClick.CheckedChanged
If _FormLoaded = False Then
Exit Sub
End If
CONFIG.Config.ADDITIONAL_SEARCHES_LOAD_ONCLICK = Attmnt_bbtnitm_LoadonClick.Checked
CONFIG.Save()
End Sub
Private Sub btnReject_Click(sender As Object, e As EventArgs) Handles btnReject.Click
oProfile_REJECT_SQL_REASONS = clsPatterns.ReplaceAllValues(oProfile_REJECT_SQL_REASONS, PanelValidatorControl, True)
Dim frmRejCommit As New frmRejectionCommit(CURRENT_ProfilGUID, CURRENT_DOC_ID, oProfileRejectionText, oProfile_REJECT_SQL_REASONS)
frmRejCommit.ShowDialog()
If frmRejCommit.pRejection_Commited = True Then
Dim oNoError As Boolean = True
'Ablehnungsgrund speichern
If IDB_ACTIVE = False Then
oNoError = Indexiere_File(CURRENT_WMFILE, PROFIL_REJECT_ACTIONS_ATTRIBUTE, frmRejCommit.pRejection_Action)
If oNoError Then
oNoError = Indexiere_File(CURRENT_WMFILE, PROFIL_REJECT_COMMENT_ATTRIBUTE, frmRejCommit.pRejection_Comment)
End If
Else
oNoError = IDBData.SetVariableValue(PROFIL_REJECT_ACTIONS_ATTRIBUTE, frmRejCommit.pRejection_Action)
If oNoError Then
oNoError = IDBData.SetVariableValue(PROFIL_REJECT_COMMENT_ATTRIBUTE, frmRejCommit.pRejection_Comment)
End If
End If
If oNoError Then
REJECTION_ACTIVE = True
If Check_UpdateIndexe() = True Then
Finish_WFStep(True)
End If
Else
MsgBox("We are sorry, but an enexpected error in rejection-process occured!" & vbNewLine & "Inform Your admin-team and check Your log. Thank You.", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE)
End If
End If
End Sub
Private Sub btnNotResponsible_Click(sender As Object, e As EventArgs) Handles btnNotResponsible.Click
Dim oCommentSoFar As String = ""
For Each oControl As Control In PanelValidatorControl.Controls
If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Attribute = PROFIL_NOT_RESP_COMMENT_ATTR Then
Dim oName = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Name
ValidatorLogger.Debug($"Got the control for the NR Attribute :{oName}..Gettin the value...")
If oControl.GetType() = GetType(DevExpress.XtraEditors.TextEdit) Or oControl.GetType() = GetType(MemoEdit) Then
Try
oCommentSoFar = DirectCast(oControl, DevExpress.XtraEditors.TextEdit).EditValue
Exit For
Catch ex As Exception
ValidatorLogger.Warn($"Unexpected error in Checking EditValue: {ex.Message}")
End Try
End If
End If
Next
oProfile_NOT_RESP_SQL = clsPatterns.ReplaceAllValues(oProfile_NOT_RESP_SQL, PanelValidatorControl, True)
Dim oCaption As String = "Bestätigung - "
If USER_LANGUAGE <> "de-DE" Then
oCaption = "Confirmation - "
End If
Dim frmDialog As New frmYesNo(oProfileNotResponsibleQuestion, oCaption + oProfileNotResponsibleText, oCommentSoFar)
frmDialog.ShowDialog()
' result = MessageBox.Show(oProfileNotResponsibleQuestion, ADDITIONAL_TITLE, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)
If frmDialog.DialogResult = DialogResult.OK Then
'For Each oControl As Control In PanelValidatorControl.Controls
' If DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Attribute = PROFIL_NOT_RESP_COMMENT_ATTR Then
' Dim oName = DirectCast(oControl.Tag, ClassControlCreator.ControlMetadata).Name
' Logger.Debug($"Got the control for the NR Attribute :{oName}..Gettin the value...")
' If oControl.GetType() = GetType(DevExpress.XtraEditors.TextEdit) Or oControl.GetType() = GetType(MemoEdit) Then
' Try
' DirectCast(oControl, DevExpress.XtraEditors.TextEdit).EditValue = frmDialog.oComment
' Exit For
' Catch ex As Exception
' Logger.Warn($"Unexpected error in Setting EditValue NotResponsible: {ex.Message}")
' End Try
' End If
' End If
'Next
If IDB_ACTIVE = False Then
Indexiere_File(CURRENT_WMFILE, PROFIL_NOT_RESP_COMMENT_ATTR, frmDialog.oComment)
Else
Dim oREsult = IDBData.SetVariableValue(PROFIL_NOT_RESP_COMMENT_ATTR, frmDialog.oComment)
End If
OverrideAll = True
Override_SQLCommand = oProfile_NOT_RESP_SQL
Override = True
Finish_WFStep()
End If
End Sub
Private Sub bbtnitmInfoWorkflow_ItemClick(sender As Object, e As ItemClickEventArgs) Handles bbtnitmInfoWorkflow.ItemClick
Show_WF_Messages(True)
End Sub
Private Sub BarCheckItem1_CheckedChanged(sender As Object, e As ItemClickEventArgs) Handles bchkitmNotes.CheckedChanged
If _FormLoaded = False Then
Exit Sub
End If
CONFIG.Config.NOTES_ONCLICK = bchkitmNotes.Checked
CONFIG.Save()
End Sub
End Class