Imports System.Globalization Imports DevExpress.Utils Imports DevExpress.XtraGrid.Views.Grid.ViewInfo Imports DevExpress.XtraGrid.Views.Grid Imports DevExpress.XtraGrid Imports DevExpress.XtraNavBar Imports DevExpress.XtraGrid.Columns Imports System.Threading Imports System.ComponentModel Imports System.IO Imports DevExpress.XtraPrinting Imports DigitalData.Modules.EDMI.API.DatabaseWithFallback Imports DigitalData.Modules.EDMI.API.Constants Imports DigitalData.GUIs.Common Imports DevExpress.XtraGrid.Views.BandedGrid Imports DevExpress.XtraBars.Ribbon Public Class frmMain Private UserLoggedin As Integer = 0 Private CURR_DT_VWPM_PROFILE_ACTIVE As DataTable Private CURR_DT_OVERVIEW As DataTable Private OVERVIEW_ADDED_WHEN As String Private OVERVIEW_CHANGED_WHEN As String Private OVERVIEW_COUNT As Integer = 0 Private RedDocuments As Integer = 0 Private YellowDocuments As Integer = 0 Private GreenDocuments As Integer = 0 Private GridViewItem_Clicked = Nothing Private GridCursorLocation As Point Private GRID_LOAD_TYPE As String = "OVERVIEW" Private GRID_INV_COL_REMOVED As Boolean = False Private NO_WORKFLOWITEMS As Boolean = False Private InResetlayout As Boolean = False Private RefreshHelper As RefreshHelper Private _FormValidator As frmValidator Private FormOpenClose As Boolean = False Private FormShown As Boolean = False Private GridIsLoaded As Boolean = False Private OverviewOrDEtail As String = "OVERVIEW" Private GridBuilder As GridBuilder Private allgFunk As New ClassAllgemeineFunktionen Private _Init As New ClassInit Private CurrNavBarGroup As NavBarGroup 'Private DataASorDB As ClassDataASorDB Private DT_CHECKUSER_MODULE As DataTable Private IsFilterMode As Boolean Private DetailLinkActive As Boolean = False Private FRONTEND_ACTION As String = "NONE" Private Function GET_LAST_ADDED(pDatatable As DataTable) As String Dim oADDED As String Try If IsNothing(pDatatable) Then oADDED = "NOTHING" ElseIf LAST_ADDED_COLUMN = "NONE" Then oADDED = Now.ToShortTimeString.ToString Else Dim result As Object result = pDatatable.Compute($"MAX({LAST_ADDED_COLUMN})", "") oADDED = result End If Catch ex As Exception oADDED = "Exception" End Try Return oADDED End Function Private Function GET_LAST_CHANGED(pDatatable As DataTable) As String Dim oCHANGED As String Try If IsNothing(pDatatable) Then oCHANGED = "NOTHING" ElseIf LAST_EDITED_COLUMN = "NONE" Then oCHANGED = Now.ToShortTimeString.ToString Else Dim result As Object result = pDatatable.Compute($"MAX({LAST_EDITED_COLUMN})", "") oCHANGED = result End If Catch ex As Exception oCHANGED = "Exception" End Try Return oCHANGED End Function Private Function Free_File() Try Dim sql = $"UPDATE TBPM_PROFILE_FILES SET EDIT = 0, IN_WORK = 0, IN_WORK_WHEN = NULL, WORK_USER = NULL WHERE GUID = {CURRENT_DOC_GUID}" Return DatabaseFallback.ExecuteNonQueryECM(sql) Catch ex As Exception allgFunk.Insert_LogEntry($"ERROR Free_File >> {ex.Message}") LOGGER.Error(ex) Return False End Try End Function Private Sub frmMain_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing Free_File() Try FormOpenClose = True ' Position und Größe speichern My.Settings.frmMainSize = Me.Size My.Settings.frmMainPosition = Me.Location My.Settings.Save() 'SaveGridLayout() Catch ex As Exception LOGGER.Error(ex) LOGGER.Info("Error in Save FormLayout: " & ex.Message) End Try If IDB_ACTIVE = False Then Try If WINDREAM?.oSession?.aLoggedin = True Then WINDREAM.Stop_WMCC_andCo() End If Catch ex As Exception End Try End If If INACTIVITYRecognized Then Exit Sub End If Try ClassAllgemeineFunktionen.LoginOut("LOGOUT") LOGGER.Info("TaskFlow closed - " & Now, False) Catch ex As Exception LOGGER.Error(ex) End Try End Sub Private Sub frmMain_KeyUp(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyUp Select Case e.KeyCode Case Keys.F12 frmLicense.ShowDialog() End Select End Sub Private Sub frmMain_Load(sender As Object, e As System.EventArgs) Handles Me.Load FormOpenClose = True LOGGER.Debug("Initializing MainForm....") GridBuilder = New GridBuilder(GridViewWFItems) GridBuilder.WithFontSizeDelta(CONFIG.Config.GridFontSizeDelta) Dim oFontSettings = New List(Of FontSetting) From { New FontSetting With {.Title = "Kleiner", .Value = -2}, New FontSetting With {.Title = "Normal", .Value = 0}, New FontSetting With {.Title = "Größer", .Value = 2} } cmbGridFontSize.Items.Clear() cmbGridFontSize.Items.AddRange(oFontSettings) barItemGridFontSize.EditValue = oFontSettings. Where(Function(item) item.Value = CONFIG.Config.GridFontSizeDelta). FirstOrDefault() ' Create helper to save/load expanded GroupColumns at runtime RefreshHelper = New RefreshHelper(LOGCONFIG, GridViewWFItems, "GUID") Dim oVErsion = String.Format("{0}.{1}.{2}", My.Application.Info.Version.Major, My.Application.Info.Version.Minor, My.Application.Info.Version.Build) bsiVersion.Caption = oVErsion If ERROR_STATE = "NO DB-CONNECTION" Or ERROR_STATE = "FAILED DBCONNECTION" Then MsgBox("Please add a database-Connection in AppConfig!", MsgBoxStyle.Critical, "Fehlende Konfiguration:") frmKonfig.ShowDialog() End If Try If CultureInfo.CurrentUICulture.ThreeLetterISOLanguageName = "eng" Then LOGGER.Info("## CurrentUICulture.Name: " & CultureInfo.CurrentUICulture.Name, False) INDEX_DMS_ERSTELLT = "DMS Created" INDEX_DMS_ERSTELLT_ZEIT = "DMS Created Time" My.Settings.Save() End If Try Dim oCultureInfo As System.Globalization.CultureInfo oCultureInfo = New System.Globalization.CultureInfo(USER_LANGUAGE) oCultureInfo.DateTimeFormat.ShortDatePattern = USER_DATE_FORMAT Thread.CurrentThread.CurrentCulture = oCultureInfo Thread.CurrentThread.CurrentUICulture = oCultureInfo CultureInfo.DefaultThreadCurrentCulture = oCultureInfo CultureInfo.DefaultThreadCurrentUICulture = oCultureInfo Catch ex As Exception End Try Catch ex As Exception LOGGER.Error(ex) MessageBox.Show("Error loading CurrentUICulture-Info!", "Attention:", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) End Try Try 'DataASorDB = New ClassDataASorDB bsiLicenses.Caption = "Anzahl Lizenzen: " & LICENSE_COUNT LOGGER.Debug("Initializing MainForm....") If ERROR_STATE = "NO USER" Then Dim oDT As DataTable = ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO("No Userconfig") MsgBox(oDT.Rows(0).Item("STRING1") & vbNewLine & oDT.Rows(0).Item("STRING2"), MsgBoxStyle.Critical, "Exception") Me.Close() ElseIf USER_IN_MODULE = False Then If USER_IS_ADMIN = False Then Dim oDT As DataTable = ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO("No Module Configuration") MsgBox(oDT.Rows(0).Item("STRING1") & vbNewLine & oDT.Rows(0).Item("STRING2"), MsgBoxStyle.Critical, "Exception") Me.Close() End If Else LOGGER.Info("Username: " & USER_USERNAME, False) 'Wenn license abgelaufen und der User nicht admin ist! If LICENSE_EXPIRED = True Then If USER_IS_ADMIN = False Then MsgBox("License expired or invalid!" & vbNewLine & "Please contact the AdminTeam!", MsgBoxStyle.Critical, "Attention:") Me.Close() End If End If If USER_IS_ADMIN = True Then RibbonPageGroup3.Visible = True 'Anzahl der eingeloggten User bsiUserLoggedIn.Visibility = DevExpress.XtraBars.BarItemVisibility.Always If USER_LANGUAGE <> "de-DE" Then bsiUserLoggedIn.Caption = "License Count: " & USERCOUNT_LOGGED_IN Else bsiUserLoggedIn.Caption = "Lizenz-Zähler: " & USERCOUNT_LOGGED_IN End If If GHOSTMODE_ACTIVE = True Then bbtnitmGhostMode.Visibility = DevExpress.XtraBars.BarItemVisibility.Always Else bbtnitmGhostMode.Visibility = DevExpress.XtraBars.BarItemVisibility.Never End If Else RibbonPageGroup3.Visible = False bsiUserLoggedIn.Visibility = DevExpress.XtraBars.BarItemVisibility.Never bbtnitmGhostMode.Visibility = DevExpress.XtraBars.BarItemVisibility.Never End If If MONITORING_ACTIVE = False Then RibbonPageGroup2.Visible = False Else RibbonPageGroup2.Visible = True End If Try If SEARCH1 <> String.Empty Then Dim oindex = SEARCH1.IndexOf("~") Dim oCaption = SEARCH1.Substring(0, oindex) Dim oCommand = SEARCH1.Replace(oCaption + "~", "") SearchItem1.Caption = oCaption SearchItem1.Tag = oCommand SearchItem1.Visibility = DevExpress.XtraBars.BarItemVisibility.Always RibbonPageGroup4.Visible = True End If Catch ex As Exception End Try Try If SEARCH2 <> String.Empty Then Dim oindex = SEARCH2.IndexOf("~") Dim oCaption = SEARCH2.Substring(0, oindex) Dim oCommand = SEARCH2.Replace(oCaption + "~", "") SearchItem2.Caption = oCaption SearchItem2.Tag = oCommand SearchItem2.Visibility = DevExpress.XtraBars.BarItemVisibility.Always RibbonPageGroup4.Visible = True End If Catch ex As Exception End Try If START_CW = True Then Dim oPath Select Case START_CW_LOC_VARIANT Case "-1" oPath = Directory.GetParent(Application.StartupPath).ToString Case "0" oPath = Application.StartupPath.ToString End Select oPath &= "\ClipboardWatcher\DD_Clipboard_Watcher.exe" If File.Exists(oPath) Then bbtniCW.Caption = START_CW_CAPTION bbtniCW.Tag = oPath bbtniCW.Visibility = DevExpress.XtraBars.BarItemVisibility.Always RibbonPageGroup4.Visible = True Else LOGGER.Warn($"Error in CW-Button init: Could not find CW.Exe {oPath}") End If End If End If Catch ex As Exception LOGGER.Error(ex) MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error in User Check:") End Try bsiUser.Caption = USER_USERNAME GetBaseData("Load") Try If TimerRefresh.Enabled = False Then TimerRefresh.Start() End If Timer5Mins.Start() Catch ex As Exception LOGGER.Error(ex) MsgBox("Unexpected Error in LoadForm - Step 4: " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:") End Try LoadNavBar() AddHandler NavBarControl1.LinkClicked, AddressOf navBar_LinkClicked Try If SHOW_CHARTS = True Then If BASEDATA_DT_CHARTS.Rows.Count = 0 Then bbtnitDashboardInv.Visibility = DevExpress.XtraBars.BarItemVisibility.Never Else bbtnitDashboardInv.Visibility = DevExpress.XtraBars.BarItemVisibility.Always End If Else bbtnitDashboardInv.Visibility = DevExpress.XtraBars.BarItemVisibility.Never End If Catch ex As Exception LOGGER.Warn($"Could not load Charts: {ex.Message}") End Try If MONITORING_ACTIVE = False Then bbtniMonitor.Visibility = DevExpress.XtraBars.BarItemVisibility.Never Else bbtniMonitor.Visibility = DevExpress.XtraBars.BarItemVisibility.Always End If Check_Timer_Notification() Timer_Inactivity_Reset_Disable("FormLoad") Restore_Form_Position() If IDB_ACTIVE = False And ERROR_STATE = "" Then Try If Init_windream() = True Then WINDREAM.Start_WMCC_andCo() BarButtonItemFileLink.Visibility = DevExpress.XtraBars.BarItemVisibility.Always If Not IsNothing(WINDREAM.oSession) Then If WINDREAM.oSession.aLoggedin = False Then MsgBox("You could not be logged in to windream. Please check the log.", MsgBoxStyle.Critical) End If Else MsgBox("Login on windream was not possible. Please check the log.", MsgBoxStyle.Critical) End If End If Catch ex As Exception LOGGER.Error(ex) MsgBox("Unexpected Error in windream-login - Step 5: " & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:") End Try Else BarButtonItemFileLink.Visibility = DevExpress.XtraBars.BarItemVisibility.Never SOURCE_INIT = Init_IDB() If SOURCE_INIT = True Then Dim oSQL = $"SELECT SQL_COMMAND FROM TBDD_SQL_COMMANDS WHERE TITLE = 'PM_IDB_DOC_DATA'" 'Dim DTIDB_DOC_DATA_SQL = DataASorDB.GetDatatable("DD_ECM", oSQL, "TBDD_SQL_COMMANDS", "TITLE = 'PM_IDB_DOC_DATA'") Dim DTIDB_DOC_DATA_SQL = DatabaseFallback.GetDatatable("TBDD_SQL_COMMANDS", New GetDatatableOptions(oSQL, DatabaseType.ECM) With { .FilterExpression = "TITLE = 'PM_IDB_DOC_DATA'" }) IDB_DOC_DATA_SQL = DTIDB_DOC_DATA_SQL.Rows(0).Item("SQL_COMMAND") LOGGER.Debug($"Got the IDB_DOC_DATA_SQL..{IDB_DOC_DATA_SQL}") End If bsiGeneralInfo.Caption = "IDB active" End If If EDMIAppServerActive = True Then BarStaticItemAppServer.Visibility = DevExpress.XtraBars.BarItemVisibility.Always Else BarStaticItemAppServer.Visibility = DevExpress.XtraBars.BarItemVisibility.Never End If If BASIC_CONF_VISIBLE = False Then RibbonPageGroupBasicConf.Visible = False Else RibbonPageGroupBasicConf.Visible = True End If LOGGER.Debug("MainForm initialized!") FormOpenClose = False End Sub Public Class FontSetting Public Property Title As String Public Property Value As Integer Public Overrides Function ToString() As String Return Title End Function End Class Sub Check_Timer_Notification() Try If CONFIG.Config.ReminderTimer <> 0 Then TimerReminder.Stop() TimerReminder.Interval = CONFIG.Config.ReminderTimer * 60000 TimerReminder.Start() Else TimerReminder.Enabled = False TimerReminder.Stop() End If Catch ex As Exception LOGGER.Error(ex) End Try End Sub Public Sub Timer_Inactivity_Reset_Disable(pTrigger As String) Try If Timer5Mins_running = True Or TimerRefresh_running = True Then Exit Sub End If If INACTIVITY_DURATION <> 0 Then TimerInactivity.Stop() TimerInactivity.Interval = INACTIVITY_DURATION * 60000 TimerInactivity.Start() bsiInactivityCheck.Visibility = DevExpress.XtraBars.BarItemVisibility.Always Dim StartTime As DateTime = #12:00:00 AM# 'load combo box Dim oStarttime As DateTime = Now oStarttime = oStarttime.AddMinutes(INACTIVITY_DURATION) If LOGCONFIG.Debug = False Then pTrigger = "" Else pTrigger = $"({pTrigger})" End If bsiInactivityCheck.Caption = $"Next Inactivity-Check: {oStarttime.ToShortTimeString} {pTrigger}" Else TimerInactivity.Enabled = False TimerInactivity.Stop() bsiInactivityCheck.Visibility = DevExpress.XtraBars.BarItemVisibility.Never End If Catch ex As Exception LOGGER.Error(ex) End Try End Sub Sub Restore_Form_Position() Try 'Sind Werte hinterlegt? If My.Settings.frmMainPosition.IsEmpty = False Then If My.Settings.frmMainPosition.X > 0 And My.Settings.frmMainPosition.Y > 0 Then If Not My.Settings.frmMainSize.IsEmpty Then If My.Settings.frmMainWindowState = "Normal" Then Dim oisonscreen = IsOnScreen(My.Settings.frmMainPosition, My.Settings.frmMainSize) If oisonscreen = False Then Me.StartPosition = FormStartPosition.CenterScreen Exit Sub Else ' Gespeicherte Werte verwenden Me.Location = Screen.AllScreens(UBound(Screen.AllScreens)).Bounds.Location + My.Settings.frmMainPosition End If Else Me.WindowState = FormWindowState.Maximized End If End If Else LOGGER.Info("FormPosition is out of range!..Standard will be loaded!") If My.Settings.frmMainWindowState = "Normal" Then Me.StartPosition = FormStartPosition.CenterScreen Else Me.WindowState = FormWindowState.Maximized End If End If End If 'Sind Werte hinterlegt? 'If Not My.Settings.frmMainSize.IsEmpty Then ' If My.Settings.frmMainWindowState = "Normal" Then ' Dim oisonscreen = IsOnScreen(My.Settings.frmMainPosition, My.Settings.frmMainSize) ' If oisonscreen = False Then ' Me.StartPosition = FormStartPosition.CenterScreen ' Exit Sub ' End If ' ' Gespeicherte Werte verwenden ' Try ' Me.Size = My.Settings.frmMainSize ' Catch ex As Exception ' End Try ' Else ' Me.WindowState = FormWindowState.Maximized ' End If 'End If Catch ex As Exception LOGGER.Error(ex) LOGGER.Info("Error in Load FormLayout: " & ex.Message) End Try End Sub Function IsOnScreen(ByVal RecLocation As System.Drawing.Point, ByVal RecSize As System.Drawing.Size, Optional MinPercentOnScreen As Double = 0.2) Try Dim PixelsVisible As Double = 0 Dim Rec As System.Drawing.Rectangle = New System.Drawing.Rectangle(RecLocation, RecSize) For Each Scrn As Screen In Screen.AllScreens Dim r As System.Drawing.Rectangle = System.Drawing.Rectangle.Intersect(Rec, Scrn.WorkingArea) 'intersect rectangle with screen If (r.Width <> 0 And r.Height <> 0) Then PixelsVisible += (r.Width * r.Height) 'tally visible pixels End If Next Return PixelsVisible >= (Rec.Width * Rec.Height) * MinPercentOnScreen Catch ex As Exception Return False End Try End Function Private Function GetXML_OverviewLayoutName() Dim Filename As String = String.Format("DevExpressGridViewOverview_UserLayout_{0}.xml", GRID_LOAD_TYPE) Return System.IO.Path.Combine(CONFIG.UserConfigPath.Replace("UserConfig.xml", ""), Filename) End Function Private Sub SaveGridLayout() If NO_WORKFLOWITEMS = True Then Exit Sub End If Try Dim xml As String = GetXML_OverviewLayoutName() GridViewWFItems.SaveLayoutToXml(xml, OptionsLayoutBase.FullLayout) Catch ex As Exception LOGGER.Error(ex) LOGGER.Info("Error while saving GridLayout: " & ex.Message) End Try End Sub Private Sub RestoreLayout() If NO_WORKFLOWITEMS = True Then Exit Sub End If Try Dim oXml As String = GetXML_OverviewLayoutName() GridViewWFItems.RestoreLayoutFromXml(oXml, OptionsLayoutBase.FullLayout) Catch ex As Exception LOGGER.Error(ex) LOGGER.Info("Error while restoring layout: " & ex.Message) End Try End Sub Private Sub ResetLayout() Try Dim xml As String = GetXML_OverviewLayoutName() IO.File.Delete(xml) Try GridViewWFItems.Columns.Clear() Catch ex As Exception If IsNothing(GridViewWFItems) Then LOGGER.Warn("Somehow GridView_Docs is nothing....") Else If IsNothing(GridViewWFItems.Columns) Then LOGGER.Warn("Somehow GridView_Docs.Columns is nothing....") End If End If Exit Sub End Try GridViewWFItems.PopulateColumns() If GridViewWFItems.Columns.Count > 0 Then GridViewWFItems.Columns.Item("PROFILE_ID").Visible = False GridViewWFItems.Columns.Item("GUID").Visible = False Try GridViewWFItems.Columns.Item("FULL_FILE_PATH").Visible = False 'GridView_Docs.Columns.Item("DocID").Visible = False GridViewWFItems.Columns.Item("TL_STATE").Visible = False Catch ex As Exception End Try Try If TL_ICON = True Then GridViewWFItems.Columns.Item("ICON").MaxWidth = 24 GridViewWFItems.Columns.Item("ICON").MinWidth = 24 GridViewWFItems.Columns.Item("ICON").AppearanceCell.BackColor = Color.White GridViewWFItems.Columns.Item("ICON").Fixed = FixedStyle.Left End If Catch ex As Exception End Try If IDB_ACTIVE = True Then Try If GridViewWFItems.Columns.Item("CONV_YN") IsNot Nothing Then GridViewWFItems.Columns.Item("CONV_YN").Visible = False End If Catch ex As Exception LOGGER.Info("ResetLayout - Check wether Column CONV_YN is part of select/view..now checking CONVERSATION") End Try Try GridViewWFItems.Columns.Item("CONVERSATION").MaxWidth = 24 GridViewWFItems.Columns.Item("CONVERSATION").MinWidth = 24 GridViewWFItems.Columns.Item("CONVERSATION").Fixed = FixedStyle.Left Catch ex As Exception LOGGER.Info("ResetLayout - Column CONVERSATION obviously is not part of GridView_Docs") End Try End If Try Dim oReducedColName = LAST_EDITED_COLUMN.Replace("[", "") oReducedColName = oReducedColName.Replace("]", "") GridViewWFItems.Columns(oReducedColName).DisplayFormat.FormatType = FormatType.DateTime GridViewWFItems.Columns(oReducedColName).DisplayFormat.FormatString = "dd.MM.yyyy HH:MM:ss" Catch ex As Exception Try GridViewWFItems.Columns("Zuletzt bearbeitet").DisplayFormat.FormatType = FormatType.DateTime GridViewWFItems.Columns("Zuletzt bearbeitet").DisplayFormat.FormatString = "dd.MM.yyyy HH:MM:ss" Catch ex1 As Exception LOGGER.Warn("(ResetLayout)Column [Last edited] or [Zuletzt bearbeitet] not part of OverviewSQL") End Try End Try Try GridViewWFItems.Columns.Item("GROUP_TEXT").Visible = False GridViewWFItems.Columns.Item("GROUP_COLOR").Visible = False Catch ex As Exception End Try ' GridView_Docs.OptionsView.ShowIndicator = False End If Catch ex As Exception LOGGER.Error(ex) LOGGER.Info("Error while resetting layout: " & ex.Message) End Try End Sub Sub LoadNavBar() Dim profileGroupOpen As Boolean = False If Not IsNothing(CurrNavBarGroup) Then Try profileGroupOpen = CurrNavBarGroup.Expanded Try CurrNavBarGroup.ItemLinks.Clear() Catch ex As Exception LOGGER.Error(ex) LOGGER.Info("CurrGroupClear - Error: " & ex.Message) End Try Catch ex As Exception End Try End If Try If Load_Profiles_for_User() = False Then Throw New Exception("Could not load Profiles. Datatable is empty") Exit Sub End If If NO_DETAIL_PROFILES = False Then NavBarControl1.Visible = True Dim oCountItems As Integer = 0 For Each oProfileRow As DataRow In CURR_DT_VWPM_PROFILE_ACTIVE.Rows Dim oFileCount = CInt(oProfileRow.Item("FILE_COUNT")) Dim ODisplayMode = oProfileRow.Item("DISPLAY_MODE") If oFileCount > 0 And (ODisplayMode = "Overview and Detail" Or ODisplayMode = "Detail") Then oCountItems += 1 Dim item1 As NavBarItem = NavBarControl1.Items.Add() item1.Caption = oProfileRow.Item("TITLE") item1.Hint = oProfileRow.Item("TITLE") item1.Appearance.TextOptions.WordWrap = WordWrap.Wrap item1.Tag = "itmProfile#" & oProfileRow.Item("GUID").ToString Dim _image As Image = Nothing _image = DevExpress.Images.ImageResourceCache.Default.GetImage("images/business%20objects/bofileattachment_16x16.png") item1.LargeImage = _image item1.SmallImage = _image NavBarControl1.Groups(1).ItemLinks.Add(item1) End If Next If oCountItems > 0 Then If NavBarControl1.Groups(1).Visible = False Then NavBarControl1.Groups(1).Visible = True End If Else If NavBarControl1.Groups(1).Visible = True Then NavBarControl1.Groups(1).Visible = False End If End If If Not IsNothing(CurrNavBarGroup) Then CurrNavBarGroup.Expanded = profileGroupOpen Else NavBarControl1.Groups(1).Expanded = True End If Else LOGGER.Debug("NavBarControl - No Detail Profiles") NavBarControl1.Visible = False End If Catch ex As Exception LOGGER.Error(ex) LOGGER.Info("Load_Profile_items - Error: " & ex.Message) 'MsgBox("Unexpected Error in Load_Profile_items - Error: " & vbNewLine & ex.Message, MsgBoxStyle.Critical) End Try End Sub Private Async Sub navBar_LinkClicked(ByVal sender As Object, ByVal e As NavBarLinkEventArgs) If GRID_LOAD_TYPE = "OVERVIEW" Then 'SaveGridLayout() End If FRONTEND_ACTION = "NAVBAR LINK CLICKED" Dim _tag = e.Link.Item.Tag Timer_Inactivity_Reset_Disable("navBar_LinkClicked") If Not IsNothing(_tag) Then If _tag.ToString.Contains("itmProfile#") Then _tag = _tag.ToString.Replace("itmProfile#", "") If IsNumeric(_tag) Then If CURRENT_CLICKED_PROFILE_ID <> _tag Then OverviewOrDEtail = "DETAIL" If Not Application.OpenForms().OfType(Of frmValidator).Any Then CURRENT_CLICKED_PROFILE_ID = _tag CURRENT_CLICKED_PROFILE_TITLE = e.Link.Item.Caption End If GRID_LOAD_TYPE = "PROFILE#" & _tag.ToString TimerRefresh.Stop() GridViewWFItems.ShowLoadingPanel() DetailLinkActive = True Await Load_single_Profile(True) GridViewWFItems.HideLoadingPanel() TimerRefresh.Start() Else CURRENT_CLICKED_PROFILE_TITLE = Nothing CURRENT_CLICKED_PROFILE_ID = Nothing End If End If ElseIf _tag = "OVERVIEW" Then OverviewOrDEtail = "OVERVIEW" GRID_LOAD_TYPE = "OVERVIEW" GridViewWFItems.ShowLoadingPanel() TimerRefresh.Stop() Dim oForce As Boolean = False If DetailLinkActive = True Then oForce = True DetailLinkActive = False OVERVIEW_ADDED_WHEN = "" End If Await Load_Grid_Overview(oForce) GridViewWFItems.HideLoadingPanel() TimerRefresh.Start() RefreshHelper.LoadViewInfo() End If End If FRONTEND_ACTION = "NONE" End Sub Function Load_Profiles_for_User() As Boolean Try If IsNothing(CURR_DT_VWPM_PROFILE_ACTIVE) Then Return False End If Return True Catch ex As Exception LOGGER.Error(ex) LOGGER.Info("Load_Profiles_for_User - Error: " & ex.Message) Return False End Try End Function Sub Layout_Single_Profile() Try If GridControl_Docs.Visible = False Then GridControl_Docs.Visible = True End If Catch ex As Exception LOGGER.Error(ex) End Try End Sub Async Function Load_single_Profile(Optional ForceReload As Boolean = False) As Tasks.Task Try FRONTEND_ACTION = "Load_single_Profile" Load_Profiles_for_User() Layout_Single_Profile() Dim expression As String expression = "GUID = " & CURRENT_CLICKED_PROFILE_ID Dim TEMP_TABLE = CURR_DT_VWPM_PROFILE_ACTIVE Dim foundRows() As DataRow foundRows = TEMP_TABLE.Select(expression) Dim result = 0 For i = 0 To foundRows.GetUpperBound(0) result += 1 Next If result = 1 Then Dim oSQL = foundRows(0)("SQL_VIEW") oSQL = clsPatterns.ReplaceInternalValues(oSQL) oSQL = clsPatterns.ReplaceUserValues(oSQL) oSQL = oSQL.Replace("@USER_ID", USER_ID) oSQL = oSQL.Replace("@USERNAME", USER_USERNAME) oSQL = oSQL.Replace("@MACHINE_NAME", Environment.MachineName) oSQL = oSQL.Replace("@DATE", Now.ToShortDateString) oSQL = oSQL.Replace("@PROFILE_ID", CURRENT_CLICKED_PROFILE_ID) CURR_DT_OVERVIEW = Await DatabaseFallback.GetDatatableECMAsync(oSQL) If ForceReload = True Then LOGGER.Info("ForceReload is true!") End If If Not IsNothing(CURR_DT_OVERVIEW) Then Dim oADDED = GET_LAST_ADDED(CURR_DT_OVERVIEW) Dim oChanged = GET_LAST_CHANGED(CURR_DT_OVERVIEW) Dim oCOUNT = CURR_DT_OVERVIEW.Rows.Count If oADDED = OVERVIEW_ADDED_WHEN And oChanged = OVERVIEW_CHANGED_WHEN And OVERVIEW_COUNT = oCOUNT Then If ForceReload = False Then LOGGER.Info("No changes on OverviewHash - so exit Refresh") Exit Function End If Else OVERVIEW_ADDED_WHEN = oADDED OVERVIEW_CHANGED_WHEN = oChanged OVERVIEW_COUNT = oCOUNT End If GridViewWFItems.ViewCaption = "Detailansicht Profil: " & CURRENT_CLICKED_PROFILE_TITLE If CURR_DT_OVERVIEW.Rows.Count = 0 Then NO_WORKFLOWITEMS = True Else NO_WORKFLOWITEMS = False End If Create_Basic_View() RestoreLayout() GridViewWFItems.ViewCaption = "Detailansicht Profil: " & CURRENT_CLICKED_PROFILE_TITLE End If End If Catch ex As Exception LOGGER.Error(ex) LOGGER.Info("Load_single_Profile - Error: " & ex.Message) End Try FRONTEND_ACTION = "NONE" End Function Sub Create_Basic_View() Try FRONTEND_ACTION = "Create_Basic_View" GridControl_Docs.DataSource = Nothing Try GridViewWFItems.Columns.Clear() Catch ex As Exception LOGGER.Error(ex) LOGGER.Warn("Could not clear GridView_Docs.Columns") End Try If TL_ICON = True Then ' Spalte für Status Icon erstellen Dim columnStateIcon As New DataColumn() columnStateIcon.DataType = GetType(Image) columnStateIcon.ColumnName = "ICON" columnStateIcon.Caption = "" CURR_DT_OVERVIEW.Columns.Add(columnStateIcon) End If RedDocuments = 0 YellowDocuments = 0 GreenDocuments = 0 If TL_ICON = True Then For Each row As DataRow In CURR_DT_OVERVIEW.Rows Dim State As Integer = row.Item("TL_STATE") Select Case State Case 1 RedDocuments += 1 row.Item("ICON") = My.Resources.bullet_red Case 2 YellowDocuments += 1 row.Item("ICON") = My.Resources.bullet_orange Case 3 GreenDocuments += 1 row.Item("ICON") = My.Resources.bullet_green End Select Next End If If IDB_ACTIVE = True Then ' Spalte für Conversation erstellen Dim columnConvIcon As New DataColumn() columnConvIcon.DataType = GetType(Image) columnConvIcon.ColumnName = "CONVERSATION" columnConvIcon.Caption = "" CURR_DT_OVERVIEW.Columns.Add(columnConvIcon) End If For Each oRow As DataRow In CURR_DT_OVERVIEW.Rows Try Dim oCONVYN As Boolean Try oCONVYN = oRow.Item("CONV_YN") Catch ex As Exception LOGGER.Warn($"Please check Your select/view Config - Column CONV_YN is missing [{ex.Message}]") Exit For End Try Select Case oCONVYN Case True oRow.Item("CONVERSATION") = My.Resources.conversation End Select Catch ex As Exception LOGGER.Warn("Create_Basic_View1 - Column CONVERSATION obviously is not part of GridView_Docs") End Try Next bindsourcegrid.DataSource = CURR_DT_OVERVIEW GridControl_Docs.DataSource = bindsourcegrid Dim objectCount_Descr = GridViewWFItems.RowCount.ToString If USER_LANGUAGE = "de-DE" Then objectCount_Descr &= " Vorgänge" Else objectCount_Descr &= " objects" End If 'tslblObjectCount.Text = objectCount_Descr 'GridControlDocRow.ForceInitialize() RestoreLayout() GridViewWFItems.Columns.Item("PROFILE_ID").Visible = False GridViewWFItems.Columns.Item("GUID").Visible = False Try GridViewWFItems.Columns.Item("FULL_FILE_PATH").Visible = False 'GridView_Docs.Columns.Item("DocID").Visible = False GridViewWFItems.Columns.Item("TL_STATE").Visible = False Catch ex As Exception End Try Try If TL_ICON = True Then GridViewWFItems.Columns.Item("ICON").MaxWidth = 24 GridViewWFItems.Columns.Item("ICON").MinWidth = 24 GridViewWFItems.Columns.Item("ICON").AppearanceCell.BackColor = Color.White GridViewWFItems.Columns.Item("ICON").Fixed = FixedStyle.Left End If Catch ex As Exception End Try Try GridViewWFItems.Columns.Item("CONV_YN").Visible = False Catch ex As Exception LOGGER.Info("Create_Basic_View - Check wether Column CONV_YN is part of select/view") End Try If IDB_ACTIVE = True Then Try GridViewWFItems.Columns.Item("CONVERSATION").MaxWidth = 24 GridViewWFItems.Columns.Item("CONVERSATION").MinWidth = 24 GridViewWFItems.Columns.Item("CONVERSATION").Fixed = FixedStyle.Left Catch ex As Exception LOGGER.Info("Create_Basic_View2 - Column CONVERSATION obviously is not part of GridView_Docs - Trying to Rest Layout") ResetLayout() FRONTEND_ACTION = "NONE" Exit Sub End Try End If ' GridView_Docs.OptionsView.ShowIndicator = False Try Dim oReducedColName = LAST_EDITED_COLUMN.Replace("[", "") oReducedColName = oReducedColName.Replace("]", "") GridViewWFItems.Columns(oReducedColName).DisplayFormat.FormatType = FormatType.DateTime GridViewWFItems.Columns(oReducedColName).DisplayFormat.FormatString = "dd.MM.yyyy HH:MM:ss" Catch ex As Exception Try GridViewWFItems.Columns("Zuletzt bearbeitet").DisplayFormat.FormatType = FormatType.DateTime GridViewWFItems.Columns("Zuletzt bearbeitet").DisplayFormat.FormatString = "dd.MM.yyyy HH:MM:ss" Catch ex1 As Exception LOGGER.Warn("(CreateBasicView)Column [Last edited] or [Zuletzt bearbeitet] not part of OverviewSQL") End Try End Try LOGGER.Debug("All columns in CreateBasicView created") Try GridViewWFItems.Columns.Item("GROUP_TEXT").Visible = False GridViewWFItems.Columns.Item("GROUP_COLOR").Visible = False Catch ex As Exception LOGGER.Error(ex) End Try LOGGER.Debug("All columns in CreateBasicView created") Catch ex As Exception LOGGER.Error(ex) End Try FRONTEND_ACTION = "NONE" End Sub Private Function GridLayoutChanged() As Boolean Try For Each oViewColumn As DataColumn In CURR_DT_OVERVIEW.Columns If oViewColumn.Caption = "" Then Continue For End If Dim oViewColumn_exists As Boolean = False For Each oActGridColumn As GridColumn In GridViewWFItems.Columns Dim oGridDXFieldName = oActGridColumn.FieldName Dim GridDXColumnEditName = oActGridColumn.ColumnEditName Dim GridDXFieldName = oActGridColumn.FieldName If oViewColumn.Caption = oGridDXFieldName Then If oActGridColumn.Visible = False Then If oViewColumn.Caption <> "GUID" And oViewColumn.Caption <> "TL_STATE" And oViewColumn.Caption <> "PROFILE_ID" And oViewColumn.Caption <> "DocID" And oViewColumn.Caption <> "FULL_FILE_PATH" And oViewColumn.Caption <> "GROUP_COLOR" And oViewColumn.Caption <> "GROUP_TEXT" And oViewColumn.Caption <> "CONV_YN" Then Console.WriteLine($"ViewColumn [{oViewColumn.Caption}] is invisible") Else oViewColumn_exists = True End If Else oViewColumn_exists = True End If End If Next If oViewColumn_exists = False Then LOGGER.Info($"Following ViewColumn no longer exists in the view: [{oViewColumn.Caption}]") Return True End If Next For Each oActGridColumn As GridColumn In GridViewWFItems.Columns If oActGridColumn.Caption = "" Then Continue For End If Dim oGridColumn_exists As Boolean = False Dim oGridDXFieldName = oActGridColumn.FieldName For Each oViewColumn As DataColumn In CURR_DT_OVERVIEW.Columns If oViewColumn.Caption = oGridDXFieldName Then oGridColumn_exists = True End If Next If oGridColumn_exists = False Then LOGGER.Info($"Following GridColumn no longer exists in the View: [{oGridDXFieldName}]") Return True End If Next Catch ex As Exception LOGGER.Error(ex) LOGGER.Info("Unexpected Error in GridLayoutChanged: " & ex.Message) Return False End Try End Function Private Function Column_inGridViewLayout(Col2bChecked As String) As Boolean Try Dim oGridView As New GridView Dim oXml As String = GetXML_OverviewLayoutName() oGridView.RestoreLayoutFromXml(oXml, OptionsLayoutBase.FullLayout) Dim oViewColumn_exists As Boolean = False For Each oActGridColumn As GridColumn In oGridView.Columns Dim oGridDXFieldName = oActGridColumn.FieldName Dim GridDXColumnEditName = oActGridColumn.ColumnEditName Dim GridDXFieldName = oActGridColumn.FieldName If Col2bChecked = oGridDXFieldName Then oViewColumn_exists = True Exit For End If Next If oViewColumn_exists = False Then LOGGER.Info($"Following ViewColumn is not existing in the view: [{Col2bChecked}]") Return Not False End If Catch ex As Exception LOGGER.Error(ex) LOGGER.Info("Unexpected Error in Column_inGridViewLayout: " & ex.Message) Return Not False End Try End Function Private Sub NotifyIcon1_MouseDoubleClick(sender As System.Object, e As MouseEventArgs) Handles NotifyIcon1.MouseDoubleClick BringMonitor2Front() End Sub Sub BringMonitor2Front() Me.BringToFront() Visible = True End Sub Private Async Sub TimerRefresh_Tick(sender As System.Object, e As EventArgs) Handles TimerRefresh.Tick Try If TimerRefresh.Enabled = False Then Exit Sub End If If bwBasicData.IsBusy Then LOGGER.Info("backGroundWorker BasicData in Action - no Client-Sync") bsiMessage.Caption = "bwBasicData is busy - no Refreshing" bsiMessage.ItemAppearance.Normal.BackColor = Color.Yellow Exit Sub End If TimerRefresh_running = True ' Cancel Refresh if a Validator Form or an Admin Form is opened If Application.OpenForms().OfType(Of frmMassValidator).Any() Or Application.OpenForms().OfType(Of frmValidator).Any() Or Application.OpenForms().OfType(Of frmAdministration).Any() Or Application.OpenForms().OfType(Of frmAdmin2).Any() Then Exit Sub End If If USER_LANGUAGE <> "de-DE" Then bsilastsync.Caption = "Last Client-Sync: " & Now.ToLongTimeString Else bsilastsync.Caption = "Letzte Synchronisation: " & Now.ToLongTimeString End If If GridControl_Docs.Visible = True And FormOpenClose = False Then RefreshHelper.SaveViewInfo() End If If bwSync.IsBusy Then TimerRefresh_running = False Exit Sub End If Try ' SaveGridLayout() 'bwSync.ReportProgress(10) LoadNavBar() 'bwSync.ReportProgress(60) Dim oStopWatch As New RefreshHelper.SW("Decide_Load") Await Decide_Load(False) oStopWatch.Done() 'bwSync.ReportProgress(95) If GridControl_Docs.Visible = True And FormOpenClose = False Then RefreshHelper.LoadViewInfo() Handling_DEBUG_USER() Catch ex As Exception LOGGER.Error(ex) End Try Catch ex As Exception LOGGER.Error(ex) End Try TimerRefresh_running = False 'BarEditItem1.Visibility = DevExpress.XtraBars.BarItemVisibility.Always '' call this method to start your asynchronous Task. 'bwSync.RunWorkerAsync() End Sub Private Sub NotifyIcon1_Click(sender As System.Object, e As EventArgs) Handles NotifyIcon1.Click BringMonitor2Front() End Sub Private Async Function Decide_Load(pIsFormLoad As Boolean, Optional ForceReload As Boolean = False) As Tasks.Task Try If pIsFormLoad = True Then FormShown = False End If GridIsLoaded = False If USER_EXISTS = False Then Exit Function End If If TimerRefresh.Enabled = True Then TimerRefresh.Enabled = False End If GridViewWFItems.ShowLoadingPanel() TimerRefresh.Stop() If GRID_LOAD_TYPE = "OVERVIEW" Then Await Load_Grid_Overview(pIsFormLoad, ForceReload) ElseIf GRID_LOAD_TYPE.StartsWith("PROFILE#") Then Await Load_single_Profile(ForceReload) End If GridViewWFItems.HideLoadingPanel() TimerRefresh.Start() If SHOW_MASS_VALIDATOR = False Then GridViewWFItems.OptionsSelection.MultiSelect = False GridViewWFItems.OptionsSelection.MultiSelectMode = GridMultiSelectMode.RowSelect BarButtonItemMassValidation.Visibility = DevExpress.XtraBars.BarItemVisibility.Never Else BarButtonItemMassValidation.Visibility = DevExpress.XtraBars.BarItemVisibility.Always GridViewWFItems.OptionsSelection.MultiSelect = True GridViewWFItems.OptionsSelection.MultiSelectMode = GridMultiSelectMode.CheckBoxRowSelect End If If GridViewWFItems.OptionsView.ShowAutoFilterRow = True Then BarCheckItemAutofilter.Checked = True End If If GridViewWFItems.OptionsFind.AlwaysVisible Then BarCheckItemShowSearch.Checked = True End If GridIsLoaded = True Catch ex As Exception GridIsLoaded = True LOGGER.Error(ex) LOGGER.Info("Unexpected error in Decide_load: " & ex.Message) End Try If TimerRefresh.Enabled = False Then TimerRefresh.Enabled = True End If If pIsFormLoad = True Then FormShown = True End If End Function Private Sub ToolStripButton2_Click_2(sender As Object, e As EventArgs) frmAdminPasswort.ShowDialog() End Sub Public Sub New() Dim splash As New frmSplash() Try splash.ShowDialog() Catch ex As Exception LOGGER.Error(ex) LOGGER.Info($"Error in Splash: {ex.Message}") End Try Try If USER_LANGUAGE <> "" Then Dim cultureInfo As System.Globalization.CultureInfo cultureInfo = New System.Globalization.CultureInfo(USER_LANGUAGE) cultureInfo.DateTimeFormat.ShortDatePattern = USER_DATE_FORMAT Thread.CurrentThread.CurrentCulture = cultureInfo Thread.CurrentThread.CurrentUICulture = cultureInfo CultureInfo.DefaultThreadCurrentCulture = cultureInfo CultureInfo.DefaultThreadCurrentUICulture = cultureInfo End If Catch ex As Exception End Try Try InitializeComponent() ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. Catch ex As Exception LOGGER.Error(ex) LOGGER.Info($"Error in InitializeComponent: {ex.Message}") End Try End Sub Private Sub TimerReminder_Tick(sender As Object, e As EventArgs) Handles TimerReminder.Tick Try If Application.OpenForms().OfType(Of frmValidator).Any Then Exit Sub End If If CURR_DT_OVERVIEW.Rows.Count > 0 And POPUP_REMINDER_ACTIVE = True Then Dim oMessage As String = ClassAllgemeineFunktionen.GUI_LANGUAGE_INFO("App.ReminderPipeline") NotifyIcon1.ShowBalloonTip(30000, $"Reminder {ADDITIONAL_TITLE}", oMessage, ToolTipIcon.Info) End If Catch ex As Exception LOGGER.Warn($"Unexpected error in TimerReminderTick: {ex.Message}") End Try End Sub Sub Load_Profil_from_Grid(pProfilID As Integer) Try CURRENT_ProfilGUID = pProfilID Dim omsg = "Es ist bereits ein Workflow geöffnet!" Dim omsgTitle = "Achtung:" If USER_LANGUAGE <> "de-DE" Then omsg = "There is already a workflow active!" omsgTitle = "Attention:" End If ' Dim th As System.Threading.Thread If Not Application.OpenForms().OfType(Of frmValidator).Any Then If TimerRefresh.Enabled Then TimerRefresh.Enabled = False End If If CHANGES_FORM_DESIGN = True Then LoadCURRENT_DT_PROFILES() LoadVWPM_CONTROL_INDEX() CHANGES_FORM_DESIGN = False End If Dim oExpression = $"GUID = {CURRENT_ProfilGUID}" CURRENT_DT_PROFILE.Clear() CURRENT_DT_PROFILES.Select(oExpression).CopyToDataTable(CURRENT_DT_PROFILE, LoadOption.PreserveChanges) If CURRENT_DT_PROFILE.Rows.Count = 1 Then CURRENT_ProfilName = CURRENT_DT_PROFILE.Rows(0).Item("NAME") Else MsgBox("Could not get a Profile - Check Your log!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE) Exit Sub End If BASEDATA_DT_PROFILE_SEARCHES_DOC.Clear() oExpression = $"PROFILE_ID = {CURRENT_ProfilGUID}" BASEDATA_DT_PROFILES_SEARCHES_DOC.Select(oExpression, "TAB_INDEX").CopyToDataTable(BASEDATA_DT_PROFILE_SEARCHES_DOC, LoadOption.PreserveChanges) BASEDATA_DT_PROFILE_SEARCHES_SQL.Clear() BASEDATA_DT_PROFILES_SEARCHES_SQL.Select(oExpression, "TAB_INDEX").CopyToDataTable(BASEDATA_DT_PROFILE_SEARCHES_SQL, LoadOption.PreserveChanges) Try _FormValidator = New frmValidator AddHandler _FormValidator.FormClosed, AddressOf ValidatorClosed _FormValidator.Show() Catch ex As Exception LOGGER.Warn($"Error opening Form frmValidator [{ex.Message}]") LOGGER.Warn($"ex.InnerException.Message [{ex.InnerException.Message}]") LOGGER.Warn($"ex.InnerException.Source [{ex.InnerException.Source}]") LOGGER.Error(ex.InnerException) MsgBox(ex.Message, MsgBoxStyle.Critical, ADDITIONAL_TITLE) End Try Try Dim iterateIndex As Integer = 0 Dim oNewDataTable As DataTable = CURR_DT_OVERVIEW.Copy For Each row As DataRow In oNewDataTable.Rows If row("GUID") = CURRENT_DOC_GUID Then CURR_DT_OVERVIEW.Rows.RemoveAt(iterateIndex) Exit For Else iterateIndex += 1 End If Next Catch ex As Exception LOGGER.Warn("Unexpected Error in Removing Row after Loading Record from Grid: " & ex.Message) End Try TimerRefresh.Enabled = True ' th = New Threading.Thread(AddressOf Task_A) ' th.SetApartmentState(ApartmentState.STA) ' th.Start() Else LOGGER.Debug("Validator is already open...") MsgBox(omsg, MsgBoxStyle.Exclamation, omsgTitle) End If Catch ex As Exception LOGGER.Error(ex) MsgBox("Unexpected error in Load_Profil_from_Grid: " & ex.Message & vbNewLine & ADDITIONAL_TITLE & " will try to reload the overview - Please try again!", MsgBoxStyle.Information, ADDITIONAL_TITLE) Dim task = Decide_Load(False, True) End Try 'Me.Visible = True 'Decide_Load() End Sub 'Public Sub Task_A() ' Dim frmA = New frmValidator() ' Must be created on this thread! ' Application.Run(frmA) 'End Sub Private Sub Item_Scope(startedFrom As String) Try If Application.OpenForms().OfType(Of frmValidator).Any Then bsiMessage.Caption = "There is already an active workflow!" LOGGER.Info("Item Scope - Workflow open! - Exit") bsiMessage.ItemAppearance.Normal.BackColor = Color.Red Exit Sub End If bsiMessage.Caption = "" bsiMessage.ItemAppearance.Normal.BackColor = Color.Transparent Dim OItemScopeInfo = "No Item so far" 'GridView_Docs.EndSelection() CURRENT_JUMP_DOC_GUID = 0 Dim hitInfo As GridHitInfo = GridViewWFItems.CalcHitInfo(GridCursorLocation) If IsNothing(hitInfo) Then bsiMessage.Caption = "Could not specify hitinfo via click event (CalcHitInfo)" LOGGER.Info("Could not specify hitinfo via click event (CalcHitInfo)") bsiMessage.ItemAppearance.Normal.BackColor = Color.Red Exit Sub End If Dim groupRowText Dim oHitProfilID If hitInfo.InGroupRow Then GridViewItem_Clicked = "GROUP" LOGGER.Debug($"Item_Scope: InGroupRow") OItemScopeInfo = "InGroupRow" groupRowText = GridViewWFItems.GetGroupRowDisplayText(hitInfo.RowHandle) OItemScopeInfo = $"groupRowText {groupRowText}" LOGGER.Debug($"Item_Scope: groupRowText {groupRowText}") oHitProfilID = GridViewWFItems.GetRowCellValue(GridViewWFItems.GetDataRowHandleByGroupRowHandle(hitInfo.RowHandle), GridViewWFItems.Columns("PROFILE_ID")) ElseIf hitInfo.InDataRow Then GridViewItem_Clicked = "ROW" OItemScopeInfo = "InDataRow" LOGGER.Debug($"Item_Scope: InDataRow") If GRID_LOAD_TYPE = "OVERVIEW" Then OItemScopeInfo = $"GRID_LOAD_TYPE = OVERVIEW" LOGGER.Debug($"Item_Scope: GRID_LOAD_TYPE = OVERVIEW") groupRowText = GridViewWFItems.GetGroupRowDisplayText(GridViewWFItems.GetParentRowHandle(hitInfo.RowHandle)) OItemScopeInfo = $"OVERVIEWgroupRowText {groupRowText}" LOGGER.Debug($"Item_Scope: OVERVIEWgroupRowText {groupRowText}") oHitProfilID = GridViewWFItems.GetRowCellValue(GridViewWFItems.GetDataRowHandleByGroupRowHandle(GridViewWFItems.GetParentRowHandle(hitInfo.RowHandle)), GridViewWFItems.Columns("PROFILE_ID")) Else OItemScopeInfo = $"NOT GRID_LOAD_TYPE = OVERVIEW" LOGGER.Debug($"Item_Scope: NOT GRID_LOAD_TYPE = OVERVIEW") If IsNothing(CURRENT_CLICKED_PROFILE_ID) = False Then If CURRENT_CLICKED_PROFILE_ID = 0 Then LOGGER.Info("ItemScope: CURRENT_CLICKED_PROFILE_ID = 0!!!") End If LOGGER.Debug($"Item_Scope: CURRENT_CLICKED_PROFILE_ID [{CURRENT_CLICKED_PROFILE_ID}]") oHitProfilID = CURRENT_CLICKED_PROFILE_ID Else LOGGER.Warn("ItemScope: CURRENT_CLICKED_PROFILE_ID is nothing!!!") Exit Sub End If End If Else Exit Sub End If Dim PROFIL_TITLE If GRID_LOAD_TYPE = "OVERVIEW" Then Try groupRowText = LTrim(RTrim(groupRowText.ToString.Replace("GROUP_TEXT: ", ""))) Catch ex As Exception End Try Dim _SPLIT As String() _SPLIT = groupRowText.Split("|") PROFIL_TITLE = LTrim(RTrim(_SPLIT(0).ToString)) Else End If If Len(PROFIL_TITLE) > 0 Then CURRENT_CLICKED_PROFILE_TITLE = PROFIL_TITLE End If If Len(oHitProfilID) > 0 Then If oHitProfilID > 0 Then If oHitProfilID <> CURRENT_CLICKED_PROFILE_ID Then LOGGER.Debug($"Item_Scope: oHitProfilID {oHitProfilID} <> CURRENT_CLICKED_PROFILE_ID {CURRENT_CLICKED_PROFILE_ID} ") CURRENT_CLICKED_PROFILE_ID = oHitProfilID End If End If End If If Not IsNothing(CURRENT_CLICKED_PROFILE_ID) And IsNumeric(CURRENT_CLICKED_PROFILE_ID) Then LOGGER.Debug($"Item_Scope: Not IsNothing(PROFIL_ID) And IsNumeric(PROFIL_ID)") Dim oExpression As String oExpression = "PROFILE_ID = " & CURRENT_CLICKED_PROFILE_ID If hitInfo.InGroupRow Or (startedFrom = "CMGROUP" And hitInfo.InDataRow) Then CURRENT_JUMP_DOC_GUID = 0 CURRENT_DOC_GUID = 0 CURRENT_ProfilGUID = CURRENT_CLICKED_PROFILE_ID LOGGER.Debug($"Item_Scope: hitInfo.InGroupRow...CURRENT_CLICKED_PROFILE_ID [{CURRENT_CLICKED_PROFILE_ID}]") Load_Profil_from_Grid(CURRENT_CLICKED_PROFILE_ID) ElseIf hitInfo.InDataRow Then LOGGER.Debug($"Item_Scope: hitInfo.InDataRow...") Dim oFocusedDocGUID Try oFocusedDocGUID = GridViewWFItems.GetFocusedRowCellValue(GridViewWFItems.Columns("GUID")) Catch ex As Exception MsgBox("Could not get DocGUID. Inform Your admin-team: Check Your View-Config", MsgBoxStyle.Critical) End Try Dim oFocusedDocID Try oFocusedDocID = GridViewWFItems.GetFocusedRowCellValue(GridViewWFItems.Columns("DocID")) Catch ex As Exception MsgBox("Could not get DocID. Inform Your admin-team: Check Your View-Config", MsgBoxStyle.Critical) End Try If IsNothing(oFocusedDocID) Then LOGGER.Warn("In hitInfo.InDataRow: DocID is nothing!!!") bsiMessage.Caption = "Error getting DocID!" bsiMessage.ItemAppearance.Normal.BackColor = Color.Red Exit Sub End If If IsNothing(oFocusedDocGUID) Then LOGGER.Warn("In hitInfo.InDataRow: oFocusedDocGUID is nothing!!!") bsiMessage.Caption = "Error getting DocGUID!" bsiMessage.ItemAppearance.Normal.BackColor = Color.Red Exit Sub End If LOGGER.Debug($"Item_Scope: GotDocID {oFocusedDocID} and DocGUID {oFocusedDocGUID}") Dim DOC_PATH = GridViewWFItems.GetFocusedRowCellValue(GridViewWFItems.Columns("FULL_FILE_PATH")) If IsNothing(DOC_PATH) Then LOGGER.Warn("In hitInfo.InDataRow: DOC_PATH is nothing!!!") Exit Sub End If DOC_PATH = DOC_PATH.Replace("W:\", "\\windream\objects\") DOC_PATH = DOC_PATH.Replace("K:\", "\\windream\objects\") 'Checking if table really contains one record with profile-id and docid oExpression = oExpression & " AND DocID = " & oFocusedDocID 'Dim TEMP_TABLE = CURR_DT_OVERVIEW 'Dim foundRows() As DataRow 'foundRows = TEMP_TABLE.Select(expression) 'Dim result = 0 'For i = 0 To foundRows.GetUpperBound(0) 'result += 1 'Next 'If result = 1 Then CURRENT_DOC_ID = oFocusedDocID CURRENT_JUMP_DOC_GUID = oFocusedDocGUID CURRENT_DOC_GUID = CURRENT_JUMP_DOC_GUID CURRENT_DOC_PATH = DOC_PATH Dim oSQL = $"SELECT [dbo].[FNPM_CHECK_DocGUID_Valid] ({CURRENT_DOC_GUID})" Dim oResult = DatabaseFallback.GetScalarValueECM(oSQL) Try If CBool(oResult) = True Then Load_Profil_from_Grid(CURRENT_CLICKED_PROFILE_ID) Else Dim omsg As String = "Achtung: der gewählte Beleg ist durch einen anderen Benutzer bereits in Bearbeitung oder anderweitig gesperrt" Dim otitle = "Achtung:" If USER_LANGUAGE <> "de-DE" Then omsg = "Attention: the item You chose is rather in work or locked from another user!" otitle = "Attention:" End If MsgBox(omsg, MsgBoxStyle.Exclamation, otitle) End If Catch ex As Exception LOGGER.Warn($"Uenxpected error in Checking freefile - sql so far: {oSQL} - ") End Try 'Else 'LOGGER.Warn($"Unable to load Object DocID {CURRENT_DOC_ID} and DocGUID {CURRENT_JUMP_DOC_GUID}: Expression returned 0 [{expression}]") 'Exit Sub 'End If End If Else MsgBox("Could not get the ProfileID of file! - Check Your configuration of MainView!", MsgBoxStyle.Critical, ADDITIONAL_TITLE) End If Catch ex As Exception LOGGER.Error(ex) allgFunk.Insert_LogEntry($"{ex.Message} - Stack: [{ex.StackTrace}]") bsiMessage.Caption = "Warning in Item_Scope: " & ex.Message bsiMessage.ItemAppearance.Normal.BackColor = Color.Red End Try End Sub Private Async Sub ValidatorClosed(sender As Object, e As FormClosedEventArgs) Try Await Decide_Load(False, True) If GridControl_Docs.Visible = True And FormOpenClose = False Then RefreshHelper.LoadViewInfo() Catch ex As Exception LOGGER.Error(ex) End Try End Sub Private Function Init_IDB() Try IDBData = New ClassIDBData() Return True Catch ex As Exception LOGGER.Error(ex) MsgBox("Error Init_IDB:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:") LOGGER.Info("Unexpected error in Init_IDB: " & ex.Message, True) Return False End Try End Function Private Function Init_windream() Try '_windream = New ClassWindream_allgemein '_windream.Create_Session() '_windreamPM = New ClassPMWindream() '_windreamPM.Create_Session() WINDREAM = New ClassPMWindream() WINDREAM.Create_Session() WINDREAM_ALLG = New ClassWindream_allgemein Return WINDREAM.IsLoggedIn Catch ex As Exception LOGGER.Error(ex) MsgBox("Error Init_windream:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Attention:") LOGGER.Info("Unexpected error in Init_windream: " & ex.Message, True) Return False End Try End Function Async Function Load_Grid_Overview(FormLoad As Boolean, Optional ForceReload As Boolean = False) As Tasks.Task Dim oStopWatch As New RefreshHelper.SW("Load_Grid_Overview(LGO)") Layout_Single_Profile() GRID_LOAD_TYPE = "OVERVIEW" CURRENT_CLICKED_PROFILE_ID = 0 Try bsiMessage.Caption = "" If BASEDATA_DT_VW_PROFILE_USER.Rows.Count = 0 Then LOGGER.Info("no profiles for user: '" & USER_USERNAME & "' configured!", False) NO_WORKFLOWITEMS = True bsiMessage.Caption = "NO PROFILES FOR USER" bsiMessage.ItemAppearance.Normal.BackColor = Color.Red If GridControl_Docs.Visible = True Then GridControl_Docs.Visible = False End If oStopWatch.Done() Exit Function End If Dim oStopWatch1 As New RefreshHelper.SW("LGO#Load_Profiles_for_User") Load_Profiles_for_User() oStopWatch1.Done() 'ClassInit.InitBasics() Dim oStopWatch2 As New RefreshHelper.SW("LGO#build CURR_DT_OVERVIEW") Dim oSQLOverview = BASEDATA_DT_CONFIG.Rows(0).Item("SQL_PROFILE_MAIN_VIEW") If IsDBNull(oSQLOverview) Then bsiMessage.Caption = "No GROUP-CONFIG (SQL_PROFILE_MAIN_VIEW) in Baseconfig" oStopWatch.Done() oStopWatch2.Done() Exit Function End If oSQLOverview = clsPatterns.ReplaceInternalValues(oSQLOverview) oSQLOverview = clsPatterns.ReplaceUserValues(oSQLOverview) oSQLOverview = oSQLOverview.Replace("@USER_ID", USER_ID) oSQLOverview = oSQLOverview.Replace("@USERNAME", USER_USERNAME) oSQLOverview = oSQLOverview.Replace("@MACHINE_NAME", Environment.MachineName) oSQLOverview = oSQLOverview.Replace("@DATE", Now.ToShortDateString) oSQLOverview = oSQLOverview.Replace("@PROFILE_ID", CURRENT_CLICKED_PROFILE_ID) CURR_DT_OVERVIEW = Await DatabaseFallback.GetDatatableECMAsync(oSQLOverview) oStopWatch2.Done() If Not IsNothing(CURR_DT_OVERVIEW) Then LOGGER.Debug($"Datatable CURR_DT_OVERVIEW loaded: {CURR_DT_OVERVIEW.Rows.Count} rows") If GridControl_Docs.Visible = False Then GridControl_Docs.Visible = True End If Dim oADDED = GET_LAST_ADDED(CURR_DT_OVERVIEW) Dim oChanged = GET_LAST_CHANGED(CURR_DT_OVERVIEW) Dim oCOUNT = CURR_DT_OVERVIEW.Rows.Count If oADDED = OVERVIEW_ADDED_WHEN And oChanged = OVERVIEW_CHANGED_WHEN And oCOUNT = OVERVIEW_COUNT Then If ForceReload = False Then LOGGER.Debug("No changes on OverviewHash - so exit Load_Grid_overview") Exit Function End If Else LOGGER.Info("Differences on OverviewHash") LOGGER.Debug($"oADDED/OVERVIEW_ADDED_WHEN: {oADDED}/{OVERVIEW_ADDED_WHEN}#oADDED/OVERVIEW_ADDED_WHEN: {oChanged}/{OVERVIEW_CHANGED_WHEN}") OVERVIEW_ADDED_WHEN = oADDED OVERVIEW_CHANGED_WHEN = oChanged OVERVIEW_COUNT = oCOUNT End If If USER_LANGUAGE = "de-DE" Then GridViewWFItems.ViewCaption = "Gesamtübersicht" Else GridViewWFItems.ViewCaption = "Overview" End If NO_WORKFLOWITEMS = False If CURR_DT_OVERVIEW.Rows.Count = 0 Then If USER_LANGUAGE = "de-DE" Then GridViewWFItems.ViewCaption = "Aktuell keine Workflowdaten vorhanden!" Else GridViewWFItems.ViewCaption = "No workflowdata!" End If NO_WORKFLOWITEMS = True 'MsgBox("Aktuell keine Workflowdaten vorhanden!", MsgBoxStyle.Information) GridControl_Docs.Visible = False bindsourcegrid.DataSource = Nothing GridControl_Docs.DataSource = Nothing Try GridViewWFItems.Columns.Clear() Catch ex As Exception LOGGER.Error(ex) End Try Exit Function End If GridControl_Docs.Visible = True If TL_ICON = True Then 'Spalte für Status Icon erstellen Dim columnStateIcon As New DataColumn() columnStateIcon.DataType = GetType(Image) columnStateIcon.ColumnName = "ICON" columnStateIcon.Caption = "" CURR_DT_OVERVIEW.Columns.Add(columnStateIcon) End If RedDocuments = 0 YellowDocuments = 0 GreenDocuments = 0 If TL_ICON = True Then For Each row As DataRow In CURR_DT_OVERVIEW.Rows Dim State As Integer = row.Item("TL_STATE") Select Case State Case 1 RedDocuments += 1 row.Item("ICON") = My.Resources.bullet_red Case 2 YellowDocuments += 1 row.Item("ICON") = My.Resources.bullet_orange Case 3 GreenDocuments += 1 row.Item("ICON") = My.Resources.bullet_green End Select Next End If If IDB_ACTIVE = True Then ' Spalte für Conversation erstellen Dim columnConvIcon As New DataColumn() columnConvIcon.DataType = GetType(Image) columnConvIcon.ColumnName = "CONVERSATION" columnConvIcon.Caption = "" CURR_DT_OVERVIEW.Columns.Add(columnConvIcon) For Each oRow As DataRow In CURR_DT_OVERVIEW.Rows Try Dim oCONVYN As Boolean Try oCONVYN = oRow.Item("CONV_YN") Catch ex As Exception LOGGER.Warn("Load_Grid_Overview - Column CONV_YN obviously is not part of CURR_DT_OVERVIEW") Exit For End Try Select Case oCONVYN Case True oRow.Item("CONVERSATION") = My.Resources.conversation End Select Catch ex As Exception LOGGER.Warn("Load_Grid_Overview - Column CONVERSATION obviously is not part of GridView_Docs") Exit For End Try Next End If bindsourcegrid.DataSource = CURR_DT_OVERVIEW GridControl_Docs.DataSource = bindsourcegrid Dim objectCount_Descr = GridViewWFItems.RowCount.ToString If USER_LANGUAGE = "de-DE" Then GridViewWFItems.ViewCaption = "Gesamtübersicht" objectCount_Descr &= " Vorgänge" Else GridViewWFItems.ViewCaption = "Overview" objectCount_Descr &= " objects" End If ' tslblObjectCount.Text = objectCount_Descr 'tslblObjectCount.ForeColor = Color.DarkBlue Dim oColNotPartofLayout As Boolean oColNotPartofLayout = False 'GridControlDocRow.ForceInitialize() ' GridControl1.DataSource = CURR_DT_PROFILEGRID If FormLoad = True Then If IDB_ACTIVE = True Then oColNotPartofLayout = Column_inGridViewLayout("CONV_YN") End If End If If FORCE_LAYOUT_OVERVIEW = True And (GridLayoutChanged() = True Or oColNotPartofLayout = True) Then ResetLayout() SaveGridLayout() Else If oColNotPartofLayout = False Then RestoreLayout() End If End If Try LOGGER.Debug("Now Working on Groups..") 'GridView_Docs.OptionsBehavior.AutoExpandAllGroups = False 'GridView_Docs.OptionsView.ShowGroupedColumns = False GridViewWFItems.OptionsView.ShowGroupPanel = False Dim oindex As Integer = 0 If Not IsNothing(BASEDATA_DTGRID_GROUPS) Then For Each oGridGroup As DataRow In BASEDATA_DTGRID_GROUPS.Rows LOGGER.Debug($"Addig group [{oGridGroup.Item("GROUPNAME")}] for Grid...") Try GridViewWFItems.Columns.Item(oGridGroup.Item("GROUPNAME")).GroupIndex = oindex Catch ex As Exception End Try oindex += 1 Next End If Try GridViewWFItems.Columns.Item("GROUP_TEXT").Visible = False GridViewWFItems.Columns.Item("GROUP_COLOR").Visible = False Catch ex As Exception End Try For index = 0 To GridViewWFItems.GroupCount - 1 'Dim v = GridView_Docs.GroupedColumns(index).ToString LOGGER.Debug($"Addig tag [{GridViewWFItems.Columns.Item("PROFILE_ID")}] for group...") Dim sd = GridViewWFItems.GroupedColumns(index).GetTextCaption GridViewWFItems.GroupedColumns(index).Tag = GridViewWFItems.Columns.Item("PROFILE_ID") Next LOGGER.Debug("finished Grouping!") GridViewWFItems.Columns.Item("PROFILE_ID").Visible = False GridViewWFItems.Columns.Item("GUID").Visible = False Try GridViewWFItems.Columns.Item("FULL_FILE_PATH").Visible = False 'GridView_Docs.Columns.Item("DocID").Visible = False GridViewWFItems.Columns.Item("TL_STATE").Visible = False Catch ex As Exception End Try GridViewWFItems.CollapseAllGroups() If TL_ICON = True Then Try GridViewWFItems.Columns.Item("ICON").MaxWidth = 24 GridViewWFItems.Columns.Item("ICON").MinWidth = 24 GridViewWFItems.Columns.Item("ICON").AppearanceCell.BackColor = Color.White GridViewWFItems.Columns.Item("ICON").Fixed = DevExpress.XtraGrid.Columns.FixedStyle.Left Catch ex As Exception End Try End If Try If GridViewWFItems.Columns.Item("CONV_YN") IsNot Nothing Then GridViewWFItems.Columns.Item("CONV_YN").Visible = False End If Catch ex As Exception LOGGER.Info("LoadGridOverview - Check wether Column CONV_YN is part of select/view") End Try If IDB_ACTIVE = True Then Try GridViewWFItems.Columns.Item("CONVERSATION").MaxWidth = 24 GridViewWFItems.Columns.Item("CONVERSATION").MinWidth = 24 GridViewWFItems.Columns.Item("CONVERSATION").Fixed = DevExpress.XtraGrid.Columns.FixedStyle.Left Catch ex As Exception LOGGER.Info("LoadGridOverview - Column CONVERSATION obviously not part of GridView_Docs") End Try End If 'GridView_Docs.OptionsView.ShowIndicator = False LOGGER.Debug("GridView_Docs.Columns loaded...") Try Dim oReducedColName = LAST_EDITED_COLUMN.Replace("[", "") oReducedColName = oReducedColName.Replace("]", "") GridViewWFItems.Columns(oReducedColName).DisplayFormat.FormatType = FormatType.DateTime GridViewWFItems.Columns(oReducedColName).DisplayFormat.FormatString = "dd.MM.yyyy HH:MM:ss" Catch ex As Exception Try GridViewWFItems.Columns("Zuletzt bearbeitet").DisplayFormat.FormatType = FormatType.DateTime GridViewWFItems.Columns("Zuletzt bearbeitet").DisplayFormat.FormatString = "dd.MM.yyyy HH:MM:ss" Catch ex1 As Exception LOGGER.Warn("(Warning LoadGridOverview)Column [Last edited] or [Zuletzt bearbeitet] not part of OverviewSQL") End Try End Try LOGGER.Debug("finished Formatting Grid!") Catch ex As Exception LOGGER.Error(ex) LOGGER.Info("Unexpected Error in Formatting Grid: " & ex.Message) End Try 'SaveGridLayout() If GridViewWFItems.Columns.Count <= 2 Then LOGGER.Info("GridView_Docs.Columns.Count <= 2 - Reset_Gridlayout will be forced...", False) Await Reset_GridLayout(FormLoad) End If Else NO_WORKFLOWITEMS = True GridControl_Docs.Visible = False 'BindingNavigator1.Dock = DockStyle.None GridControl_Docs.DataSource = Nothing Try GridViewWFItems.Columns.Clear() Catch ex As Exception LOGGER.Error(ex) End Try End If oStopWatch.Done() Catch ex As Exception LOGGER.Error(ex) LOGGER.Info("Load_Grid_Overview - Fehler: " & ex.Message) End Try End Function Private Sub tsmiValidationProfil_Click(sender As Object, e As EventArgs) Handles tsmiValidationProfil.Click If CURRENT_CLICKED_PROFILE_ID <> 0 Then Load_Profil_from_Grid(CURRENT_CLICKED_PROFILE_ID) Else MsgBox("Please choose a profile!", MsgBoxResult.Ok, ADDITIONAL_TITLE) End If End Sub Private Async Sub GridLayout_Reset() FRONTEND_ACTION = "RESET_LAYOUT" Timer_Inactivity_Reset_Disable("TabellenlayoutZurücksetzenToolStripMenuItem") Await Reset_GridLayout(False) Await Decide_Load(False, True) SaveGridLayout() GridBuilder.WithFontSizeDelta(CONFIG.Config.GridFontSizeDelta) If GridControl_Docs.Visible = True And FormOpenClose = False Then RefreshHelper.LoadViewInfo() FRONTEND_ACTION = "NONE" End Sub Async Function Reset_GridLayout(FormLoad As Boolean) As Tasks.Task If GridControl_Docs.Visible = True And FormOpenClose = False Then RefreshHelper.SaveViewInfo() End If InResetlayout = True ' Layout zurücksetzen ResetLayout() 'SaveGridLayout() ' Ansicht neu laden LoadNavBar() Await Decide_Load(FormLoad) InResetlayout = False End Function Private Sub GridView_Docs_DoubleClick(sender As Object, e As EventArgs) Handles GridViewWFItems.DoubleClick Item_Scope("DOUBLECLICK") End Sub Private Sub GridView_Docs_CustomDrawGroupRow(sender As Object, e As Views.Base.RowObjectCustomDrawEventArgs) Handles GridViewWFItems.CustomDrawGroupRow Try ' Added If FormOpenClose = True And GridIsLoaded = False Then Exit Sub End If Dim info As GridGroupRowInfo = TryCast(e.Info, GridGroupRowInfo) Dim view As GridView = sender If info.Column.FieldName = "GROUP_TEXT" Then info.GroupText = info.GroupValueText Dim oColorString As String = "LightGray" Dim oFontColorString As String = "Black" Dim oFoundConfig As Boolean = False For Each row As DataRow In CURR_DT_VWPM_PROFILE_ACTIVE.Rows If row.Item("GROUP_TEXT") = info.GroupValueText Then oFoundConfig = True oColorString = row.Item("GROUP_COLOR") oFontColorString = row.Item("GROUP_FONT_COLOR") ' Added Exit For End If Next If oFoundConfig = False Then LOGGER.Debug($"CustomDrawGroupRow: Could not find a ColorConfig for ProfileGroupValueText [{info.GroupValueText}]...") ' Added Exit Sub End If Dim oColor As Color = ParseColorString(oColorString, Color.LightGray, "Background Color") Dim oFontColor As Color = ParseColorString(oFontColorString, Color.Black, "Font Color") info.Appearance.BackColor = oColor info.Appearance.ForeColor = oFontColor End If Catch ex As Exception LOGGER.Error(ex) End Try End Sub Private Function ParseColorString(ColorString As String, DefaultColor As Color, ColorDescription As String) As Color Dim oResultColor As Color If ColorString.Contains(";") Or ColorString.Contains(".") Then Dim oSplitColorString As String() If ColorString.Contains(";") Then oSplitColorString = ColorString.Split(";") Else oSplitColorString = ColorString.Split(".") End If Try oResultColor = Color.FromArgb(oSplitColorString(0), oSplitColorString(1), oSplitColorString(2)) Catch ex As Exception oResultColor = DefaultColor LOGGER.Info("ParseColorString: Could not get Color.FromArgb [{0}] for {1}", ColorString, ColorDescription) End Try Else Try oResultColor = Color.FromName(ColorString) Catch ex As Exception LOGGER.Info("ParseColorString: Could not get Color.FromArgb [{0}] for {1}", ColorString, ColorDescription) oResultColor = DefaultColor End Try End If Return oResultColor End Function Private Sub GridView_Docs_MouseDown(sender As Object, e As MouseEventArgs) Handles GridViewWFItems.MouseDown Dim view As GridView = sender Dim hi As GridHitInfo = view.CalcHitInfo(e.Location) Dim groupRowButtonClicked = (hi.HitTest = GridHitTest.RowGroupButton) GridCursorLocation = e.Location 'If e.Button = MouseButtons.Left Then ' wenn in eine Group Row Doppelt geklickt wurde.. If hi.InGroupRow And Not groupRowButtonClicked Then ' Ein/Ausklappen verhindern DXMouseEventArgs.GetMouseArgs(e).Handled = True GridViewItem_Clicked = "GROUP" If Not Application.OpenForms().OfType(Of frmValidator).Any Then CURRENT_CLICKED_PROFILE_ID = GridViewWFItems.GetRowCellValue(GridViewWFItems.GetDataRowHandleByGroupRowHandle(hi.RowHandle), GridViewWFItems.Columns("PROFILE_ID")) End If ElseIf hi.InDataRow Then GridViewItem_Clicked = "ROW" If Not Application.OpenForms().OfType(Of frmValidator).Any Then CURRENT_CLICKED_PROFILE_ID = GridViewWFItems.GetRowCellValue(GridViewWFItems.GetDataRowHandleByGroupRowHandle(hi.RowHandle), GridViewWFItems.Columns("PROFILE_ID")) End If Else GridViewItem_Clicked = Nothing End If If Not IsNothing(CURRENT_CLICKED_PROFILE_ID) Then If IsNumeric(CURRENT_CLICKED_PROFILE_ID) Then If CURRENT_CLICKED_PROFILE_ID > 0 Then For Each orow As DataRow In CURRENT_DT_PROFILES.Rows If orow.Item("GUID") = CURRENT_CLICKED_PROFILE_ID Then If Not Application.OpenForms().OfType(Of frmValidator).Any Then CURRENT_CLICKED_PROFILE_TITLE = orow.Item("TITLE") End If Exit For End If Next End If End If End If End Sub Private Sub GridView_Docs_ColumnWidthChanged(sender As Object, e As Views.Base.ColumnEventArgs) Handles GridViewWFItems.ColumnWidthChanged GridLayout_Changed() End Sub Private Sub GridView_Docs_EndSorting(sender As Object, e As EventArgs) Handles GridViewWFItems.EndSorting GridLayout_Changed() End Sub Private Sub GridView_Docs_LostFocus(sender As Object, e As EventArgs) Handles GridViewWFItems.LostFocus ' Save expanded GroupRows If GridControl_Docs.Visible = True And FormOpenClose = False Then RefreshHelper.SaveViewInfo() End If End Sub Sub LoadCURRENT_DT_PROFILES() Dim oSQL = "select * from TBPM_PROFILE where ACTIVE = 1" 'CURRENT_DT_PROFILES = DataASorDB.GetDatatable("DD_ECM", oSQL, "TBPM_PROFILE", "") CURRENT_DT_PROFILES = DatabaseFallback.GetDatatable("TBPM_PROFILE", New GetDatatableOptions(oSQL, DatabaseType.ECM)) End Sub Sub LoadVWPM_CONTROL_INDEX() Dim oSQL = $"SELECT * FROM VWPM_CONTROL_INDEX ORDER BY PROFIL_ID,Y_LOC, X_LOC" 'DTVWCONTROLS_INDEX = DataASorDB.GetDatatable("DD_ECM", oSQL, "VWPM_CONTROL_INDEX", "") DTVWCONTROLS_INDEX = DatabaseFallback.GetDatatable("VWPM_CONTROL_INDEX", New GetDatatableOptions(oSQL, DatabaseType.ECM)) End Sub Sub GetBaseData(pMode As String) Dim oStopWatch As New RefreshHelper.SW("GetBaseData") Try Dim oSQL = String.Format("SELECT * FROM [dbo].[FNDD_CHECK_USER_MODULE] ('{0}','PM',{1})", USER_USERNAME, CLIENT_SELECTED) Dim DT_CHECKUSER_MODULE As DataTable 'DT_CHECKUSER_MODULE = DataASorDB.GetDatatable("DD_ECM", oSQL, "TBDD_USER_MODULE", $"USERNAME = '{USER_USERNAME.ToLower}' AND MODULE_SHORT = 'PM'") DT_CHECKUSER_MODULE = DatabaseFallback.GetDatatable("TBDD_USER_MODULE", New GetDatatableOptions(oSQL, DatabaseType.ECM) With { .FilterExpression = $"USERNAME = '{USER_USERNAME.ToLower}' AND MODULE_SHORT = 'PM'" }) If pMode = "bwBasicData" Then bwBasicData.ReportProgress(10) If pMode <> "Load" Then ClassParamRefresh.Refresh_Params(DT_CHECKUSER_MODULE) End If If pMode = "bwBasicData" Then bwBasicData.ReportProgress(20) oSQL = String.Format("SELECT T.* FROM VWPM_PROFILE_ACTIVE T WHERE T.FILE_COUNT > 0 AND T.GUID IN (SELECT PROFILE_ID FROM [dbo].[FNPM_GET_ACTIVE_PROFILES_USER] ({0}))", USER_ID) CURR_DT_VWPM_PROFILE_ACTIVE = DatabaseFallback.GetDatatableECM(oSQL) If pMode = "bwBasicData" Then bwBasicData.ReportProgress(30) LoadCURRENT_DT_PROFILES() If pMode = "Load" Then CURRENT_DT_PROFILE = CURRENT_DT_PROFILES.Clone() End If If pMode = "bwBasicData" Then bwBasicData.ReportProgress(40) oSQL = "select * from TBPM_PROFILE_SEARCH where TYPE = 'DOC' AND ACTIVE = 1 ORDER BY PROFILE_ID,TAB_INDEX" 'BASEDATA_DT_PROFILES_SEARCHES_DOC = DataASorDB.GetDatatable("DD_ECM", oSQL, "TBPM_PROFILE_SEARCH", "TYPE = 'DOC'", "PROFILE_ID,TAB_INDEX") BASEDATA_DT_PROFILES_SEARCHES_DOC = DatabaseFallback.GetDatatable("TBPM_PROFILE_SEARCH", New GetDatatableOptions(oSQL, DatabaseType.ECM) With { .FilterExpression = "TYPE = 'DOC'", .SortByColumn = "PROFILE_ID,TAB_INDEX" }) If pMode = "Load" Then BASEDATA_DT_PROFILE_SEARCHES_DOC = BASEDATA_DT_PROFILES_SEARCHES_DOC.Clone() End If If pMode = "bwBasicData" Then bwBasicData.ReportProgress(50) oSQL = "select * from TBPM_PROFILE_SEARCH where TYPE = 'SQL' AND ACTIVE = 1 ORDER BY PROFILE_ID,TAB_INDEX" 'BASEDATA_DT_PROFILES_SEARCHES_SQL = DataASorDB.GetDatatable("DD_ECM", oSQL, "TBPM_PROFILE_SEARCH", "TYPE = 'SQL'", "PROFILE_ID,TAB_INDEX") BASEDATA_DT_PROFILES_SEARCHES_SQL = DatabaseFallback.GetDatatable("TBPM_PROFILE_SEARCH", New GetDatatableOptions(oSQL, DatabaseType.ECM) With { .FilterExpression = "TYPE = 'SQL'", .SortByColumn = "PROFILE_ID,TAB_INDEX" }) If pMode = "Load" Then BASEDATA_DT_PROFILE_SEARCHES_SQL = BASEDATA_DT_PROFILES_SEARCHES_SQL.Clone() End If If pMode = "bwBasicData" Then bwBasicData.ReportProgress(60) LoadVWPM_CONTROL_INDEX() If pMode = "bwBasicData" Then bwBasicData.ReportProgress(80) If pMode = "Load" Then DTVWCONTROL_INDEX = DTVWCONTROLS_INDEX.Clone() End If oSQL = $"SELECT * FROM TBPM_PROFILE_CONTROLS WHERE LEN(ISNULL(SQL_UEBERPRUEFUNG,'')) > 0 AND CTRL_TYPE <> 'BUTTON'" 'DTCONTROLS_WITH_SQL = DataASorDB.GetDatatable("DD_ECM", oSQL, "DTCONTROLS_WITH_SQL", "", "") DTCONTROLS_WITH_SQL = DatabaseFallback.GetDatatable("DTCONTROLS_WITH_SQL", New GetDatatableOptions(oSQL, DatabaseType.ECM)) If pMode = "bwBasicData" Then bwBasicData.ReportProgress(85) If pMode = "bwBasicData" Then bwBasicData.ReportProgress(100) Catch ex As Exception LOGGER.Warn($"Error in GetBaseData - Error: [{ex.Message}]") End Try oStopWatch.Done() End Sub Private Async Sub frmMain_Shown(sender As Object, e As EventArgs) Handles Me.Shown If RIBBON_COLOR_SCHEME = "BLUE" Then RibbonControl1.ColorScheme = DevExpress.XtraBars.Ribbon.RibbonControlColorScheme.Blue ElseIf RIBBON_COLOR_SCHEME = "DarkBlue".ToUpper Then RibbonControl1.ColorScheme = DevExpress.XtraBars.Ribbon.RibbonControlColorScheme.DarkBlue ElseIf RIBBON_COLOR_SCHEME = "Green".ToUpper Then RibbonControl1.ColorScheme = DevExpress.XtraBars.Ribbon.RibbonControlColorScheme.Green ElseIf RIBBON_COLOR_SCHEME = "Orange".ToUpper Then RibbonControl1.ColorScheme = DevExpress.XtraBars.Ribbon.RibbonControlColorScheme.Orange ElseIf RIBBON_COLOR_SCHEME = "Purple".ToUpper Then RibbonControl1.ColorScheme = DevExpress.XtraBars.Ribbon.RibbonControlColorScheme.Purple ElseIf RIBBON_COLOR_SCHEME = "Red".ToUpper Then RibbonControl1.ColorScheme = DevExpress.XtraBars.Ribbon.RibbonControlColorScheme.Red ElseIf RIBBON_COLOR_SCHEME = "Teal".ToUpper Then RibbonControl1.ColorScheme = DevExpress.XtraBars.Ribbon.RibbonControlColorScheme.Teal Else RibbonControl1.ColorScheme = DevExpress.XtraBars.Ribbon.RibbonControlColorScheme.Default End If LOGGER.Debug($" RibbonControl1.ColorScheme [{RIBBON_COLOR_SCHEME}]") Me.Text = ADDITIONAL_TITLE CurrNavBarGroup = NavBarControl1.Groups(1) FormShown = True Await Decide_Load(True) Handling_DEBUG_USER() End Sub Sub Handling_DEBUG_USER() If DEBUG = True Then If USER_LANGUAGE = "de-DE" Then bsiDebug.Caption = "HINWEIS: UserDebugMode ist eingeschaltet!" Else bsiDebug.Caption = "INFORMATION: UserDebugMode activated!" End If bsiDebug.Visibility = DevExpress.XtraBars.BarItemVisibility.Always Else bsiDebug.Visibility = DevExpress.XtraBars.BarItemVisibility.Never End If End Sub Sub DebuglogBackgroundthread() Dim oSQL As String = "None" Try For Each oSLogstring As String In LOGCONFIG.Logs Dim oLogSplit As String() = oSLogstring.Split("|") Dim oMessage = PrepareLogMessage(oSLogstring) Dim oDateTime As Date = CDate(oLogSplit(0)) oSQL = $"INSERT INTO [dbo].[TBPM_LOG_DEBUG] ([USERID] , [LOGMSG], [ADDED_WHEN],DATE_STR) VALUES({USER_ID},'{oMessage}',GetDate(),'{oDateTime}')" DatabaseFallback.ExecuteNonQueryECM(oSQL) Next LOGCONFIG.ClearLogs() Catch ex As Exception LOGGER.Error(ex) LOGGER.Warn($"oSQL so far [{oSQL}]") End Try End Sub Private Sub tsslblDEBUG_LOG_MouseHover(sender As Object, e As EventArgs) MsgBox("UserDebugMode is activated remotely. Debugdata will be transferred to database and will be deleted after 10 days!!", MsgBoxStyle.Information, ADDITIONAL_TITLE) End Sub Private Sub frmMain_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing If Application.OpenForms().OfType(Of frmValidator).Any Then frmValidator.Close() End If End Sub Sub Grid_Reset_Filter() Timer_Inactivity_Reset_Disable("LöscheAlleFilterToolStripMenuItem") Try GridViewWFItems.ClearFindFilter() GridViewWFItems.ClearColumnsFilter() SaveGridLayout() Catch ex As Exception End Try End Sub Private Sub ContextMenuNotifyIcon_Opening(sender As Object, e As CancelEventArgs) Handles ContextMenuNotifyIcon.Opening If CONFIG.Config.ReminderTimer <> 0 Then PopupErinnerungInaktivierenToolStripMenuItem.Text = "Popup Erinnerung inaktivieren" Else PopupErinnerungInaktivierenToolStripMenuItem.Text = $"Popup Erinnerung aktivieren ({CONFIG.Config.ReminderTimer} min)" End If End Sub Private Sub PopupErinnerungInaktivierenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles PopupErinnerungInaktivierenToolStripMenuItem.Click If CONFIG.Config.ReminderTimer <> 0 Then CONFIG.Config.ReminderTimer = 0 CONFIG.Save() Check_Timer_Notification() Else CONFIG.Config.ReminderTimer = 5 CONFIG.Save() Check_Timer_Notification() End If End Sub Private Sub AnzeigenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AnzeigenToolStripMenuItem.Click BringMonitor2Front() End Sub Private Sub frmMain_Resize(sender As Object, e As EventArgs) Handles Me.Resize Try If FormShown = False Then Exit Sub End If If WindowState = FormWindowState.Maximized Then My.Settings.frmMainWindowState = "Maximized" ElseIf WindowState = FormWindowState.Normal Then My.Settings.frmMainWindowState = "Normal" End If My.Settings.Save() Catch ex As Exception LOGGER.Error(ex) End Try End Sub Private Sub BarButtonItem3_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtniGrundeinstellung.ItemClick Try frmKonfig.ShowDialog() ' Load_Profil() Check_Timer_Notification() Catch ex As Exception LOGGER.Error(ex) MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler beim Laden Grundeinstellungen:") End Try End Sub Private Async Sub bbtniRefresh_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtniRefresh.ItemClick Timer_Inactivity_Reset_Disable("OverviewRefreshClick") If GridControl_Docs.Visible = True And FormOpenClose = False Then RefreshHelper.SaveViewInfo() SaveGridLayout() End If LoadNavBar() Await Decide_Load(False, True) If GridControl_Docs.Visible = True And FormOpenClose = False Then RefreshHelper.LoadViewInfo() End If End Sub Private Sub bbtniMonitor_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtniMonitor.ItemClick If Not Application.OpenForms().OfType(Of frmMonitor).Any Then frmMonitor.Show() End If End Sub Private Sub bbiProfilverwaltung_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbiProfilverwaltung.ItemClick 'Dim AdminSecurity As Boolean = False 'AdminSecurity = TBPM_KONFIGURATIONTableAdapter.cmdGetAdminSecurity() 'If AdminSecurity = True Then ' frmLoginAdmin.ShowDialog() 'Else frmAdministration.Show() ' End If End Sub Private Sub bbiKonfiguration_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbiKonfiguration.ItemClick frmAdmin2.ShowDialog() End Sub Private Sub bbtniMetadataFile_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtniMetadataFile.ItemClick frmDesignerLayout.Show() End Sub Private Sub bwSync_DoWork(sender As Object, e As DoWorkEventArgs) Handles bwSync.DoWork End Sub Private Sub bwSync_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) Handles bwSync.ProgressChanged BarEditItem1.EditValue = e.ProgressPercentage End Sub Private Sub Timer5Mins_Tick(sender As Object, e As EventArgs) Handles Timer5Mins.Tick Try Timer5Mins_running = True If Not bwBasicData.IsBusy Then BarEditItem1.Caption = "Get BasicData" BarEditItem1.Visibility = DevExpress.XtraBars.BarItemVisibility.Always bwBasicData.RunWorkerAsync() End If If DEBUG = True Then ' 'Jetzt der insert der Inhalte If Not IsNothing(LOGCONFIG.Logs) Then If LOGCONFIG.Logs.Count > 0 Then Dim thread As New Thread(AddressOf DebuglogBackgroundthread) thread.Start() End If End If End If Catch ex As Exception LOGGER.Warn($"Timer5Mins Error: {ex.Message}") End Try Timer5Mins_running = False End Sub Private Sub bwBasicData_DoWork(sender As Object, e As DoWorkEventArgs) Handles bwBasicData.DoWork GetBaseData("bwBasicData") End Sub Private Sub bwBasicData_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Handles bwBasicData.RunWorkerCompleted If USER_IS_ADMIN Then If USER_LANGUAGE = "de-DE" Then bsiUserLoggedIn.Caption = "License Count: " & USERCOUNT_LOGGED_IN Else bsiUserLoggedIn.Caption = "Lizenz-Zähler: " & USERCOUNT_LOGGED_IN End If End If BarEditItem1.Visibility = DevExpress.XtraBars.BarItemVisibility.Never End Sub Private Sub bwBasicData_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) Handles bwBasicData.ProgressChanged BarEditItem1.EditValue = e.ProgressPercentage End Sub Private Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnitDashboardInv.ItemClick If Application.OpenForms().OfType(Of frmInvDashboard).Any Then Exit Sub End If frmInvDashboard.Show() End Sub Private Sub OutOfRangePMFixierenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles OutOfRangePMFixierenToolStripMenuItem.Click Dim myPoint As Point = New Point(50, 50) Me.Location = Screen.AllScreens(UBound(Screen.AllScreens)).Bounds.Location + myPoint BringMonitor2Front() End Sub Private Sub GridView_Docs_RowStyle(sender As Object, e As RowStyleEventArgs) Handles GridViewWFItems.RowStyle If FormShown = False Then Exit Sub End If If e.RowHandle = -1 Then IsFilterMode = True Exit Sub End If If e.RowHandle = DevExpress.XtraGrid.GridControl.AutoFilterRowHandle Then IsFilterMode = True ' e.Appearance.BackColor = Color.Yellow Else IsFilterMode = False Try Dim oRowColorCellValue = GridViewWFItems.GetRowCellValue(e.RowHandle, "ROW_COLOR") If Not IsNothing(oRowColorCellValue) Then Dim oColor As Color Try If oRowColorCellValue.ToString.Contains(";") Or oRowColorCellValue.ToString.Contains(".") Then Dim oColorSplit As String() If oRowColorCellValue.Contains(";") Then oColorSplit = oRowColorCellValue.Split(";") ElseIf oRowColorCellValue.Contains(".") Then oColorSplit = oRowColorCellValue.Split(".") End If Try oColor = Color.FromArgb(oColorSplit(0), oColorSplit(1), oColorSplit(2)) Catch ex As Exception LOGGER.Info($"RowColorHandler: Could not get Color.FromArgb [{oRowColorCellValue}]") oColor = Color.LightGray End Try Else Try oColor = Color.FromName(oRowColorCellValue) Catch ex As Exception LOGGER.Info($"RowColorHandler: Could not get Color.FromName [{oRowColorCellValue}]") End Try End If Catch ex As Exception LOGGER.Info("RowBackColor: " & ex.Message, False) Exit Sub End Try e.Appearance.BackColor = oColor e.HighPriority = True End If Catch ex As Exception LOGGER.Info("Unexpected Error in RowStyle: " & ex.Message, False) End Try End If End Sub Private Async Sub BarButtonItem2_ItemClick_1(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnitmGhostMode.ItemClick frmGhostMode.ShowDialog() If USER_GHOST_MODE_ACTIVE = True And USER_GHOST_MODE_USRNAME <> String.Empty Then LOGGER.Info($"GHOST MODE for User {USER_GHOST_MODE_USRNAME} will now be initialized!") If USER_LANGUAGE = "de-DE" Then BarButtonItemGhostMode.Caption = $"Ghost Modus ({USER_GHOST_MODE_USRNAME}) inaktivieren" Else BarButtonItemGhostMode.Caption = $"Inactivate ghost mode ({USER_GHOST_MODE_USRNAME})" End If BarButtonItemGhostMode.Visibility = DevExpress.XtraBars.BarItemVisibility.Always _Init.InitBasics() _Init.InitUserLogin(USER_GHOST_MODE_USRNAME) _Init.InitBasics2() GetBaseData("Load") LoadNavBar() Await Decide_Load(False) If GridControl_Docs.Visible = True And FormOpenClose = False Then RefreshHelper.LoadViewInfo() End If End Sub Private Async Sub BarButtonItem2_ItemClick_2(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItemGhostMode.ItemClick USER_GHOST_MODE_ACTIVE = False USER_GHOST_MODE_USRNAME = String.Empty BarButtonItemGhostMode.Visibility = DevExpress.XtraBars.BarItemVisibility.Never _Init.InitUserLogin() LoadNavBar() Await Decide_Load(False) If GridControl_Docs.Visible = True And FormOpenClose = False Then RefreshHelper.LoadViewInfo() End Sub Private Sub GridView_Docs_ColumnFilterChanged(sender As Object, e As EventArgs) Handles GridViewWFItems.ColumnFilterChanged Try If FormShown = False Then Exit Sub End If Timer_Inactivity_Reset_Disable("GridView_Docs.ColumnFilterChanged") Dim objectCount_Descr = GridViewWFItems.RowCount.ToString If USER_LANGUAGE <> "de-DE" Then objectCount_Descr &= " objects (filtered)" Else objectCount_Descr &= " Vorgänge (gefiltert)" End If If USER_LANGUAGE = "de-DE" Then GridViewWFItems.ViewCaption = "Gesamtübersicht" Else GridViewWFItems.ViewCaption = "Overview" End If GridViewWFItems.ViewCaption += $"|{objectCount_Descr}" ' tslblObjectCount.Text = objectCount_Descr 'tslblObjectCount.ForeColor = Color.DarkOrange SaveGridLayout() Catch ex As Exception LOGGER.Error(ex.Message) End Try End Sub Sub Grid_Export() XtraSaveFileDialog1.FileName = "OverviewProcessManager.xlsx" XtraSaveFileDialog1.DefaultExt = ".xlsx" If XtraSaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then Dim oOptions As New XlsxExportOptions() With { .ExportMode = XlsxExportMode.SingleFile } GridViewWFItems.ExportToXlsx(XtraSaveFileDialog1.FileName, oOptions) End If End Sub Private Sub TimerInactivity_Tick(sender As Object, e As EventArgs) Handles TimerInactivity.Tick Try If Application.OpenForms().OfType(Of frmValidator).Any Then bsiMessage.Caption = "Validation Active - no Inactivity-Logout" bsiMessage.ItemAppearance.Normal.BackColor = Color.Yellow Timer_Inactivity_Reset_Disable("frmValidator") Exit Sub End If If Application.OpenForms().OfType(Of frmAdministration).Any Then bsiMessage.Caption = "Administration Active - no Inactivity-Logout" bsiMessage.ItemAppearance.Normal.BackColor = Color.Yellow Timer_Inactivity_Reset_Disable("frmAdministration") Exit Sub End If If Application.OpenForms().OfType(Of frmAdmin2).Any Then bsiMessage.Caption = "Administration2 Active - no Inactivity-Logout" bsiMessage.ItemAppearance.Normal.BackColor = Color.Yellow Timer_Inactivity_Reset_Disable("frmAdmin2") Exit Sub End If If Application.OpenForms().OfType(Of frmMonitor).Any Then bsiMessage.Caption = "Monitoring open - no Inactivity-Logout" bsiMessage.ItemAppearance.Normal.BackColor = Color.Yellow Timer_Inactivity_Reset_Disable("frmMonitor") Exit Sub End If If GHOSTMODE_ACTIVE And USER_GHOST_MODE_ACTIVE Then bsiMessage.Caption = "GhostMode Active - no Inactivity-Logout" bsiMessage.ItemAppearance.Normal.BackColor = Color.Yellow Timer_Inactivity_Reset_Disable("USER_GHOST_MODE_ACTIVE") Exit Sub End If INACTIVITYRecognized = True Dim omsg As String = "Sie wurden aufgrund von Inaktivität automatisch abgemeldet!" If USER_LANGUAGE <> "de-DE" Then omsg = "Due to inactivity we closed all actions and You have been logged out automatically." End If Timer5Mins.Stop() TimerRefresh.Stop() TimerReminder.Stop() LOGGER.Info("Inactivity recognized. Automatic Logout in process!") Hide() ClassAllgemeineFunktionen.LoginOut("LOGOUT") TimerInactivity.Stop() MsgBox(omsg, MsgBoxStyle.Information, ADDITIONAL_TITLE) Application.Exit() Catch ex As Exception LOGGER.Error(ex.Message) End Try End Sub Private Sub BarButtonItem3_ItemClick_1(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles SearchItem1.ItemClick Try Dim oTag = SearchItem1.Tag Dim _SPLIT As String() _SPLIT = oTag.Split("%") Dim oPath = LTrim(RTrim(_SPLIT(0).ToString)) Dim MyProcess As New Process() MyProcess.StartInfo.FileName = oPath MyProcess.StartInfo.Arguments = LTrim(RTrim(_SPLIT(1).ToString)) MyProcess.Start() 'Startet den Prozess Catch ex As Exception LOGGER.Error(ex.Message) End Try End Sub Private Sub bbtniCW_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtniCW.ItemClick Try If File.Exists(bbtniCW.Tag) Then Dim MyProcess As New Process() MyProcess.StartInfo.FileName = bbtniCW.Tag MyProcess.Start() Else LOGGER.Warn($"Clipboardwatcher-Exe not found [{bbtniCW.Tag}]") MsgBox("Clipboard Watcher could not be started!", MsgBoxStyle.Exclamation, ADDITIONAL_TITLE) End If Catch ex As Exception LOGGER.Error(ex.Message) End Try End Sub Private Sub GridView_Docs_ColumnPositionChanged(sender As Object, e As EventArgs) Handles GridViewWFItems.ColumnPositionChanged GridLayout_Changed() End Sub Sub GridLayout_Changed() If FormShown = False Then Exit Sub End If If FRONTEND_ACTION <> "NONE" Then Exit Sub End If Timer_Inactivity_Reset_Disable("GridLayout_Changed") SaveGridLayout() End Sub Private Sub GridView_Docs_EndGrouping(sender As Object, e As EventArgs) Handles GridViewWFItems.EndGrouping GridLayout_Changed() End Sub Private Sub bsilastsync_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bsilastsync.ItemClick End Sub Private Sub GridView_Docs_KeyDown(sender As Object, e As KeyEventArgs) Handles GridViewWFItems.KeyDown Dim view As GridView = CType(sender, GridView) If e.Control AndAlso e.KeyCode = Keys.C Then If view.GetRowCellValue(view.FocusedRowHandle, view.FocusedColumn) IsNot Nothing AndAlso view.GetRowCellValue(view.FocusedRowHandle, view.FocusedColumn).ToString() <> [String].Empty Then Clipboard.SetText(view.GetRowCellValue(view.FocusedRowHandle, view.FocusedColumn).ToString()) End If e.Handled = True End If End Sub Private Sub BarCheckItem1_CheckedChanged(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarCheckItemAutofilter.CheckedChanged If GridIsLoaded = True Then GridViewWFItems.OptionsView.ShowAutoFilterRow = BarCheckItemAutofilter.Checked End If End Sub Private Sub BarCheckItem1_CheckedChanged_1(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarCheckItemShowSearch.CheckedChanged If GridIsLoaded = True Then GridViewWFItems.OptionsFind.AlwaysVisible = BarCheckItemShowSearch.Checked End If End Sub Private Sub BarButtonItem4_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem4.ItemClick Grid_Layout_Save() End Sub Sub Grid_Layout_Save() FRONTEND_ACTION = "SAVE GRID LAYOUT" GridLayout_Changed() FRONTEND_ACTION = "NONE" End Sub Private Sub BarButtonItem3_ItemClick_2(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem3.ItemClick GridLayout_Reset() End Sub Private Sub BarButtonItem5_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem5.ItemClick Grid_Export() End Sub Private Sub BarButtonItem6_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem6.ItemClick Grid_Reset_Filter() End Sub Private Sub BarButtonItem7_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem7.ItemClick GridViewWFItems.ShowCustomization() End Sub Private Sub BarButtonItem8_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItemWFSingle.ItemClick Item_Scope("CMROW") End Sub Private Sub BarButtonItemWFGroup_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItemWFGroup.ItemClick Item_Scope("CMGROUP") End Sub Private Sub BarButtonItemFileLink_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItemFileLink.ItemClick Dim oReceipiant = "" Dim oFocusedDocGUID = GridViewWFItems.GetFocusedRowCellValue(GridViewWFItems.Columns("GUID")) Dim oSQL = $"SELECT [dbo].[FNPM_GET_FILEPATH] ({oFocusedDocGUID},1)" Dim oFilePath = DatabaseFallback.GetScalarValueECM(oSQL) If File.Exists(oFilePath) Then Dim oLink = "

Link zur Datei

" Dim oLink2 = "Link zur Datei" If Not IsNothing(oFilePath) Then Process.Start($"mailto:{oReceipiant}?subject=Link aus TaskFlow Manager&body={oLink}") End If End If End Sub Private Async Sub BarButtonItemMassValidation_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItemMassValidation.ItemClick Try Dim oSelectedRows As Integer() = GridViewWFItems.GetSelectedRows() Dim oHitInfo As GridHitInfo = GridViewWFItems.CalcHitInfo(GridCursorLocation) Dim oSelectedRowHandle As Integer = oHitInfo.RowHandle Dim oWorkedFiles As Integer = 0 Dim oProfileId = 0 If oSelectedRows.Count = 0 Then If USER_LANGUAGE = "de-DE" Then MsgBox("Bitte selektieren Sie einige 1 oder mehr Dokumente", MsgBoxStyle.Exclamation, "Massenabschluss") Else MsgBox("Please select some documents!", MsgBoxStyle.Exclamation, "Mass Validation") End If Exit Sub End If oProfileId = GridViewWFItems.GetRowCellValue(oSelectedRows.Last(), GridViewWFItems.Columns("PROFILE_ID")) If oProfileId = 0 Then MsgBox("Could not select a profile!", MsgBoxStyle.Exclamation, "Mass Validation") Exit Sub End If If SOURCE_INIT = True Then CURRENT_ProfilGUID = oProfileId Dim oSQL = $"select * from TBPM_PROFILE_FINAL_INDEXING where PROFIL_ID = {CURRENT_ProfilGUID} ORDER BY [SEQUENCE]" 'CURRENT_DT_FINAL_INDEXING = DataASorDB.GetDatatable("DD_ECM", oSQL, "TBPM_PROFILE_FINAL_INDEXING", $"PROFIL_ID = {CURRENT_ProfilGUID}", "SEQUENCE") CURRENT_DT_FINAL_INDEXING = DatabaseFallback.GetDatatable("TBPM_PROFILE_FINAL_INDEXING", New GetDatatableOptions(oSQL, DatabaseType.ECM) With { .FilterExpression = $"PROFIL_ID = {CURRENT_ProfilGUID}", .SortByColumn = "SEQUENCE" }) CURRENT_DT_PROFILE.Clear() Dim oExpression = $"GUID = {CURRENT_ProfilGUID}" CURRENT_DT_PROFILES.Select(oExpression).CopyToDataTable(CURRENT_DT_PROFILE, LoadOption.PreserveChanges) If CURRENT_DT_PROFILE.Rows.Count = 1 Then CURRENT_ProfilName = CURRENT_DT_PROFILE.Rows(0).Item("NAME") Else Exit Sub End If CURRENT_PROFILE_LOG_INDEX = CURRENT_DT_PROFILE.Rows(0).Item("PM_VEKTOR_INDEX") If CURRENT_PROFILE_LOG_INDEX = "" Then CURRENT_PROFILE_LOG_INDEX = CURRENT_DT_PROFILE.Rows(0).Item("LOG_INDEX") End If Dim NewDatatable As New DataTable NewDatatable.Columns.Add("DocID") NewDatatable.Columns.Add("DOC_GUID") NewDatatable.Columns.Add("FULL_PATH") For Each oRowHandle As Integer In oSelectedRows Dim oDocID = GridViewWFItems.GetRowCellValue(oRowHandle, "DocID") If IsNothing(oDocID) Then Continue For End If Dim R As DataRow = NewDatatable.NewRow CURRENT_DOC_ID = oDocID Dim DOC_PATH = GridViewWFItems.GetRowCellValue(oRowHandle, "FULL_FILE_PATH") CURRENT_DOC_PATH = DOC_PATH CURRENT_DOC_GUID = GridViewWFItems.GetRowCellValue(oRowHandle, "GUID") R("DocID") = CURRENT_DOC_ID R("FULL_PATH") = CURRENT_DOC_PATH R("DOC_GUID") = GridViewWFItems.GetRowCellValue(oRowHandle, "GUID") NewDatatable.Rows.Add(R) Next CURRENT_DT_MASS_CHANGE_DOCS = Nothing CURRENT_DT_MASS_CHANGE_DOCS = NewDatatable TimerRefresh.Enabled = False frmMassValidator.ShowDialog() LoadNavBar() Await Decide_Load(False) Else If USER_LANGUAGE = "de-DE" Then MsgBox("Massenabschluss konnte nicht ausgeführt werden, weil windream nicht initialisiert werden konnte!", MsgBoxStyle.Critical, "Massenabschluss") Else MsgBox("Massvalidation could not be completed because of an error in windream", MsgBoxStyle.Critical, "Massvalidation") End If End If Catch ex As Exception LOGGER.Error(ex) MsgBox("Unhandled Error in tsmiMarkedFilesFinish_Click: " & ex.Message) End Try End Sub Private Sub RibbonControl1_SelectedPageChanged(sender As Object, e As EventArgs) Handles RibbonControl1.SelectedPageChanged Dim ribbon As RibbonControl = TryCast(sender, RibbonControl) Timer_Inactivity_Reset_Disable("RibbonControl1_SelectedPageChanged") If ribbon.SelectedPage Is RibbonPage4 Then Select Case GridViewItem_Clicked Case "GROUP" BarButtonItemMassValidation.Visibility = DevExpress.XtraBars.BarItemVisibility.Always Case "ROW" ' If selectedRows.Count > 1 Then ' CMFileStart.Enabled = False ' Else ' CMFileStart.Enabled = True ' End If ' If CURRENT_CLICKED_PROFILE_ID > 0 Then ' CMGroupStart.Enabled = True ' End If End Select End If End Sub Private Sub barItemGridFontSize_EditValueChanged(sender As Object, e As EventArgs) Handles barItemGridFontSize.EditValueChanged Try CONFIG.Config.GridFontSizeDelta = DirectCast(barItemGridFontSize.EditValue, FontSetting).Value CONFIG.Save() GridBuilder.WithFontSizeDelta(CONFIG.Config.GridFontSizeDelta) Catch ex As Exception End Try End Sub End Class