2351 lines
101 KiB
VB.net
2351 lines
101 KiB
VB.net
Imports DevExpress.LookAndFeel
|
|
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 DevExpress.XtraCharts
|
|
Imports DevExpress.XtraGrid.Views.Base
|
|
Imports DevExpress.XtraEditors.Controls
|
|
Imports System.Threading
|
|
Imports System.ComponentModel
|
|
Imports System.IO
|
|
Imports System.Drawing.Imaging
|
|
Imports DevExpress.XtraPrinting
|
|
Imports System.Runtime.Serialization
|
|
Imports System.Security.Cryptography
|
|
|
|
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 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 FormOpenClose As Boolean = False
|
|
Private FormShown As Boolean = False
|
|
Private GridIsLoaded As Boolean = False
|
|
|
|
Private allgFunk As New ClassAllgemeineFunktionen
|
|
Private _Init As New ClassInit
|
|
Private CurrNavBarGroup As NavBarGroup
|
|
|
|
|
|
Private DT_CHECKUSER_MODULE As DataTable
|
|
Private IsFilterMode As Boolean
|
|
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 Sub frmMain_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
|
|
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
|
|
|
|
Try
|
|
ClassAllgemeineFunktionen.LoginOut("LOGOUT")
|
|
LOGGER.Info("ProcessManager 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
|
|
If Environment.UserName.ToLower = "schreiberm" Or Environment.UserName.ToLower = "jennej" Or Environment.UserName.ToLower = "marschreiber" Then
|
|
bbtniMetadataFile.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
Else
|
|
bbtniMetadataFile.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
End If
|
|
|
|
FormOpenClose = True
|
|
LOGGER.Debug("Initializing MainForm....")
|
|
|
|
' Create helper to save/load expanded GroupColumns at runtime
|
|
RefreshHelper = New RefreshHelper(GridView_Docs, "GUID")
|
|
|
|
bsiVersion.Caption = String.Format("Version {0}", My.Application.Info.Version.ToString)
|
|
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 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
|
|
|
|
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
|
|
If Refresh_ConnectionString() = True Then
|
|
Try
|
|
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
|
|
|
|
|
|
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()
|
|
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()
|
|
Check_Timer_Inactivity()
|
|
FormShown = True
|
|
Restore_Form_Position()
|
|
|
|
|
|
If IDB_ACTIVE = False And ERROR_STATE = "" Then
|
|
Try
|
|
If Init_windream() = True Then
|
|
WINDREAM.Start_WMCC_andCo()
|
|
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
|
|
SOURCE_INIT = Init_IDB()
|
|
If SOURCE_INIT = True Then
|
|
Dim oSQL = $"SELECT SQL_COMMAND FROM TBDD_SQL_COMMANDS WHERE TITLE = 'PM_IDB_DOC_DATA'"
|
|
IDB_DOC_DATA_SQL = ClassDatabase.Execute_Scalar(oSQL, CONNECTION_STRING, "frmMainload-PM_IDPDOCDATA")
|
|
LOGGER.Debug($"Got the IDB_DOC_DATA_SQL..{IDB_DOC_DATA_SQL}")
|
|
End If
|
|
bsiGeneralInfo.Caption = "IDB active"
|
|
End If
|
|
|
|
If BASIC_CONF_VISIBLE = False Then
|
|
RibbonPageGroupBasicConf.Visible = False
|
|
Else
|
|
RibbonPageGroupBasicConf.Visible = True
|
|
End If
|
|
LOGGER.Debug("MainForm initialized!")
|
|
End If
|
|
FormOpenClose = False
|
|
End Sub
|
|
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 Check_Timer_Inactivity()
|
|
Try
|
|
If INACTIVITY_DURATION <> 0 Then
|
|
TimerInactivity.Stop()
|
|
TimerInactivity.Interval = INACTIVITY_DURATION * 60000
|
|
TimerInactivity.Start()
|
|
Else
|
|
TimerInactivity.Enabled = False
|
|
TimerInactivity.Stop()
|
|
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
|
|
|
|
|
|
|
|
Function Refresh_ConnectionString()
|
|
Try
|
|
TBPM_KONFIGURATIONTableAdapter.Connection.ConnectionString = CONNECTION_STRING
|
|
TBPM_PROFILETableAdapter.Connection.ConnectionString = CONNECTION_STRING
|
|
TBPM_USERTableAdapter.Connection.ConnectionString = CONNECTION_STRING
|
|
TBPM_PROFILE_FILESTableAdapter.Connection.ConnectionString = CONNECTION_STRING
|
|
|
|
Return True
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error in Refresh_ConnectionString:")
|
|
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(Application.UserAppDataPath(), Filename)
|
|
End Function
|
|
|
|
Private Sub SaveGridLayout()
|
|
If NO_WORKFLOWITEMS = True Then
|
|
Exit Sub
|
|
End If
|
|
Try
|
|
Dim xml As String = GetXML_OverviewLayoutName()
|
|
GridView_Docs.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()
|
|
GridView_Docs.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
|
|
GridView_Docs.Columns.Clear()
|
|
Catch ex As Exception
|
|
If IsNothing(GridView_Docs) Then
|
|
LOGGER.Warn("Somehow GridView_Docs is nothing....")
|
|
Else
|
|
If IsNothing(GridView_Docs.Columns) Then
|
|
LOGGER.Warn("Somehow GridView_Docs.Columns is nothing....")
|
|
|
|
End If
|
|
End If
|
|
Exit Sub
|
|
End Try
|
|
|
|
GridView_Docs.PopulateColumns()
|
|
If GridView_Docs.Columns.Count > 0 Then
|
|
GridView_Docs.Columns.Item("PROFILE_ID").Visible = False
|
|
GridView_Docs.Columns.Item("GUID").Visible = False
|
|
GridView_Docs.Columns.Item("FULL_FILE_PATH").Visible = False
|
|
'GridView_Docs.Columns.Item("DocID").Visible = False
|
|
GridView_Docs.Columns.Item("TL_STATE").Visible = False
|
|
GridView_Docs.Columns.Item("ICON").MaxWidth = 24
|
|
GridView_Docs.Columns.Item("ICON").MinWidth = 24
|
|
GridView_Docs.Columns.Item("ICON").AppearanceCell.BackColor = Color.White
|
|
GridView_Docs.Columns.Item("ICON").Fixed = FixedStyle.Left
|
|
|
|
If IDB_ACTIVE = True Then
|
|
Try
|
|
GridView_Docs.Columns.Item("CONV_YN").Visible = False
|
|
Catch ex As Exception
|
|
LOGGER.Warn("ResetLayout - Check wether Column CONV_YN is part of select/view..now checking CONVERSATION")
|
|
End Try
|
|
Try
|
|
GridView_Docs.Columns.Item("CONVERSATION").MaxWidth = 24
|
|
GridView_Docs.Columns.Item("CONVERSATION").MinWidth = 24
|
|
GridView_Docs.Columns.Item("CONVERSATION").Fixed = FixedStyle.Left
|
|
Catch ex As Exception
|
|
LOGGER.Warn("ResetLayout - Column CONVERSATION obviously is not part of GridView_Docs")
|
|
End Try
|
|
End If
|
|
|
|
|
|
Try
|
|
GridView_Docs.Columns("Last edited").DisplayFormat.FormatType = FormatType.DateTime
|
|
GridView_Docs.Columns("Last edited").DisplayFormat.FormatString = "dd.MM.yyyy HH:MM:ss"
|
|
Catch ex As Exception
|
|
Try
|
|
GridView_Docs.Columns("Zuletzt bearbeitet").DisplayFormat.FormatType = FormatType.DateTime
|
|
GridView_Docs.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
|
|
GridView_Docs.Columns.Item("GROUP_TEXT").Visible = False
|
|
GridView_Docs.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 oStopWatch As New RefreshHelper.SW("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
|
|
If CInt(oProfileRow.Item("FILE_COUNT")) > 0 And (oProfileRow.Item("DISPLAY_MODE") = "Overview and Detail" Or oProfileRow.Item("DISPLAY_MODE") = "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)
|
|
|
|
AddHandler NavBarControl1.LinkClicked, AddressOf navBar_LinkClicked
|
|
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
|
|
oStopWatch.Done()
|
|
End Sub
|
|
Private Async Sub navBar_LinkClicked(ByVal sender As Object, ByVal e As NavBarLinkEventArgs)
|
|
' Das aktuelle Layout speichern, bevor das neue geladen wird
|
|
' und GRID_LOAD_TYPE gesetzt wird.
|
|
SaveGridLayout()
|
|
|
|
Dim _tag = e.Link.Item.Tag
|
|
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
|
|
CURRENT_CLICKED_PROFILE_ID = _tag
|
|
CURRENT_CLICKED_PROFILE_TITLE = e.Link.Item.Caption
|
|
GRID_LOAD_TYPE = "PROFILE#" & CURRENT_CLICKED_PROFILE_ID.ToString
|
|
TimerRefresh.Stop()
|
|
GridView_Docs.ShowLoadingPanel()
|
|
Await Load_single_Profile()
|
|
GridView_Docs.HideLoadingPanel()
|
|
TimerRefresh.Start()
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
End If
|
|
|
|
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
|
|
BindingNavigator1.Visible = True
|
|
BindingNavigator1.Dock = DockStyle.Top
|
|
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
|
|
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
|
|
ToolStripLabelViewTape.Text = "Detailansicht Profil: " & CURRENT_CLICKED_PROFILE_TITLE
|
|
|
|
Dim oSQL = foundRows(0)("SQL_VIEW")
|
|
|
|
oSQL = clsPatterns.ReplaceInternalValues(oSQL)
|
|
oSQL = clsPatterns.ReplaceUserValues(oSQL, USER_PRENAME, USER_SURNAME, USER_SHORTNAME, USER_LANGUAGE, USER_EMAIL, USER_ID, CURRENT_CLICKED_PROFILE_ID)
|
|
|
|
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 ClassDatabase.Return_DatatableAsync(oSQL, "Load_single_Profile")
|
|
|
|
Dim oADDED = GET_LAST_ADDED(CURR_DT_OVERVIEW)
|
|
Dim oChanged = GET_LAST_CHANGED(CURR_DT_OVERVIEW)
|
|
If oADDED = OVERVIEW_ADDED_WHEN And oChanged = OVERVIEW_CHANGED_WHEN Then
|
|
LOGGER.Info("No changes on OverviewHash - so exit Refresh")
|
|
If ForceReload = False Then
|
|
Exit Function
|
|
End If
|
|
|
|
Else
|
|
OVERVIEW_ADDED_WHEN = oADDED
|
|
OVERVIEW_CHANGED_WHEN = oChanged
|
|
End If
|
|
|
|
If CURR_DT_OVERVIEW.Rows.Count = 0 Then
|
|
NO_WORKFLOWITEMS = True
|
|
Else
|
|
NO_WORKFLOWITEMS = False
|
|
End If
|
|
Create_Basic_View()
|
|
|
|
RestoreLayout()
|
|
ToolStripLabelViewTape.Text = "Detailansicht Profil: " & CURRENT_CLICKED_PROFILE_TITLE
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
LOGGER.Info("Load_single_Profile - Error: " & ex.Message)
|
|
End Try
|
|
|
|
End Function
|
|
Sub Create_Basic_View()
|
|
Try
|
|
GridControl_Docs.DataSource = Nothing
|
|
Try
|
|
GridView_Docs.Columns.Clear()
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
LOGGER.Warn("Could not clear GridView_Docs.Columns")
|
|
End Try
|
|
|
|
' 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)
|
|
|
|
RedDocuments = 0
|
|
YellowDocuments = 0
|
|
GreenDocuments = 0
|
|
|
|
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.ampel_rot
|
|
Case 2
|
|
YellowDocuments += 1
|
|
row.Item("ICON") = My.Resources.ampel_gelb
|
|
Case 3
|
|
GreenDocuments += 1
|
|
row.Item("ICON") = My.Resources.ampel_gruen
|
|
End Select
|
|
Next
|
|
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 = GridView_Docs.RowCount.ToString
|
|
If USER_LANGUAGE = "de-DE" Then
|
|
objectCount_Descr &= " Vorgänge"
|
|
Else
|
|
objectCount_Descr &= " objects"
|
|
End If
|
|
|
|
tslblObjectCount.Text = objectCount_Descr
|
|
tslblObjectCount.ForeColor = Color.DarkBlue
|
|
'GridControlDocRow.ForceInitialize()
|
|
|
|
RestoreLayout()
|
|
|
|
GridView_Docs.Columns.Item("PROFILE_ID").Visible = False
|
|
GridView_Docs.Columns.Item("GUID").Visible = False
|
|
GridView_Docs.Columns.Item("FULL_FILE_PATH").Visible = False
|
|
'GridView_Docs.Columns.Item("DocID").Visible = False
|
|
GridView_Docs.Columns.Item("TL_STATE").Visible = False
|
|
GridView_Docs.Columns.Item("ICON").MaxWidth = 24
|
|
GridView_Docs.Columns.Item("ICON").MinWidth = 24
|
|
GridView_Docs.Columns.Item("ICON").AppearanceCell.BackColor = Color.White
|
|
GridView_Docs.Columns.Item("ICON").Fixed = FixedStyle.Left
|
|
Try
|
|
GridView_Docs.Columns.Item("CONV_YN").Visible = False
|
|
Catch ex As Exception
|
|
LOGGER.Warn("Create_Basic_View - Check wether Column CONV_YN is part of select/view")
|
|
End Try
|
|
If IDB_ACTIVE = True Then
|
|
Try
|
|
GridView_Docs.Columns.Item("CONVERSATION").MaxWidth = 24
|
|
GridView_Docs.Columns.Item("CONVERSATION").MinWidth = 24
|
|
GridView_Docs.Columns.Item("CONVERSATION").Fixed = FixedStyle.Left
|
|
Catch ex As Exception
|
|
LOGGER.Warn("Create_Basic_View2 - Column CONVERSATION obviously is not part of GridView_Docs - Trying to Rest Layout")
|
|
ResetLayout()
|
|
Exit Sub
|
|
End Try
|
|
End If
|
|
|
|
|
|
' GridView_Docs.OptionsView.ShowIndicator = False
|
|
Try
|
|
GridView_Docs.Columns("Last edited").DisplayFormat.FormatType = FormatType.DateTime
|
|
GridView_Docs.Columns("Last edited").DisplayFormat.FormatString = "dd.MM.yyyy HH:MM:ss"
|
|
Catch ex As Exception
|
|
Try
|
|
GridView_Docs.Columns("Zuletzt bearbeitet").DisplayFormat.FormatType = FormatType.DateTime
|
|
GridView_Docs.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
|
|
GridView_Docs.Columns.Item("GROUP_TEXT").Visible = False
|
|
GridView_Docs.Columns.Item("GROUP_COLOR").Visible = False
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
LOGGER.Debug("All columns in CreateBasicView created")
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
End Try
|
|
|
|
|
|
|
|
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 GridView_Docs.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 GridView_Docs.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 Timer_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("bwBasicData is busy - no Refreshing")
|
|
Exit Sub
|
|
End If
|
|
If Application.OpenForms().OfType(Of frmValidator).Any Then
|
|
Exit Sub
|
|
End If
|
|
If Application.OpenForms().OfType(Of frmAdministration).Any Then
|
|
Exit Sub
|
|
End If
|
|
If Application.OpenForms().OfType(Of frmAdmin2).Any Then
|
|
Exit Sub
|
|
End If
|
|
|
|
If GridControl_Docs.Visible = True And FormOpenClose = False Then RefreshHelper.SaveViewInfo()
|
|
'If Not Application.OpenForms().OfType(Of frmValidator).Any Then
|
|
' Dim oUpdate = "Not Defined"
|
|
' Try
|
|
' oUpdate = $"UPDATE TBPM_PROFILE_FILES SET IN_WORK = 0, WORK_USER = NULL, IN_WORK_WHEN = NULL where UPPER(WORK_USER) = UPPER('{USER_USERNAME}')"
|
|
' ClassDatabase.Execute_non_Query(oUpdate)
|
|
' Catch ex As Exception
|
|
' LOGGER.Warn($"Unexpected Error in freefileforUser [{oUpdate}] - {ex.Message}")
|
|
' End Try
|
|
|
|
'End If
|
|
|
|
If bwSync.IsBusy Then
|
|
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 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.LoadViewInfo()
|
|
|
|
Handling_DEBUG_USER()
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
End Try
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
End Try
|
|
|
|
'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(FormLoad As Boolean, Optional ForceReload As Boolean = False) As Tasks.Task
|
|
Try
|
|
GridIsLoaded = False
|
|
|
|
If USER_EXISTS = False Then
|
|
Exit Function
|
|
End If
|
|
If TimerRefresh.Enabled = True Then
|
|
TimerRefresh.Enabled = False
|
|
End If
|
|
|
|
GridView_Docs.ShowLoadingPanel()
|
|
TimerRefresh.Stop()
|
|
|
|
If GRID_LOAD_TYPE = "OVERVIEW" Then
|
|
Await Load_Grid_Overview(FormLoad, ForceReload)
|
|
ElseIf GRID_LOAD_TYPE.StartsWith("PROFILE#") Then
|
|
Await Load_single_Profile(ForceReload)
|
|
End If
|
|
|
|
GridView_Docs.HideLoadingPanel()
|
|
TimerRefresh.Start()
|
|
|
|
If SHOW_MASS_VALIDATOR = False Then
|
|
GridView_Docs.OptionsSelection.MultiSelect = False
|
|
GridView_Docs.OptionsSelection.MultiSelectMode = GridMultiSelectMode.RowSelect
|
|
tsmiMarkedFilesFinish.Visible = False
|
|
ToolStripSeparator4.Visible = False
|
|
Else
|
|
tsmiMarkedFilesFinish.Visible = True
|
|
ToolStripSeparator4.Visible = True
|
|
|
|
GridView_Docs.OptionsSelection.MultiSelect = True
|
|
GridView_Docs.OptionsSelection.MultiSelectMode = GridMultiSelectMode.CheckBoxRowSelect
|
|
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
|
|
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 errin 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
|
|
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
|
|
frmValidator.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
|
|
|
|
|
|
'Decide_Load()
|
|
TimerRefresh.Enabled = True
|
|
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
|
|
' 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(ex.Message, MsgBoxStyle.Critical, "Unexpected error in Load_Profil_from_Grid: ")
|
|
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 ContextMenuGrid_Opening(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles ContextMenuGrid.Opening
|
|
CMFileStart.Enabled = False
|
|
CMGroupStart.Enabled = False
|
|
tsmiMarkedFilesFinish.Enabled = False
|
|
|
|
Dim selectedRows As Integer() = GridView_Docs.GetSelectedRows()
|
|
|
|
If selectedRows.Count > 0 Then
|
|
tsmiMarkedFilesFinish.Enabled = True
|
|
End If
|
|
|
|
Select Case GridViewItem_Clicked
|
|
Case "GROUP"
|
|
CMGroupStart.Enabled = True
|
|
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 Sub
|
|
|
|
Private Sub CMFileStart_Click(sender As Object, e As EventArgs) Handles CMFileStart.Click
|
|
Item_Scope("CMROW")
|
|
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 = GridView_Docs.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 = GridView_Docs.GetGroupRowDisplayText(hitInfo.RowHandle)
|
|
OItemScopeInfo = $"groupRowText {groupRowText}"
|
|
LOGGER.Debug($"Item_Scope: groupRowText {groupRowText}")
|
|
oHitProfilID = GridView_Docs.GetRowCellValue(GridView_Docs.GetDataRowHandleByGroupRowHandle(hitInfo.RowHandle), GridView_Docs.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 = GridView_Docs.GetGroupRowDisplayText(GridView_Docs.GetParentRowHandle(hitInfo.RowHandle))
|
|
OItemScopeInfo = $"OVERVIEWgroupRowText {groupRowText}"
|
|
LOGGER.Debug($"Item_Scope: OVERVIEWgroupRowText {groupRowText}")
|
|
oHitProfilID = GridView_Docs.GetRowCellValue(GridView_Docs.GetDataRowHandleByGroupRowHandle(GridView_Docs.GetParentRowHandle(hitInfo.RowHandle)), GridView_Docs.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
|
|
LOGGER.Debug($"Item_Scope: CURRENT_CLICKED_PROFILE_ID [{CURRENT_CLICKED_PROFILE_ID}]")
|
|
oHitProfilID = CURRENT_CLICKED_PROFILE_ID
|
|
Else
|
|
LOGGER.Warn("In 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 Not IsNothing(oHitProfilID) And IsNumeric(oHitProfilID) Then
|
|
LOGGER.Debug($"Item_Scope: Not IsNothing(PROFIL_ID) And IsNumeric(PROFIL_ID)")
|
|
Dim expression As String
|
|
expression = "PROFILE_ID = " & oHitProfilID
|
|
If hitInfo.InGroupRow Or (startedFrom = "CMGROUP" And hitInfo.InDataRow) Then
|
|
CURRENT_JUMP_DOC_GUID = 0
|
|
CURRENT_DOC_GUID = 0
|
|
CURRENT_ProfilGUID = oHitProfilID
|
|
LOGGER.Debug($"Item_Scope: hitInfo.InGroupRow...oHitProfilID [{oHitProfilID}]")
|
|
Load_Profil_from_Grid(oHitProfilID)
|
|
|
|
ElseIf hitInfo.InDataRow Then
|
|
LOGGER.Debug($"Item_Scope: hitInfo.InDataRow...")
|
|
Dim oFocusedDocGUID = GridView_Docs.GetFocusedRowCellValue(GridView_Docs.Columns("GUID"))
|
|
Dim oFocusedDocID = GridView_Docs.GetFocusedRowCellValue(GridView_Docs.Columns("DocID"))
|
|
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 = GridView_Docs.GetFocusedRowCellValue(GridView_Docs.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
|
|
expression = expression & " 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 = ClassDatabase.Execute_Scalar(oSQL, CONNECTION_STRING, $"Item_Scope-FNPM_CHECK_DocGUID_Valid")
|
|
Try
|
|
If CBool(oResult) = True Then
|
|
Load_Profil_from_Grid(oHitProfilID)
|
|
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
|
|
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 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
|
|
Private Async Sub tsmiMarkedFilesFinish_Click(sender As Object, e As EventArgs) Handles tsmiMarkedFilesFinish.Click
|
|
Try
|
|
Dim oSelectedRows As Integer() = GridView_Docs.GetSelectedRows()
|
|
Dim oHitInfo As GridHitInfo = GridView_Docs.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 = GridView_Docs.GetRowCellValue(oSelectedRows.Last(), GridView_Docs.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
|
|
CURRENT_DT_FINAL_INDEXING = ClassDatabase.Return_Datatable(String.Format("select * from TBPM_PROFILE_FINAL_INDEXING where PROFIL_ID = {0}", CURRENT_ProfilGUID), "tsmiMarkedFilesFinish_Click")
|
|
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 = GridView_Docs.GetRowCellValue(oRowHandle, "DocID")
|
|
If IsNothing(oDocID) Then
|
|
Continue For
|
|
End If
|
|
Dim R As DataRow = NewDatatable.NewRow
|
|
CURRENT_DOC_ID = oDocID
|
|
Dim DOC_PATH = GridView_Docs.GetRowCellValue(oRowHandle, "FULL_FILE_PATH")
|
|
CURRENT_DOC_PATH = DOC_PATH
|
|
CURRENT_DOC_GUID = GridView_Docs.GetRowCellValue(oRowHandle, "GUID")
|
|
R("DocID") = CURRENT_DOC_ID
|
|
R("FULL_PATH") = CURRENT_DOC_PATH
|
|
R("DOC_GUID") = GridView_Docs.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 CMGroupStart_Click(sender As Object, e As EventArgs) Handles CMGroupStart.Click
|
|
Item_Scope("CMGROUP")
|
|
End Sub
|
|
|
|
Private Async Sub NavBarItemOverview_LinkClicked(sender As Object, e As NavBarLinkEventArgs) Handles NavBarItemOverview.LinkClicked
|
|
' Das aktuelle Layout speichern, bevor das neue geladen wird
|
|
' und GRID_LOAD_TYPE gesetzt wird.
|
|
SaveGridLayout()
|
|
|
|
GridView_Docs.ShowLoadingPanel()
|
|
TimerRefresh.Stop()
|
|
Await Load_Grid_Overview(False)
|
|
GridView_Docs.HideLoadingPanel()
|
|
TimerRefresh.Start()
|
|
RefreshHelper.LoadViewInfo()
|
|
End Sub
|
|
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
|
|
If USER_LANGUAGE = "de-DE" Then
|
|
ToolStripLabelViewTape.Text = "Gesamtübersicht"
|
|
Else
|
|
ToolStripLabelViewTape.Text = "Overview"
|
|
End If
|
|
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 = "Keine Profile für Ihren User hinterlegt"
|
|
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, USER_PRENAME, USER_SURNAME, USER_SHORTNAME, USER_LANGUAGE, USER_EMAIL, USER_ID, CURRENT_CLICKED_PROFILE_ID)
|
|
|
|
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 ClassDatabase.Return_DatatableAsync(oSQLOverview, "Load_Grid_Overview")
|
|
oStopWatch2.Done()
|
|
|
|
If Not IsNothing(CURR_DT_OVERVIEW) Then
|
|
LOGGER.Debug($"Datatable CURR_DT_OVERVIEW loaded: {CURR_DT_OVERVIEW.Rows.Count} rows")
|
|
Dim oADDED = GET_LAST_ADDED(CURR_DT_OVERVIEW)
|
|
Dim oChanged = GET_LAST_CHANGED(CURR_DT_OVERVIEW)
|
|
If oADDED = OVERVIEW_ADDED_WHEN And oChanged = OVERVIEW_CHANGED_WHEN Then
|
|
LOGGER.Info("No changes on OverviewHash - so exit Refresh")
|
|
If ForceReload = False Then
|
|
Exit Function
|
|
End If
|
|
|
|
Else
|
|
OVERVIEW_ADDED_WHEN = oADDED
|
|
OVERVIEW_CHANGED_WHEN = oChanged
|
|
End If
|
|
NO_WORKFLOWITEMS = False
|
|
If CURR_DT_OVERVIEW.Rows.Count = 0 Then
|
|
If USER_LANGUAGE = "de-DE" Then
|
|
ToolStripLabelViewTape.Text = "Aktuell keine Workflowdaten vorhanden!"
|
|
Else
|
|
ToolStripLabelViewTape.Text = "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
|
|
GridView_Docs.Columns.Clear()
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex)
|
|
|
|
End Try
|
|
|
|
Exit Function
|
|
End If
|
|
|
|
BindingNavigator1.Visible = True
|
|
BindingNavigator1.Dock = DockStyle.Top
|
|
|
|
GridControl_Docs.Visible = True
|
|
|
|
' 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)
|
|
|
|
|
|
RedDocuments = 0
|
|
YellowDocuments = 0
|
|
GreenDocuments = 0
|
|
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.ampel_rot
|
|
Case 2
|
|
YellowDocuments += 1
|
|
row.Item("ICON") = My.Resources.ampel_gelb
|
|
Case 3
|
|
GreenDocuments += 1
|
|
row.Item("ICON") = My.Resources.ampel_gruen
|
|
End Select
|
|
Next
|
|
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 = CURR_DT_OVERVIEW.Rows.Count.ToString
|
|
If USER_LANGUAGE = "de-DE" Then
|
|
ToolStripLabelViewTape.Text = "Gesamtübersicht"
|
|
objectCount_Descr &= " Vorgänge"
|
|
Else
|
|
ToolStripLabelViewTape.Text = "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
|
|
GridView_Docs.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...")
|
|
GridView_Docs.Columns.Item(oGridGroup.Item("GROUPNAME")).GroupIndex = oindex
|
|
oindex += 1
|
|
Next
|
|
End If
|
|
|
|
Try
|
|
GridView_Docs.Columns.Item("GROUP_TEXT").Visible = False
|
|
GridView_Docs.Columns.Item("GROUP_COLOR").Visible = False
|
|
Catch ex As Exception
|
|
End Try
|
|
For index = 0 To GridView_Docs.GroupCount - 1
|
|
'Dim v = GridView_Docs.GroupedColumns(index).ToString
|
|
LOGGER.Debug($"Addig tag [{GridView_Docs.Columns.Item("PROFILE_ID")}] for group...")
|
|
Dim sd = GridView_Docs.GroupedColumns(index).GetTextCaption
|
|
GridView_Docs.GroupedColumns(index).Tag = GridView_Docs.Columns.Item("PROFILE_ID")
|
|
Next
|
|
LOGGER.Debug("finished Grouping!")
|
|
GridView_Docs.Columns.Item("PROFILE_ID").Visible = False
|
|
GridView_Docs.Columns.Item("GUID").Visible = False
|
|
GridView_Docs.Columns.Item("FULL_FILE_PATH").Visible = False
|
|
'GridView_Docs.Columns.Item("DocID").Visible = False
|
|
GridView_Docs.Columns.Item("TL_STATE").Visible = False
|
|
GridView_Docs.Columns.Item("ICON").MaxWidth = 24
|
|
GridView_Docs.Columns.Item("ICON").MinWidth = 24
|
|
GridView_Docs.Columns.Item("ICON").AppearanceCell.BackColor = Color.White
|
|
GridView_Docs.Columns.Item("ICON").Fixed = DevExpress.XtraGrid.Columns.FixedStyle.Left
|
|
Try
|
|
GridView_Docs.Columns.Item("CONV_YN").Visible = False
|
|
Catch ex As Exception
|
|
LOGGER.Warn("LoadGridOverview - Check wether Column CONV_YN is part of select/view")
|
|
End Try
|
|
If IDB_ACTIVE = True Then
|
|
Try
|
|
GridView_Docs.Columns.Item("CONVERSATION").MaxWidth = 24
|
|
GridView_Docs.Columns.Item("CONVERSATION").MinWidth = 24
|
|
GridView_Docs.Columns.Item("CONVERSATION").Fixed = DevExpress.XtraGrid.Columns.FixedStyle.Left
|
|
Catch ex As Exception
|
|
LOGGER.Warn("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
|
|
GridView_Docs.Columns("Last edited").DisplayFormat.FormatType = FormatType.DateTime
|
|
GridView_Docs.Columns("Last edited").DisplayFormat.FormatString = "dd.MM.yyyy HH:MM:ss"
|
|
Catch ex As Exception
|
|
Try
|
|
GridView_Docs.Columns("Zuletzt bearbeitet").DisplayFormat.FormatType = FormatType.DateTime
|
|
GridView_Docs.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 GridView_Docs.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
|
|
BindingNavigator1.Visible = False
|
|
|
|
GridControl_Docs.DataSource = Nothing
|
|
tslblObjectCount.Text = "No objects"
|
|
|
|
Try
|
|
GridView_Docs.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 TabellenlayoutZurücksetzenToolStripMenuItem_Click_1(sender As Object, e As EventArgs) Handles TabellenlayoutZurücksetzenToolStripMenuItem.Click
|
|
Await Reset_GridLayout(False)
|
|
|
|
End Sub
|
|
Async Function Reset_GridLayout(FormLoad As Boolean) As Tasks.Task
|
|
If GridControl_Docs.Visible = True And FormOpenClose = False Then RefreshHelper.SaveViewInfo()
|
|
InResetlayout = True
|
|
' Layout zurücksetzen
|
|
ResetLayout()
|
|
SaveGridLayout()
|
|
|
|
' Ansicht neu laden
|
|
LoadNavBar()
|
|
Await Decide_Load(FormLoad)
|
|
InResetlayout = False
|
|
RefreshHelper.LoadViewInfo()
|
|
End Function
|
|
|
|
Private Sub GridView_Docs_DoubleClick(sender As Object, e As EventArgs) Handles GridView_Docs.DoubleClick
|
|
Item_Scope("DOUBLECLICK")
|
|
End Sub
|
|
|
|
Private Sub GridView_Docs_CustomDrawGroupRow(sender As Object, e As Views.Base.RowObjectCustomDrawEventArgs) Handles GridView_Docs.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 GridView_Docs.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"
|
|
CURRENT_CLICKED_PROFILE_ID = GridView_Docs.GetRowCellValue(GridView_Docs.GetDataRowHandleByGroupRowHandle(hi.RowHandle), GridView_Docs.Columns("PROFILE_ID"))
|
|
ElseIf hi.InDataRow Then
|
|
GridViewItem_Clicked = "ROW"
|
|
CURRENT_CLICKED_PROFILE_ID = GridView_Docs.GetRowCellValue(GridView_Docs.GetDataRowHandleByGroupRowHandle(hi.RowHandle), GridView_Docs.Columns("PROFILE_ID"))
|
|
Else
|
|
GridViewItem_Clicked = Nothing
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub GridView_Docs_ColumnWidthChanged(sender As Object, e As Views.Base.ColumnEventArgs) Handles GridView_Docs.ColumnWidthChanged
|
|
SaveGridLayout()
|
|
End Sub
|
|
|
|
Private Sub LayoutSpeichernToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles LayoutSpeichernToolStripMenuItem.Click
|
|
SaveGridLayout()
|
|
End Sub
|
|
|
|
Private Sub GridView_Docs_LostFocus(sender As Object, e As EventArgs) Handles GridView_Docs.LostFocus
|
|
' Save expanded GroupRows
|
|
If GridControl_Docs.Visible = True And FormOpenClose = False Then RefreshHelper.SaveViewInfo()
|
|
End Sub
|
|
Sub LoadCURRENT_DT_PROFILES()
|
|
CURRENT_DT_PROFILES = ClassDatabase.Return_Datatable("select * from TBPM_PROFILE where ACTIVE = 1", "LoadCURRENT_DT_PROFILES")
|
|
End Sub
|
|
Sub LoadVWPM_CONTROL_INDEX()
|
|
Dim oSQL = $"SELECT * FROM VWPM_CONTROL_INDEX ORDER BY PROFIL_ID,Y_LOC, X_LOC"
|
|
DTVWCONTROLS_INDEX = ClassDatabase.Return_Datatable(oSQL, "LoadVWPM_CONTROL_INDEX")
|
|
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)
|
|
DT_CHECKUSER_MODULE = ClassDatabase.Return_Datatable(oSQL, "GetBaseData1")
|
|
If pMode = "bwBasicData" Then bwBasicData.ReportProgress(10)
|
|
ClassParamRefresh.Refresh_Params(DT_CHECKUSER_MODULE)
|
|
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 = ClassDatabase.Return_Datatable(oSQL, "GetBaseData2")
|
|
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)
|
|
BASEDATA_DT_PROFILES_SEARCHES_DOC = ClassDatabase.Return_Datatable("select * from TBPM_PROFILE_SEARCH where TYPE = 'DOC' AND ACTIVE = 1 ORDER BY PROFILE_ID,TAB_INDEX", "GetBaseData3")
|
|
If pMode = "Load" Then
|
|
BASEDATA_DT_PROFILE_SEARCHES_DOC = BASEDATA_DT_PROFILES_SEARCHES_DOC.Clone()
|
|
End If
|
|
If pMode = "bwBasicData" Then bwBasicData.ReportProgress(50)
|
|
BASEDATA_DT_PROFILES_SEARCHES_SQL = ClassDatabase.Return_Datatable("select * from TBPM_PROFILE_SEARCH where TYPE = 'SQL' AND ACTIVE = 1 ORDER BY PROFILE_ID,TAB_INDEX", "GetBaseData4")
|
|
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 = ClassDatabase.Return_Datatable(oSQL, "GetBaseData5")
|
|
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)
|
|
|
|
Await Decide_Load(True)
|
|
Handling_DEBUG_USER()
|
|
End Sub
|
|
Sub Handling_DEBUG_USER()
|
|
If USER_DEBUG_LOG = 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}')"
|
|
ClassDatabase.Execute_non_Query(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
|
|
|
|
Private Sub LöscheAlleFilterToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles LöscheAlleFilterToolStripMenuItem.Click
|
|
Try
|
|
GridView_Docs.ClearFindFilter()
|
|
GridView_Docs.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()
|
|
Refresh_ConnectionString()
|
|
' 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
|
|
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 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
|
|
If Not bwBasicData.IsBusy Then
|
|
BarEditItem1.Caption = "Get BasicData"
|
|
BarEditItem1.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
bwBasicData.RunWorkerAsync()
|
|
End If
|
|
|
|
If USER_DEBUG_LOG = True Then
|
|
' 'Jetzt de rinsert der Inhalte
|
|
If Not IsNothing(LOGCONFIG.Logs) Then
|
|
If LOGCONFIG.Logs.Count > 0 Then
|
|
' Dim odel = $"delete from TBPM_LOG_DEBUG where userid = {USER_ID}"
|
|
' ClassDatabase.Execute_non_Query(odel)
|
|
|
|
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
|
|
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 GridView_Docs.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 = GridView_Docs.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!")
|
|
BarButtonItem2.Caption = $"Ghost Mode ({USER_GHOST_MODE_USRNAME}) inaktivieren"
|
|
|
|
BarButtonItem2.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 Sub DateiAlsLinkVersendenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DateiAlsLinkVersendenToolStripMenuItem.Click
|
|
Dim oReceipiant = ""
|
|
Dim oFocusedDocGUID = GridView_Docs.GetFocusedRowCellValue(GridView_Docs.Columns("GUID"))
|
|
Dim oSQL = $"SELECT [dbo].[FNPM_GET_FILEPATH] ({oFocusedDocGUID},1)"
|
|
Dim oFilePath = ClassDatabase.Execute_Scalar(oSQL, CONNECTION_STRING, $"DateiAlsLinkVersendenToolStripMenuItem_Click")
|
|
|
|
Dim oLink = "<HTML><body><p><a href=" + "file:///" + oFilePath + ">Link zur Datei</a></p></body></HTML>"
|
|
Dim oLink2 = "<a href=" + "file:///" + oFilePath + ">Link zur Datei</a>"
|
|
If Not IsNothing(oFilePath) Then
|
|
Process.Start($"mailto:{oReceipiant}?subject=Link aus Process Manager&body={oLink}")
|
|
|
|
End If
|
|
|
|
|
|
End Sub
|
|
|
|
Private Async Sub BarButtonItem2_ItemClick_2(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem2.ItemClick
|
|
USER_GHOST_MODE_ACTIVE = False
|
|
USER_GHOST_MODE_USRNAME = String.Empty
|
|
BarButtonItem2.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 GridView_Docs.ColumnFilterChanged
|
|
Try
|
|
Dim objectCount_Descr = GridView_Docs.RowCount.ToString
|
|
If USER_LANGUAGE <> "de-DE" Then
|
|
objectCount_Descr &= " objects (filtered)"
|
|
Else
|
|
objectCount_Descr &= " Vorgänge (gefiltert)"
|
|
End If
|
|
tslblObjectCount.Text = objectCount_Descr
|
|
tslblObjectCount.ForeColor = Color.DarkOrange
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex.Message)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub ExportierenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ExportierenToolStripMenuItem.Click
|
|
XtraSaveFileDialog1.FileName = "OverviewProcessManager.xlsx"
|
|
XtraSaveFileDialog1.DefaultExt = ".xlsx"
|
|
|
|
If XtraSaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
|
|
Dim oOptions As New XlsxExportOptions() With {
|
|
.ExportMode = XlsxExportMode.SingleFile
|
|
}
|
|
GridView_Docs.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
|
|
Check_Timer_Inactivity()
|
|
Exit Sub
|
|
End If
|
|
If Application.OpenForms().OfType(Of frmAdministration).Any Then
|
|
Check_Timer_Inactivity()
|
|
Exit Sub
|
|
End If
|
|
|
|
INACTIVITYRecognized = True
|
|
Application.Exit()
|
|
Catch ex As Exception
|
|
LOGGER.Error(ex.Message)
|
|
End Try
|
|
End Sub
|
|
|
|
End Class |