Imports System.Drawing Imports System.Threading Imports DigitalData.Controls.DocumentViewer Imports DigitalData.Modules.EDMI.API Imports DigitalData.Modules.Logging Imports DigitalData.Modules.ZooFlow.Constants Public Class frmNotification_Startup Private ReadOnly Property LogConfig As LogConfig Private ReadOnly Property Logger As Logger Private ReadOnly _NotificationsTable As DataTable Private ReadOnly _Environment As DigitalData.Modules.ZooFlow.Environment Private ReadOnly _GDPictureKey As String Private ReadOnly _FormCaption As String Private ReadOnly FormHelper As FormHelper Private CurrentNotificationId As Integer Private Property OperationMode As OperationMode Private Client As Client Private Const COL_GUID As String = "GUID" Private Const COL_TITLE As String = "TITLE" Private Const TYPE_MESSAGE = "MESSAGE" Private Const TYPE_FILE = "FILE" Friend Class NotificationItem Public Id As Integer Public Title As String Public MSGSTRING As String Public Overrides Function ToString() As String Return Title End Function End Class Public Sub New(pNotificationsTable As DataTable, pLogConfig As LogConfig, pGDPictureKey As String, pCaption As String, pEnvironment As DigitalData.Modules.ZooFlow.Environment) ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() _NotificationsTable = pNotificationsTable _GDPictureKey = pGDPictureKey _FormCaption = pCaption _Environment = pEnvironment LogConfig = pLogConfig Logger = pLogConfig.GetLogger() FormHelper = New FormHelper(pLogConfig, Me) Try ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. Dim cultureInfo As System.Globalization.CultureInfo cultureInfo = New System.Globalization.CultureInfo(_Environment.User.Language) If Not IsNothing(_Environment.User.DateFormat) Then cultureInfo.DateTimeFormat.ShortDatePattern = _Environment.User.DateFormat End If Thread.CurrentThread.CurrentCulture = cultureInfo Thread.CurrentThread.CurrentUICulture = cultureInfo Catch ex As Exception End Try ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. End Sub Private Sub frmNotification_Startup_Load(sender As Object, e As EventArgs) Handles Me.Load Try DocumentViewer1.Init(LogConfig, _GDPictureKey) OperationMode = GetOperationMode() Client = _Environment.Service.Client Text = _FormCaption lbStatus.Caption = "" If _NotificationsTable.Rows.Count = 1 Then Me.ListBoxControl1.Visible = False Load_Profile(_NotificationsTable.Rows(0).Item(COL_GUID)) Else ListBoxControl1.DataSource = _NotificationsTable ListBoxControl1.ValueMember = COL_GUID ListBoxControl1.DisplayMember = COL_TITLE End If Catch ex As Exception FormHelper.ShowErrorMessage(ex.Message, "Unexpected error loading form") End Try End Sub Sub Load_Profile(oIndex As Integer) Try DocumentViewer1.Visible = False RichEditControl1.Visible = False Dim oType As String, oMessage As String, oMarkasRead As Boolean Dim oRow = _NotificationsTable.AsEnumerable. Where(Function(row) row.Item(COL_GUID) = oIndex). FirstOrDefault() If oRow Is Nothing Then FormHelper.ShowWarningMessage("Notification with Guid [{0}] could not be loaded!", "Unexpected error loading message") Exit Sub End If oType = oRow.Item("DISPLAY_TYPE") oMessage = oRow.Item("MSG_STRING") oMarkasRead = oRow.Item("VALIDATE_READ") CurrentNotificationId = oRow.Item(COL_GUID) 'If _NotificationsTable.Rows.Count = 1 Then ' Dim oRow As DataRow = _NotificationsTable.Rows(0) ' oType = oRow.Item("DISPLAY_TYPE") ' oMSG_STRING = oRow.Item("MSG_STRING") ' oMarkasRead = oRow.Item("VALIDATE_READ") ' CurrentNotificationId = oRow.Item(COL_GUID) 'Else ' Dim oCount As Integer = 0 ' For Each oRow As DataRow In _NotificationsTable.Rows ' If oIndex = oCount Then ' oType = oRow.Item("DISPLAY_TYPE") ' oMSG_STRING = oRow.Item("MSG_STRING") ' oMarkasRead = oRow.Item("VALIDATE_READ") ' CurrentNotificationId = oRow.Item(COL_GUID) ' Exit For ' Else ' oCount += 1 ' End If ' Next 'End If If oType = TYPE_MESSAGE Then RichEditControl1.Text = oMessage RichEditControl1.Visible = True RichEditControl1.Dock = Windows.Forms.DockStyle.Fill BarStaticItemFileInfo.Visibility = DevExpress.XtraBars.BarItemVisibility.Never ElseIf oType = TYPE_FILE Then If IO.File.Exists(oMessage) Then DocumentViewer1.LoadFile(oMessage) DocumentViewer1.Visible = True DocumentViewer1.Dock = Windows.Forms.DockStyle.Fill BarStaticItemFileInfo.Caption = oMessage Else Dim oMsgBox As New frmDialog("File not existing!", "Load Notification File", frmDialog.DialogType.Warning) oMsgBox.ShowDialog() BarStaticItemFileInfo.Caption += " - NOT EXISTING" End If BarStaticItemFileInfo.Visibility = DevExpress.XtraBars.BarItemVisibility.Always End If If oMarkasRead = True Then btnMarkAsRead.Visibility = DevExpress.XtraBars.BarItemVisibility.Always Else btnMarkAsRead.Visibility = DevExpress.XtraBars.BarItemVisibility.Never End If Catch ex As Exception FormHelper.ShowErrorMessage(ex.Message, "Unexpected error loading message") End Try End Sub Private Sub ListBoxControl1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBoxControl1.SelectedValueChanged If ListBoxControl1.SelectedItem Is Nothing Then Exit Sub End If Try Dim oRowView As DataRowView = ListBoxControl1.SelectedItem Dim oGuid = oRowView.Row.Item(COL_GUID) Load_Profile(oGuid) Catch ex As Exception FormHelper.ShowErrorMessage(ex.Message, "Unexpected error switching notifications") End Try End Sub Private Sub BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnCloseForm.ItemClick Me.Close() End Sub Private Sub btnMarkAsRead_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnMarkAsRead.ItemClick Try Dim oSuccess As Boolean = True Dim oSQL = $"INSERT INTO [dbo].[TBDD_NOTIFICATIONS_USER_HISTORY] ([NOTIFY_ID], [USR_ID]) VALUES ({CurrentNotificationId} ,{_Environment.User.UserId})" If OperationMode = OperationMode.ZooFlow Or OperationMode = OperationMode.WithAppServer Then Dim oResponse = Client.ExecuteNonQueryFromECM(oSQL) oSuccess = oResponse.OK Else oSuccess = _Environment.Database.ExecuteNonQuery(oSQL) End If If oSuccess = False Then lbStatus.Caption = "Error while setting History!" lbStatus.ItemAppearance.Normal.BackColor = Color.Red Else lbStatus.Caption = "History successfully saved!" lbStatus.ItemAppearance.Normal.BackColor = Color.Green If _NotificationsTable.Rows.Count = 1 Then Me.Close() End If End If Catch ex As Exception FormHelper.ShowErrorMessage(ex.Message, "Unexpected error writing history") End Try End Sub Private Function GetOperationMode() As OperationMode Dim oOperationMode As OperationMode If _Environment.Service.Client?.IsOnline AndAlso _Environment.Service.Address <> String.Empty Then oOperationMode = OperationMode.WithAppServer Else oOperationMode = OperationMode.NoAppServer End If Return oOperationMode End Function End Class